PFN_WSK_DISCONNECT_EVENT コールバック関数 (wsk.h)
WskDisconnectEvent イベント コールバック関数は、接続指向ソケット上の接続がリモート アプリケーションによって切断されたことを WSK アプリケーションに通知します。
構文
PFN_WSK_DISCONNECT_EVENT PfnWskDisconnectEvent;
NTSTATUS PfnWskDisconnectEvent(
[in, optional] PVOID SocketContext,
[in] ULONG Flags
)
{...}
パラメーター
[in, optional] SocketContext
切断された接続指向ソケットのソケット コンテキストへのポインター。 WSK アプリケーションは、次のいずれかの方法で WSK サブシステムへのこのポインターを提供しました。
- ソケットを作成するために WskSocket 関数を呼び出しました。
- ソケットを作成するために WskSocketConnect 関数を呼び出しました。
- ソケットを受信接続として受け入れるために 、WskAccept 関数を呼び出しました。
- その WskAcceptEvent イベント コールバック関数は、ソケットを受信接続として受け入れるために呼び出されました。
[in] Flags
次のフラグの組み合わせのビットごとの OR を含む ULONG 値。
WSK_FLAG_ABORTIVE
リモート アプリケーションがソケットの切断を中止しました。 このフラグが設定されていない場合、リモート アプリケーションはソケットの正常な切断を実行しました。
WSK_FLAG_AT_DISPATCH_LEVEL
WSK サブシステムは、IRQL = DISPATCH_LEVELで WskDisconnectEvent イベント コールバック関数を呼び出しました。 このフラグが設定されていない場合、WSK サブシステムは、任意の IRQL <= DISPATCH_LEVELで WskDisconnectEvent イベント コールバック関数を呼び出した可能性があります。
戻り値
WSK アプリケーションの WskDisconnectEvent イベント コールバック関数は、常にSTATUS_SUCCESSを返す必要があります。
注釈
WSK サブシステムは、接続指向ソケットがリモート アプリケーションによって切断されている場合に、イベント コールバック関数が以前に SO_WSK_EVENT_CALLBACK ソケット オプションで有効になっていた場合にのみ、WSK アプリケーションの WskDisconnectEvent イベント コールバック関数を呼び出します。 ソケットのイベント コールバック関数を有効にする方法の詳細については、「イベント コールバック関数 の有効化と無効化」を参照してください。
リモート アプリケーションがソケットの正常な切断を実行した場合、ソケットからそれ以上のデータは受信されません。 ただし、WSK アプリケーションは、ソケットがリモート アプリケーションによって完全に閉じられるか、WSK アプリケーションがソケットで WskDisconnect 関数または WskCloseSocket 関数を呼び出すまで、ソケットにデータを送信できます。
リモート アプリケーションがソケットの切断を中止した場合、ソケットからそれ以上のデータは受信されません。それ以上のデータをソケットに送信することはできません。
WSK サブシステムは、WSK アプリケーションの WskDisconnectEvent イベント コールバック関数を IRQL <= DISPATCH_LEVELで呼び出します。
WSK アプリケーションの WskDisconnectEvent イベント コールバック関数は、WSK 完了関数またはイベント コールバック関数のコンテキストで他の WSK 要求の完了を待つ必要はありません。 コールバックは、他の WSK 要求を開始できますが (DISPATCH_LEVELで時間がかかりすぎないことを前提とします)、IRQL = PASSIVE_LEVEL でコールバックが呼び出された場合でも、その完了を待つ必要はありません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。 |
対象プラットフォーム | Windows |
ヘッダー | wsk.h (Wsk.h を含む) |
IRQL | <= DISPATCH_LEVEL |