重叠/异步I / O如何工作

时间:2011-04-11 11:34:23

标签: c++ asynchronous synchronization readfile

假设我有类似的东西

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

while(1){

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

////

readfile(.....&ol)

}

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

1 个答案:

答案 0 :(得分:1)

在文件上使用重叠I / O时,会将指针传递给OVERLAPPED对象,在本例中为ol

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

因此,例如,如果要在文件的第8个字节处启动ReadFile,则应将Offset变量设置为8,将OffsetHigh变量设置为0将OVERLAPPED传递给ReadFile