次の方法で共有


SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT 制御コード

SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT ソケット I/O 制御操作を使用すると、Winsock クライアントはリダイレクトされた接続のリダイレクト レコードのリダイレクト コンテキストを取得できます。

WFP リダイレクト レコードは、リダイレクトされた接続と元の接続が論理的に関連するように、WFP が送信プロキシ接続に設定する必要がある不透明なデータのバッファーです。

: SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS クエリは、接続が WFP クライアントによって FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 または FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 レイヤーでリダイレクトされた場合にのみ使用できます。

リダイレクトの詳細については、「バインドまたは接続リダイレクトの使用」を参照してください。

リダイレクト レコードのリダイレクト コンテキストに対してクエリを実行するために、Winsock クライアントは次のパラメーターを使用して WskControlSocket 関数を呼び出します。

パラメーター

RequestType

WskIoctl

ControlCode

SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT

Level

0

InputSize

0

InputBuffer

NULL

OutputSize

OutputBuffer パラメーターによって指し示されている構造体の配列のバッファ サイズ (バイト単位)。

OutputBuffer

受け入れられた TCP 接続のリダイレクト レコードのリダイレクト コンテキストを受け取るバッファーへのポインター。 バッファーのサイズは、OutputSize パラメーターで指定します。

OutputSizeReturned

OutputBuffer パラメーターが指すバッファーにコピーされるデータのバイト数を受け取る ULONG 型の変数へのポインター。

Irp

IRP へのポインター。

呼び出し元は、次のいずれかの方法でこのクエリを実行できます。

  • OutputBuffer を約 1 KB (キロバイト)サイズの大きなバッファーに設定できます。 出力バッファー サイズが十分な大きさでない場合、WskControlSocketSTATUS_BUFFER_TOO_SMALL を返し、OutputSizeReturned にはバッファーの必要なサイズが含まれます。 その後、より大きなバッファーを割り当て、SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT 要求と OutputBuffer を大きなバッファーに設定して、WskControlSocket を再度呼び出すことができます。
  • または、OutputSize パラメーターを 0 に設定し、OutputBuffer を NULL に設定し、WskControlSocket を呼び出すことができます。 完了すると、WskControlSocket 関数は OutputSizeReturned パラメーターの出力バッファー サイズをバイト単位で取得します。 より大きなバッファーを割り当て、SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT 要求と OutputBuffer を大きなバッファーに設定して、WskControlSocket を再度呼び出すことができます。

: SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT (SDK) を使用して、ユーザー モード アプリケーションでこのクエリを実行することもできます。

この種類の要求では、Winsock クライアントは IRP へのポインターとその完了ルーチンへのポインターを指定する必要があります。 IRP は、上位のドライバーによってクライアントに渡すことができます。または、クライアントは IRP を割り当てることを選択できます。 完了ルーチンを指定するには、クライアントが IoSetCompletionRoutine を呼び出す必要があります。 詳細については、「Winsock カーネル関数での IRP の使用」を参照してください。

Winsock クライアントは、WSK サブシステムによって IRP が完了するまで、割り当てられたバッファーを解放しないでください。 WSK サブシステムは、IRP を完了すると、完了ルーチンを呼び出してクライアントに通知します。 そのバッファーへの参照は、完了ルーチンの Context パラメーターで WSK サブシステムによってクライアントに渡されます。 バッファーのサイズは Irp->IoStatus.Information に格納されます。

クライアントは、Irp->IoStatus.Status をチェックすることによって IRP の状態を取得できます。 要求が成功した場合、 Irp->IoStatus.StatusSTATUS_SUCCESSに設定されます。 それ以外の場合、呼び出しが成功しなかった場合は、STATUS_INTEGER_OVERFLOWSTATUS_NOT_FOUNDSTATUS_BUFFER_TOO_SMALL、または STATUS_ACCESS_DENIED が含まれます。

要件

サポートされている最小のクライアント

Windows 8

サポートされている最小のサーバー

Windows Server 2012

ヘッダー

Mstcpip.h

IRQL

PASSIVE_LEVEL

関連項目

バインドまたは接続リダイレクトの使用

Winsock カーネル関数での IRP の使用

SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS

SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT (SDK)