コントロール コード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 の大きなバッファーに設定できます。 出力バッファー のサイズが十分に大きくない場合、wskControlSocketは STATUS_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_OVERFLOW、STATUS_NOT_FOUND、STATUS_BUFFER_TOO_SMALL、または STATUS_ACCESS_DENIED が含まれます。
必要条件
サポートされる最小クライアント |
Windows 8 |
サポートされている最小サーバー |
Windows Server 2012 |
ヘッダ |
Mstcpip.h |
IRQL |
PASSIVE_LEVEL |
関連項目
バインドまたは接続リダイレクト を使用した