認爲我有這樣的事情如何重疊/異步I/O工作
readFile(.....&ol) //with overlapped
while(1){
////////.....
waitforsingleobject(//ol.hevent);
////
readfile(.....&ol)
}
我注意到,從文件的開頭......爲什麼閱讀這兩個readfiles?在沒有重疊/不同步的正常讀取文件中,第二個讀取文件將從第一個結束處開始。
認爲我有這樣的事情如何重疊/異步I/O工作
readFile(.....&ol) //with overlapped
while(1){
////////.....
waitforsingleobject(//ol.hevent);
////
readfile(.....&ol)
}
我注意到,從文件的開頭......爲什麼閱讀這兩個readfiles?在沒有重疊/不同步的正常讀取文件中,第二個讀取文件將從第一個結束處開始。
當在文件上使用重疊I/O時,將指針傳遞給OVERLAPPED
對象,在此例中爲ol
。
OVERLAPPED
struct有兩個變量,Offset
和OffsetHigh
。這兩個變量組合成一個64位整數,其中Offset
是低位DWORD,而OffsetHigh
是高位DWORD,並用作執行I/O操作的偏移量。
因此,舉例來說,如果你想在文件的第8個字節開始ReadFile
,你將設置Offset
變量8和傳遞OVERLAPPED
到ReadFile
前OffsetHigh
變量爲0。
作爲一個額外的提示:這只是需要閱讀*文件*。當使用套接字使用異步I/O時,不需要設置此成員。 – 2011-04-11 13:02:34
爲了增加獲得幫助的機會:1.發佈一個完整的可編譯代碼片段來演示行爲。 2.適當標記問題。 – NPE 2011-04-11 11:39:13
http://msdn.microsoft.com/en-us/library/aa365467(VS.85).aspx我建議MSDN是有關Microsoft API函數和參數的問題的參考。 – hplbsh 2011-04-11 14:55:45