SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
// mstcpip.h

#define SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS /* IOCTL code */
View the official Windows hardware development documentation

NtDoc

No description available.

Windows hardware development documentation (sio-query-wfp-connection-redirect-records)

SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS control code

The SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS socket I/O control operation allows a Winsock client to retrieve the redirect record for a redirected connection.

A WFP redirect record is a buffer of opaque data that WFP must set on an outbound proxy connection so that the redirected connection and the original connection are logically related.

Note The SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS query can only be used if the connection was redirected at the FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 or FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 layer by a WFP client.

For more information about redirection, see Using Bind or Connect Redirection.

To query the redirect record for the redirected connection, a Winsock client calls the WskControlSocket function with the following parameters.

Parameter Value
RequestType WskIoctl
ControlCode SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS
Level 0
InputSize 0
InputBuffer NULL
OutputSize The size, in bytes, of the buffer that is pointed to by the OutputBuffer parameter.
OutputBuffer A pointer to the buffer that receives the redirect record for the accepted TCP connection. The size of the buffer is specified in the OutputSize parameter.
OutputSizeReturned A pointer to a ULONG-typed variable that receives the number of bytes of data that is copied into the buffer that is pointed to by the OutputBuffer parameter.
Irp A pointer to an IRP.

The caller can perform this query in either of the following ways:

Note It is also possible to perform this query in a user-mode application by using SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS (SDK).

For this type of request, the Winsock client must specify a pointer to an IRP and a pointer to its completion routine. The IRP can be passed to the client by a higher driver or the client can choose to allocate the IRP. To specify the completion routine, the client must call IoSetCompletionRoutine. For more details, see Using IRPs with Winsock Kernel Functions.

The Winsock client must not free the allocated buffer till the IRP is completed by WSK subsystem. When the WSK subsystem completes the IRP, it notifies the client by invoking the completion routine. A reference to that buffer is passed to the client by the WSK subsystem in the Context parameter of the completion routine. The size of the buffer is stored in Irp->IoStatus.Information.

The client can get the status of the IRP by checking Irp->IoStatus.Status. Irp->IoStatus.Status will be set to STATUS_SUCCESS if the request is successful. Otherwise, it will contain STATUS_INTEGER_OVERFLOW, STATUS_NOT_FOUND, STATUS_BUFFER_TOO_SMALL, or STATUS_ACCESS_DENIED if the call is not successful.

Requirements

Minimum supported client Windows 8
Minimum supported server Windows Server 2012
Header Mstcpip.h
IRQL PASSIVE_LEVEL

See also

Using Bind or Connect Redirection

Using IRPs with Winsock Kernel Functions

SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT

SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS (SDK)

SIO_SET_WFP_CONNECTION_REDIRECT_RECORDS