SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS控制項程式碼
SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS通訊端 I/O 控制作業可讓 Winsock 用戶端擷取重新導向連線的重新導向記錄。
一個是一種不透明資料的緩衝區,在輸出 Proxy 連線上必須設定一個不透明資料,以便重新導向的連線和原始連接以邏輯方式相關。
注意只有在連線重新導向至FWPS_LAYER_ALE_CONNECT_REDIRECT_V4或FWPS_LAYER_ALE_CONNECT_REDIRECT_V6層時,才能使用SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS查詢。
如需重新導向的詳細資訊,請參閱 使用系結或連線重新導向。
若要查詢重新導向連線的重新導向記錄,Winsock 用戶端會使用下列參數呼叫 WskControlSocket 函式。
參數 | 值 |
---|---|
RequestType |
WskIoctl |
ControlCode |
SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS |
Level |
0 |
InputSize |
0 |
InputBuffer |
NULL |
OutputSize |
OutputBuffer參數所指向緩衝區的大小,以位元組為單位。 |
OutputBuffer |
緩衝區的指標,接收已接受 TCP 連線的重新導向記錄。 緩衝區的大小是在 OutputSize 參數中指定。 |
OutputSizeReturned |
ULONG型別變數的指標,可接收復制到OutputBuffer參數所指向之緩衝區的資料位元組數目。 |
Irp |
IRP 的指標。 |
呼叫端可以使用下列其中一種方式來執行此查詢:
- 它可以將 OutputBuffer 設定為大小約 1 KB 的大型緩衝區。 如果輸出緩衝區大小不夠大, WskControlSocket 會傳回 STATUS_BUFFER_TOO_SMALL , 且 OutputSizeReturned 將包含所需的緩衝區大小。 接著可以配置較大的緩衝區,並再次呼叫 WskControlSocket ,並將 SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS 要求和 OutputBuffer 設定為較大的緩衝區。
- 或者可以將 OutputSize 參數設定為 0,並將 OutputBuffer 設定為 Null,然後呼叫 WskControlSocket。 完成時, WskControlSocket 函式會擷取 OutputSizeReturned 參數中的輸出緩衝區大小,以位元組為單位。 然後可以配置適當大小的緩衝區,並再次呼叫 WskControlSocket ,並將 SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS 要求和 OutputBuffer 設定為緩衝區。
注意 您也可以使用 SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS (SDK) ,在使用者模式應用程式中執行此查詢。
針對這種類型的要求,Winsock 用戶端必須指定 IRP 的指標,以及其完成常式的指標。 IRP 可由較高的驅動程式傳遞至用戶端,或者用戶端可以選擇配置 IRP。 若要指定完成常式,用戶端必須呼叫 IoSetCompletionRoutine。 如需詳細資訊,請參閱 搭配 Winsock 核心函式使用 IRP。
在 WSK 子系統完成 IRP 之前,Winsock 用戶端不得釋放配置的緩衝區。 當 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 |
另請參閱
SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT