WSACancelAsyncRequest 関数 (winsock.h)
WSACancelAsyncRequest 関数は、不完全な非同期操作を取り消します。
構文
int WSACancelAsyncRequest(
[in] HANDLE hAsyncTaskHandle
);
パラメーター
[in] hAsyncTaskHandle
取り消す非同期操作を指定するハンドル。
戻り値
操作が正常に取り消された場合、 WSACancelAsyncRequest によって返される値は 0 です。 それ以外の場合は、SOCKET_ERROR値が返され、 WSAGetLastError を呼び出すことによって特定のエラー番号を取得できます。
エラー コード | 意味 |
---|---|
この関数を使用する前に、 WSAStartup 呼び出しが正常に行われる必要があります。 | |
ネットワーク サブシステムが失敗しました。 | |
指定した非同期タスク ハンドルが無効であることを示します。 | |
ブロックしている Windows Sockets 1.1 呼び出しが進行中であるか、サービス プロバイダーがコールバック関数を処理しています。 | |
取り消される非同期ルーチンは既に完了しています。 |
メモ アプリケーションが WSAEINVAL と WSAEALREADY を有効に区別できるかどうかは不明です。どちらの場合も、エラーは示されたハンドルで進行中の非同期操作がないことを示しているためです。 (単純な例外: 0 は常に無効な非同期タスク ハンドルです)。Windows ソケット仕様では、準拠している Windows ソケット プロバイダーが 2 つのケースを区別する方法は規定されていません。 移植性を最大限に高めるには、Windows ソケット アプリケーションで 2 つのエラーを同等として扱う必要があります。
注釈
WSACancelAsyncRequest 関数は、WSAAsyncGetHostByName などの WSAAsyncGetXByY 関数のいずれかによって開始された非同期操作を取り消すために使用されます。 取り消される操作は hAsyncTaskHandle パラメーターによって識別されます。これは、開始側 の WSAAsyncGetXByY 関数によって返される非同期タスク ハンドルに設定する必要があります。
既存の非同期 WSAAsyncGetXByY 操作を取り消そうとすると、2 つの理由で WSAEALREADY のエラー コードで失敗する可能性があります。 最初に、元の操作が既に完了し、アプリケーションが結果のメッセージを処理しました。 次に、元の操作は既に完了していますが、結果のメッセージはアプリケーション ウィンドウ キューで待機しています。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winsock.h (Winsock2.h を含む) |
Library | Ws2_32.lib |
[DLL] | Ws2_32.dll |