WinInet API的一些陷阱

1、雖然MSDN說InternetQueryDataAvailable、InternetReadFile這兩個API是同步的,但實際上這兩個API也可以異步調用。當調用這兩函數時,如果返回FALSE,且GetLastError返回ERROR_IO_PENDING,那麼表示這是一個異步調用。對於異步調用可以採用事件進行同步。當WaitForSingleObject返回時,數據已經拷貝到我們的緩衝區了,切記。。。

2、正如幫助文檔所言,InternetQueryDataAvailable是不可靠的。因爲這個API將響應頭的"Content-Length" 認爲文件的長度,但是“ Content-Length”是不準的。所以儘量少使用這個API。

3、在異步調用下,必須在這兩個API的調用前,進行一次WaitForSingleObject,否則後果無法想象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章