2011-05-13 71 views
1

任何人都可以請建議一個可靠的方式來處理系統錯誤的情況下使用重疊套接字IO和IOCP?錯誤處理重疊套接字IO

MSDN描述在這方面很麻煩。它說,對於GetQueuedCompletionStatus返回代碼FALSE,應該有一個後續的GetLastError調用來獲取失敗操作的錯誤代碼。但是,我們知道,對於WSA功能,應該調用WSAGetLastErrorGetLastError在套接字錯誤時返回0)。所以問題的第一部分是 - 它在實踐中如何工作?

另一個問題是如果完成數據包是由GetQueuedCompletionStatusEx提取的,則處理錯誤。 MSDN只描述了這個調用本身的錯誤處理,並沒有說明如何獲得單個失敗操作的錯誤代碼。

在此先感謝您的所有回覆和評論。

回答

1

試驗,並用放大鏡我發現下面的MSDN學習幾個小時後:

http://msdn.microsoft.com/en-us/library/ms684342%28v=VS.85%29.aspx(一相重疊結構的文章中,Internal場的描述):

錯誤代碼爲I/O請求。發出請求時,系統將此成員設置爲STATUS_PENDING,以指示該操作尚未開始。當請求完成時,系統將此成員設置爲已完成請求的錯誤代碼。

內部成員最初保留給系統使用,其行爲可能會改變。

最後一個短語看起來不太好,但我想它就是這樣。