2010-02-12 52 views
1

當我使用OVERLAPPED結構調用ConnectNamedPipe並事後檢查GetLastError時,我經常會看到GetLastError返回ERROR_SUCCESS。我正在閱讀documentation的方式,這絕不應該發生。我的理解是,如果客戶端已經連接,應該設置ERROR_PIPE_CONNECTED,而不是ERROR_SUCCESS。GetLastError在調用ConnectNamedPipe後返回ERROR_SUCCESS

有沒有其他人看到過這個?操作系統是32位Windows 7.

回答

0

這是OVERLAPPED的典型特徵。它告訴連接之前參數是否正常,假設一個異步套接字。一旦連接完成或失敗,GetOverlappedResult()將返回正確的狀態。所以我想這是一個小文檔錯誤。

+0

因此,澄清,如果GetLastError()在ConnectNamedPipe()後返回ERROR_SUCCESS,我應該將其視爲ERROR_IO_PENDING並調用GetOverlappedResult()? – Ray 2010-02-12 05:15:16

+0

種類。這並不意味着I/O正在等待。例如,如果IP地址不正確,它可能會失敗。所以I/O沒有掛起。它還沒有發生。 – wallyk 2010-02-12 05:36:29

0

嘗試在ConnectNamedPipe後立即調用GetLastError()。 不要在兩者之間調用任何API。

相關問題