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