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

こちらもご覧ください

WSK_CLIENT_CONNECTION_DISPATCH

WskAccept

WskAcceptEvent

WskCloseSocket

WskConnect

WskControlSocket

WskDisconnect

WskSocket

WskSocketConnect