WSACancelAsyncRequest 函式 (winsock.h)

WSACancelAsyncRequest 函式會取消不完整的異步操作。

語法

int WSACancelAsyncRequest(
  [in] HANDLE hAsyncTaskHandle
);

參數

[in] hAsyncTaskHandle

句柄,指定要取消的異步操作。

傳回值

如果已成功取消作業, WSACancelAsyncRequest 所傳回的值會是零。 否則,會傳回SOCKET_ERROR值,並呼叫 WSAGetLastError 來擷取特定的錯誤號碼。

錯誤碼 意義
WSANOTINITIALISED
使用這個函式之前,必須先進行成功的 WSAStartup 呼叫。
WSAENETDOWN
網路子系統失敗。
WSAEINVAL
表示指定的異步工作句柄無效。
WSAEINPROGRESS
封鎖的 Windows Sockets 1.1 呼叫正在進行中,或服務提供者仍在處理回呼函式。
WSAEALREADY
正在取消的異步例程已經完成。
 
注意 不清楚應用程式是否可以實用地區別 WSAEINVALWSAEALREADY,因為在這兩種情況下,錯誤都表示沒有異步操作正在進行中指示句柄。 (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

另請參閱

WSAAsyncGetHostByAddr

WSAAsyncGetHostByName

WSAAsyncGetProtoByName

WSAAsyncGetProtoByNumber

WSAAsyncGetServByName

WSAAsyncGetServByPort

Winsock 函式

Winsock 參考