2011-04-11 69 views
0

認爲我有這樣的事情如何重疊/異步I/O工作

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

while(1){ 

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

//// 

readfile(.....&ol) 

} 

我注意到,從文件的開頭......爲什麼閱讀這兩個readfiles?在沒有重疊/不同步的正常讀取文件中,第二個讀取文件將從第一個結束處開始。

+1

爲了增加獲得幫助的機會:1.發佈一個完整的可編譯代碼片段來演示行爲。 2.適當標記問題。 – NPE 2011-04-11 11:39:13

+0

http://msdn.microsoft.com/en-us/library/aa365467(VS.85).aspx我建議MSDN是有關Microsoft API函數和參數的問題的參考。 – hplbsh 2011-04-11 14:55:45

回答

1

當在文件上使用重疊I/O時,將指針傳遞給OVERLAPPED對象,在此例中爲ol

OVERLAPPED struct有兩個變量,OffsetOffsetHigh。這兩個變量組合成一個64位整數,其中Offset是低位DWORD,而OffsetHigh是高位DWORD,並用作執行I/O操作的偏移量。

因此,舉例來說,如果你想在文件的第8個字節開始ReadFile,你將設置Offset變量8和傳遞OVERLAPPEDReadFileOffsetHigh變量爲0。

+0

作爲一個額外的提示:這只是需要閱讀*文件*。當使用套接字使用異步I/O時,不需要設置此成員。 – 2011-04-11 13:02:34