次の方法で共有


PFN_WSK_INSPECT_COMPLETE コールバック関数 (wsk.h)

WskInspectComplete 関数は、条件付き受け入れモードが有効になっているリッスン ソケットで受信された、以前にペンドされた受信接続要求の検査を完了します。

構文

PFN_WSK_INSPECT_COMPLETE PfnWskInspectComplete;

NTSTATUS PfnWskInspectComplete(
  [in]      PWSK_SOCKET ListenSocket,
  [in]      PWSK_INSPECT_ID InspectID,
  [in]      WSK_INSPECT_ACTION Action,
  [in, out] PIRP Irp
)
{...}

パラメーター

[in] ListenSocket

WSK_SOCKET 構造体へのポインター。 このポインターは、WSK アプリケーションが検査中の受信接続要求を受信したリッスン ソケットを指定します。

[in] InspectID

WSK_INSPECT_ID 構造体へのポインター。 構造体の内容は、WSK アプリケーションが検査している特定の接続要求を識別します。

[in] Action

WSK アプリケーションが受信接続要求を受け入れるか拒否するかを指定する値。 WSK アプリケーションでは、WskInspectAccept 指定するか、このパラメーターに WskInspectReject する必要があります。

[in, out] Irp

WSK サブシステムが再開操作を非同期的に完了するために使用する、呼び出し元によって割り当てられた IRP へのポインター。 WSK 関数で IRP を使用する方法の詳細については、「Winsock カーネル関数での IRP の使用」を参照してください。

戻り値

WskInspectComplete は、次のいずれかの NTSTATUS コードを返します。

リターン コード 形容
STATUS_SUCCESS
以前にペンドされた検査操作が正常に再開されました。 IRP は成功状態で完了します。
STATUS_PENDING
WSK サブシステムは、検査操作を直ちに再開できませんでした。 WSK サブシステムは、受信接続要求の検査操作を再開した後、IRP を完了します。 検査操作の再開の状態は、IRP の IoStatus.Status フィールドに返されます。
STATUS_FILE_FORCED_CLOSED
ソケットは機能しなくなりました。 IRP は失敗状態で完了します。 WSK アプリケーションは、WskCloseSocket 関数を呼び出して、できるだけ早くソケットを閉じる必要があります。
その他の状態コードの
エラーが発生しました。 IRP は失敗状態で完了します。

備考

WSK アプリケーションは、WskInspectComplete 関数を呼び出して、アプリケーションの WskInspectEvent イベント コールバック関数が以前に WskInspectPend 返した受信接続要求の検査を完了します。

WSK アプリケーションは、条件付き受け入れモードが有効になっているリッスン ソケットでのみ、WskInspectComplete 関数を呼び出すことができます。 WSK アプリケーションでは、SO_CONDITIONAL_ACCEPT ソケット オプションを有効にすることで、リッスン ソケットで条件付き受け入れモードを有効にすることができます。 受信接続を条件付きで受け入れる方法の詳細については、「受信接続のリッスンと受け入れ」を参照してください。

WSK サブシステムは、アプリケーションの WskInspectEvent イベント コールバック関数を呼び出したときに、WSK アプリケーションに WSK_INSPECT_ID 構造体へのポインターを渡しました。 WSK アプリケーションは、WskInspectEvent イベント コールバック関数から wskInspectPend 返す前に、その構造体の内容を独自のWSK_INSPECT_ID構造体にコピーしました。 WSK アプリケーションは、WskInspectComplete 関数を呼び出すときに、InspectID パラメーター内の独自のWSK_INSPECT_ID構造体へのポインターを渡します。

WSK アプリケーションが Action パラメーター WskInspectAccept を指定した場合、WSK サブシステムはソケット接続を確立し続けます。 WSK サブシステムは、WSK アプリケーションによる WskAccept 関数への呼び出しを完了するか、WSK アプリケーションの WskAcceptEvent イベント コールバック関数が有効になっている場合に呼び出すことによって、ソケットを WSK アプリケーションに返します。 ソケット接続が完全に確立される前に受信接続要求が削除された場合、WSK サブシステムは WSK アプリケーションの WskAbortEvent イベント コールバック関数を呼び出します。

WSK アプリケーションが Action パラメーター WskInspectReject を指定した場合、受信接続要求は破棄され、ソケット接続は確立されません。

WSK アプリケーションが WskInspectComplete 関数を呼び出す前に、受信接続要求がリモート システムによって削除された場合、WSK サブシステムは WSK アプリケーションの WskAbortEvent イベント コールバック関数を呼び出します。

中止された受信接続要求で WSK アプリケーションが WskInspectComplete 関数を呼び出した場合、WSK アプリケーションが Action パラメーターで WskInspectAccept 指定した場合でも、接続は確立されません。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。
ターゲット プラットフォーム 万国
ヘッダー wsk.h (Wsk.h を含む)
IRQL <= DISPATCH_LEVEL

関連項目

SO_CONDITIONAL_ACCEPT

WSK_INSPECT_ID

WSK_PROVIDER_LISTEN_DISPATCH

WSK_SOCKET

WskAbortEvent

WskAccept

WskAcceptEvent

WskInspectEvent