WSACancelAsyncRequest 函式 (winsock2.h)
WSACancelAsyncRequest 函式會取消不完整的異步操作。
語法
int WSAAPI WSACancelAsyncRequest(
[in] HANDLE hAsyncTaskHandle
);
參數
[in] hAsyncTaskHandle
句柄,指定要取消的異步操作。
傳回值
如果作業成功取消, WSACancelAsyncRequest 所傳回的值會是零。 否則,會傳回SOCKET_ERROR值,而且可以呼叫 WSAGetLastError 來擷取特定的錯誤號碼。
錯誤碼 | 意義 |
---|---|
使用此函式之前,必須先進行成功的 WSAStartup 呼叫。 | |
網路子系統失敗。 | |
表示指定的異步工作句柄無效。 | |
封鎖的 Windows Sockets 1.1 呼叫正在進行中,或者服務提供者仍在處理回呼函式。 | |
正在取消的異步例程已經完成。 |
注意 不清楚應用程式是否可以在 WSAEINVAL 和 WSAEALREADY 之間有用地區別,因為在這兩種情況下,錯誤都表示在進行中沒有使用指定的句柄進行異步操作。 (Trivial 例外狀況:零一律是無效的異步工作句柄。) Windows Sockets 規格不會指定符合規範的 Windows Sockets 提供者應該如何區分這兩種情況。 為了達到最大可移植性,Windows Sockets 應用程式應該將兩個錯誤視為對等。
備註
WSACancelAsyncRequest 函式可用來取消其中一個 WSAAsyncGetXByY 函式所起始的異步操作,例如 WSAAsyncGetHostByName。 要取消的作業是由 hAsyncTaskHandle 參數所識別,該參數應該設定為起始 WSAAsyncGetXByY 函式所傳回的異步工作句柄。
嘗試取消現有的異步 WSAAsyncGetXByY 作業可能會失敗,因為有兩個原因, WSAEALREADY 的錯誤碼。 首先,原始作業已經完成,而且應用程式已處理結果訊息。 其次,原始作業已經完成,但結果訊息仍在應用程式視窗佇列中等候。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winsock2.h (包括 Winsock2.h) |
程式庫 | Ws2_32.lib |
Dll | Ws2_32.dll |