次の方法で共有


コントロール コード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

レベルの

0

InputSize

0

InputBuffer

ヌル

OutputSize

OutputBuffer パラメーターによって指されるバッファーのサイズ (バイト単位)。

OutputBuffer

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

OutputSizeReturned

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

Irp

IRP へのポインター。

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

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

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.Status は、要求が成功した場合に STATUS_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)