假设我有类似的东西
readFile(.....&ol) //with overlapped
while(1){
////////.....
waitforsingleobject(//ol.hevent);
////
readfile(.....&ol)
}
我注意到两个readfiles都是从文件的开头读取的......为什么?在没有重叠/异步的普通读取文件中,第二个读取文件将从第一个读取文件开始。
答案 0 :(得分:1)
在文件上使用重叠I / O时,会将指针传递给OVERLAPPED
对象,在本例中为ol
。
OVERLAPPED
结构有两个变量,Offset
和OffsetHigh
。这两个变量组合成一个64位整数,Offset
是低阶DWORD,OffsetHigh
是高阶DWORD,并用作执行I / O操作的偏移量。
因此,例如,如果要在文件的第8个字节处启动ReadFile
,则应将Offset
变量设置为8,将OffsetHigh
变量设置为0将OVERLAPPED
传递给ReadFile
。