SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS控制代码
SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS 套接字 I/O 控制作允许 Winsock 客户端检索重定向连接的重定向记录。
WFP 重定向记录是在出站代理连接上必须设置的不透明数据的缓冲区,以便重定向的连接和原始连接在逻辑上相关。
注释 仅当连接重定向到 FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 层或由 WFP 客户端 FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 层时,才能使用 SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS 查询。
有关重定向的详细信息,请参阅 使用绑定或连接重定向。
若要查询重定向连接的重定向记录,Winsock 客户端使用以下参数调用 WskControlSocket 函数。
参数 | 价值 |
---|---|
RequestType |
WskIoctl |
ControlCode |
SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS |
级别 |
0 |
InputSize |
0 |
InputBuffer |
零 |
OutputSize |
OutputBuffer 参数指向的缓冲区的大小(以字节为单位)。 |
OutputBuffer |
指向接收接受 TCP 连接的重定向记录的缓冲区的指针。 缓冲区的大小在 OutputSize 参数中指定。 |
OutputSizeReturned |
指向 ULONG类型变量的指针,该变量接收 OutputBuffer 参数指向的缓冲区中复制的数据字节数。 |
Irp |
指向 IRP 的指针。 |
调用方可以通过以下任一方式执行此查询:
- 它可以将 OutputBuffer 设置为大小约为 1 KB 的大型缓冲区。 如果输出缓冲区大小不够大,WskControlSocket 将返回 STATUS_BUFFER_TOO_SMALL,OutputSizeReturned 将包含所需的缓冲区大小。 然后,可以使用 SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS 请求重新调用 WskControlSocket 并 分配更大的缓冲区,OutputBuffer 设置为较大的缓冲区。
- 或者,它可以将 OutputSize 参数设置为 0,将 OutputBuffer 设置为 NULL,然后调用 WskControlSocket。 完成后,WskControlSocket 函数检索 OutputSizeReturned 参数中的输出缓冲区大小(以字节为单位)。 然后,可以使用 SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS 请求再次调用 WskControlSocket 并调用适当大小的缓冲区,并将 outputBuffer 设置为缓冲区。
注意 也可以使用 SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS (SDK)在用户模式应用程序中执行此查询。
对于这种类型的请求,Winsock 客户端必须指定指向 IRP 的指针和指向其完成例程的指针。 IRP 可以通过更高的驱动程序传递给客户端,或者客户端可以选择分配 IRP。 若要指定完成例程,客户端必须调用 IoSetCompletionRoutine。 有关详细信息,请参阅 将 IRP 与 Winsock 内核函数配合使用。
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 |
另请参阅
SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT