C++ 重叠/异步I/O是如何工作的

C++ 重叠/异步I/O是如何工作的,c++,asynchronous,synchronization,readfile,C++,Asynchronous,Synchronization,Readfile,我应该有这样的东西吗 readFile(.....&ol) //with overlapped while(1){ ////////..... waitforsingleobject(//ol.hevent); //// readfile(.....&ol) } 我注意到两个readfile都是从文件的开头读取的…为什么?在没有重叠/异步化的普通读取文件中,第二个读取文件将从第一个读取文件结束的地方开始。在文件上使用重叠I/O时,您会传递一个指向重叠对象的指针,在本例

我应该有这样的东西吗

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

while(1){

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

////

readfile(.....&ol)

}

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

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

OVERLAPPED
结构有两个变量,
Offset
OffsetHigh
。这两个变量组合成一个64位整数,
Offset
为低阶DWORD,
OffsetHigh
为高阶DWORD,并用作偏移量,以在以下位置执行I/O操作


因此,例如,如果您想在文件的第8个字节处启动一个
ReadFile
,您可以将
Offset
变量设置为8,将
OffsetHigh
变量设置为0,然后再将
OVERLAPPED
传递给
ReadFile

,以增加获得帮助的机会:1。发布一个完整的可编译代码片段来演示该行为。2.适当地标记问题。我建议MSDN是有关Microsoft API函数和参数的问题的参考。作为额外提示:这仅用于读取文件。对套接字使用异步I/O时,无需设置此成员。