WSACancelAsyncRequest 函式 (winsock.h)
WSACancelAsyncRequest 函式會取消不完整的異步操作。
語法
int 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 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | winsock.h (包含 Winsock2.h) |
程式庫 | Ws2_32.lib |
Dll | Ws2_32.dll |