SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS Steuerelementcode
Mit dem SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS Socket-E/A-Steuerungsvorgang kann ein Winsock-Client den Umleitungsdatensatz für eine umgeleitete Verbindung abrufen.
Ein WFP-Umleitungsdatensatz ist ein Puffer undurchsichtiger Daten, die WFP für eine ausgehende Proxyverbindung festlegen muss, sodass 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 von einem WFP-Client auf der FWPS_LAYER_ALE_CONNECT_REDIRECT_V4- oder FWPS_LAYER_ALE_CONNECT_REDIRECT_V6-Ebene umgeleitet wurde.
Weitere Informationen zur Umleitung finden Sie unter Using Bind or Connect Redirection.
Um den Umleitungsdatensatz für die umgeleitete Verbindung abzufragen, ruft ein Winsock-Client die WskControlSocket--Funktion mit den folgenden Parametern auf.
Parameter | Wert |
---|---|
RequestType- |
WskIoctl |
ControlCode- |
SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS |
Level- |
0 |
InputSize- |
0 |
InputBuffer- |
NULL |
OutputSize- |
Die Größe des Puffers in Byte, auf den der OutputBuffer-Parameter verweist. |
OutputBuffer- |
Ein Zeiger auf den Puffer, der den Umleitungsdatensatz für die akzeptierte TCP-Verbindung empfängt. Die Größe des Puffers wird im parameter OutputSize angegeben. |
OutputSizeReturned |
Ein Zeiger auf eine ULONG-variable-typed, die die Anzahl der Daten empfängt, die in den Puffer kopiert werden, auf den der OutputBuffer-Parameter verweist. |
Irp |
Ein Zeiger auf ein IRP. |
Der Aufrufer kann diese Abfrage auf eine der folgenden Arten ausführen:
- Sie kann den OutputBuffer- auf einen großen Puffer von ca. 1 KB festlegen. Wenn die Ausgabepuffergröße nicht groß genug ist, gibt WskControlSocket- eine STATUS_BUFFER_TOO_SMALL zurück, und OutputSizeReturned die erforderliche Größe des Puffers enthält. Anschließend kann ein größerer Puffer zugewiesen und WskControlSocket erneut aufgerufen, wobei die anforderung SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS und OutputBuffer- auf den größeren Puffer festgelegt ist.
- Oder er kann den OutputSize Parameter auf 0 und den OutputBuffer auf NULL festlegen und dann WskControlSocketaufrufen. Nach Abschluss ruft die WskControlSocket--Funktion die Ausgabepuffergröße in Byte im OutputSizeReturned-Parameter ab. Anschließend kann ein entsprechend angepasster Puffer zugewiesen werden und WskControlSocket erneut aufgerufen, wobei die anforderung SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS und OutputBuffer- auf den Puffer festgelegt ist.
Hinweis Es ist auch möglich, diese Abfrage in einer Benutzermodusanwendung mithilfe SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS (SDK)auszuführen.
Für diesen Anforderungstyp muss der Winsock-Client einen Zeiger auf ein IRP und einen Zeiger auf seine Abschlussroutine angeben. Das IRP kann von einem höheren Treiber an den Client übergeben werden, oder der Client kann die Zuweisung des IRP auswählen. Um die Abschlussroutine anzugeben, muss der Client IoSetCompletionRoutineaufrufen. Weitere Informationen finden Sie unter Verwenden von IRPs mit Winsock-Kernelfunktionen.
Der Winsock-Client darf den zugewiesenen Puffer erst freigeben, wenn das IRP vom WSK-Subsystem abgeschlossen ist. Wenn das WSK-Subsystem das IRP abgeschlossen hat, benachrichtigt es den Client durch Aufrufen der Abschlussroutine. Ein Verweis auf diesen Puffer wird vom WSK-Subsystem im Context Parameter der Abschlussroutine an den Client übergeben. Die Größe des Puffers wird in Irp->IoStatus.Informationgespeichert.
Der Client kann den Status des IRP abrufen, indem Irp->IoStatus.Statusüberprüft wird. 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_SMALLoder STATUS_ACCESS_DENIED, wenn der Anruf nicht erfolgreich ist.
Anforderungen
Mindestens unterstützter Client |
Windows 8 |
Mindestens unterstützter Server |
Windows Server 2012 |
Kopfball |
Mstcpip.h |
IRQL |
PASSIVE_LEVEL |
Siehe auch
Verwenden von Bind- oder Connect-Umleitungs-
Verwenden von IRPs mit Winsock-Kernelfunktionen
SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT