Freigeben über


SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT Steuerungscode

Der SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT Socket-E/A-Steuerungsvorgang ermöglicht es einem Winsock-Client, den Umleitungskontext für einen Umleitungsdatensatz für eine umgeleitete Verbindung abzurufen.

Ein WFP-Umleitungsdatensatz ist ein Puffer von undurchsichtigen Daten, den WFP für eine ausgehende Proxyverbindung festlegen muss, damit die umgeleitete Verbindung und die ursprüngliche Verbindung logisch miteinander verknüpft sind.

Hinweis Die SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS-Abfrage kann nur verwendet werden, wenn die Verbindung auf der FWPS_LAYER_ALE_CONNECT_REDIRECT_V4- oder FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 ebene von einem WFP-Client umgeleitet wurde.

Weitere Informationen zur Umleitung finden Sie unter Using Bind or Connect Redirection.For more information about redirection, see Using Bind or Connect Redirection.

Um den Umleitungskontext für einen Umleitungsdatensatz abzufragen, ruft ein Winsock-Client die WskControlSocket-Funktion mit den folgenden Parametern auf.

Parameter Wert

Requesttype

WskIoctl

ControlCode

SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT

Level

0

InputSize

0

Inputbuffer

NULL

OutputSize

Die Größe des Puffers in Bytes, auf den der OutputBuffer-Parameter verweist.

OutputBuffer

Ein Zeiger auf den Puffer, der den Umleitungskontext für den Umleitungsdatensatz für die akzeptierte TCP-Verbindung empfängt. Die Größe des Puffers wird im OutputSize-Parameter angegeben.

OutputSizeReturned

Ein Zeiger auf eine Variable vom Typ ULONG, die die Anzahl der Byte von Daten empfängt, die in den Puffer kopiert werden, auf den der OutputBuffer-Parameter verweist.

Irp

Ein Zeiger auf eine IRP.

Der Aufrufer kann diese Abfrage auf eine der folgenden Arten ausführen:

  • Der OutputBuffer kann auf einen großen Puffer von ungefähr 1 KB festgelegt werden. Wenn die Größe des Ausgabepuffers nicht groß genug ist, gibt WskControlSocketSTATUS_BUFFER_TOO_SMALL zurück, und OutputSizeReturned enthält die erforderliche Größe des Puffers. Anschließend kann ein größerer Puffer zugeordnet und WskControlSocket erneut aufgerufen werden, wobei die SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT-Anforderung und OutputBuffer auf den größeren Puffer festgelegt sind.
  • Oder er kann den OutputSize-Parameter auf 0 und den OutputBuffer auf NULL festlegen und dann WskControlSocket aufrufen. Nach Abschluss ruft die WskControlSocket-Funktion die Ausgabepuffergröße in Bytes im OutputSizeReturned-Parameter ab. Anschließend kann ein Puffer mit entsprechender Größe zugeordnet und WskControlSocket erneut aufgerufen werden, wobei die SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT-Anforderung und OutputBuffer auf den Puffer festgelegt sind.

Hinweis Es ist auch möglich, diese Abfrage in einer Anwendung im Benutzermodus mit SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT (SDK) auszuführen.

Für diesen Anforderungstyp muss der Winsock-Client einen Zeiger auf ein IRP und einen Zeiger auf seine Vervollständigungsroutine angeben. Das IRP kann von einem höheren Treiber an den Client übergeben werden, oder der Client kann die IRP zuordnen. Um die Vervollständigungsroutine anzugeben, muss der Client IoSetCompletionRoutine aufrufen. Weitere Informationen finden Sie unter Verwenden von IRPs mit Winsock-Kernelfunktionen.

Der Winsock-Client darf den zugeordneten Puffer erst freigeben, wenn der IRP vom WSK-Subsystem abgeschlossen wird. Wenn das WSK-Subsystem das IRP abgeschlossen hat, benachrichtigt es den Client durch Aufrufen der Vervollständigungsroutine. Ein Verweis auf diesen Puffer wird vom WSK-Subsystem im Context-Parameter der Vervollständigungsroutine an den Client übergeben. Die Größe des Puffers wird in Irp-IoStatus.Information> gespeichert.

Der Client kann die status des IRP abrufen, indem er Irp-IoStatus.Status> überprüft. Irp-> IoStatus.Status wird auf STATUS_SUCCESS festgelegt, wenn die Anforderung erfolgreich ist. Andernfalls enthält sie STATUS_INTEGER_OVERFLOW, STATUS_NOT_FOUND, STATUS_BUFFER_TOO_SMALL oder STATUS_ACCESS_DENIED , wenn der Aufruf nicht erfolgreich ist.

Anforderungen

Unterstützte Mindestversion (Client)

Windows 8

Unterstützte Mindestversion (Server)

Windows Server 2012

Header

Mstcpip.h

IRQL

PASSIVE_LEVEL

Weitere Informationen

Verwenden von Binden oder Verbinden der Umleitung

Verwenden von IRPs mit Winsock-Kernelfunktionen

SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS

SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT (SDK)