Udostępnij za pośrednictwem


kod kontrolny SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS

Operacja sterowania we/wy gniazda SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS umożliwia klientowi Winsock pobranie rekordu przekierowania dla przekierowanego połączenia.

Rekord przekierowania WFP jest buforem nieprzezroczystych danych, które program WFP musi ustawić na wychodzącym połączeniu serwera proxy, aby połączenie przekierowane i oryginalne połączenie było logicznie powiązane.

Uwaga Kwerenda SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS może być używana tylko wtedy, gdy połączenie zostało przekierowane w warstwie FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 lub FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 przez klienta programu WFP.

Aby uzyskać więcej informacji na temat przekierowania, zobacz Using Bind or Connect Redirection.

Aby wysłać zapytanie do rekordu przekierowania dla przekierowanego połączenia, klient Winsock wywołuje funkcję WskControlSocket z następującymi parametrami.

Parametr Wartość

RequestType

WskIoctl

ControlCode

SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS

poziom

0

InputSize

0

InputBuffer

ZERO

OutputSize

Rozmiar w bajtach buforu wskazywanego przez parametr OutputBuffer.

OutputBuffer

Wskaźnik do buforu, który odbiera rekord przekierowania dla zaakceptowanego połączenia TCP. Rozmiar buforu jest określony w parametrze OutputSize.

OutputSizeReturned

Wskaźnik do zmiennej ULONG-typed, która odbiera liczbę bajtów danych skopiowanych do buforu wskazywanego przez parametr OutputBuffer.

Irp

Wskaźnik do IRP.

Obiekt wywołujący może wykonać to zapytanie na jeden z następujących sposobów:

  • Można ustawić OutputBuffer na duży bufor o rozmiarze około 1 KB. Jeśli rozmiar buforu wyjściowego nie jest wystarczająco duży, WskControlSocket zwróci STATUS_BUFFER_TOO_SMALL, a OutputSizeReturned będzie zawierać wymagany rozmiar buforu. Następnie można przydzielić większy bufor i wywołać WskControlSocket z żądaniem SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS i OutputBuffer ustawić na większy bufor.
  • Można też ustawić parametr OutputSize na 0, a OutputBuffer wartość NULL, a następnie wywołać WskControlSocket. Po zakończeniu funkcja WskControlSocket pobiera rozmiar buforu wyjściowego w bajtach w parametrze OutputSizeReturned. Następnie można przydzielić odpowiedni bufor o odpowiednim rozmiarze i wywołać WskControlSocket z żądaniem SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS i OutputBuffer ustawionym na bufor.

Uwaga Istnieje również możliwość wykonania tego zapytania w aplikacji w trybie użytkownika przy użyciu SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS (SDK).

W przypadku tego typu żądania klient Winsock musi określić wskaźnik do IRP i wskaźnik do procedury uzupełniania. Protokół IRP można przekazać do klienta przez wyższy sterownik lub klient może wybrać przydzielenie protokołu IRP. Aby określić procedurę uzupełniania, klient musi wywołać IoSetCompletionRoutine. Aby uzyskać więcej informacji, zobacz Using IRPs with Winsock Kernel Functions.

Klient Winsock nie może zwolnić przydzielonego buforu do momentu ukończenia protokołu IRP przez podsystem WSK. Gdy podsystem WSK ukończy protokół IRP, powiadamia klienta, wywołując procedurę ukończenia. Odwołanie do tego buforu jest przekazywane do klienta przez podsystem WSK w Context parametr procedury uzupełniania. Rozmiar buforu jest przechowywany w Irp->IoStatus.Information.

Klient może uzyskać stan IRP, sprawdzając Irp->IoStatus.Status. >IoStatus.Status zostanie ustawiona na STATUS_SUCCESS, jeśli żądanie zakończy się pomyślnie. W przeciwnym razie będzie zawierać STATUS_INTEGER_OVERFLOW, STATUS_NOT_FOUND, STATUS_BUFFER_TOO_SMALLlub STATUS_ACCESS_DENIED, jeśli wywołanie nie powiedzie się.

Wymagania

Minimalny obsługiwany klient

Windows 8

Minimalny obsługiwany serwer

Windows Server 2012

Nagłówek

Mstcpip.h

IRQL

PASSIVE_LEVEL

Zobacz też

używanie przekierowania powiązania lub połączenia

używanie protokołu IRPs z funkcjami jądra Winsock

SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT

SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS (SDK)

SIO_SET_WFP_CONNECTION_REDIRECT_RECORDS