0

假设我有这样的东西

readFile(.....&ol) //with overlapped

while(1){

////////.....
waitforsingleobject(//ol.hevent);

////

readfile(.....&ol)

}

我注意到两个读取文件都是从文件的开头读取的……为什么?在没有重叠/异步的普通读取文件中,第二个读取文件将从第一个结束的地方开始。

4

1 回答 1

1

在文件上使用重叠 I/O 时,您传递一个指向OVERLAPPED对象的指针,在本例中为ol.

OVERLAPPED结构有两个变量,OffsetOffsetHigh。这两个变量组合成一个 64 位整数,Offset分别是低位 DWORD 和OffsetHigh高位 DWORD,用作执行 I/O 操作的偏移量。

因此,例如,如果您想从ReadFile文件的第 8 个字节开始 a ,您可以在传递to之前将变量设置Offset为 8 并将OffsetHigh变量设置为 0 。OVERLAPPEDReadFile

于 2011-04-11T12:58:38.437 回答