Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Операция управления SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS сокета ввода-вывода позволяет клиенту Winsock получить запись перенаправления для перенаправленного подключения.
Запись перенаправления МПП — это буфер непрозрачных данных, которые МПП должна установить на исходящем прокси-подключении, чтобы перенаправленное подключение и исходное соединение логически связаны.
Примечание Запрос SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS можно использовать только в том случае, если подключение было перенаправлено на FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 или FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 клиентом МПП.
Дополнительные сведения о перенаправлении см. в разделе Using Bind or Connect Redirection.
Чтобы запросить запись перенаправления для перенаправленного подключения, клиент Winsock вызывает функцию WskControlSocket со следующими параметрами.
| Параметр | Ценность |
|---|---|
RequestType |
WskIoctl |
ControlCode |
SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS |
уровня |
0 |
InputSize |
0 |
InputBuffer |
НЕДЕЙСТВИТЕЛЬНЫЙ |
OutputSize |
Размер буфера в байтах, на который указывает параметр OutputBuffer. |
OutputBuffer |
Указатель на буфер, получающий запись перенаправления для принятого TCP-подключения. Размер буфера указывается в параметре OutputSize. |
OutputSizeReturned |
Указатель на переменную ULONG ULONGтипа, которая получает количество байтов данных, скопированных в буфер, на который указывает параметр OutputBuffer. |
Irp |
Указатель на IRP. |
Вызывающий объект может выполнять этот запрос в любом из следующих способов:
- Он может задать для OutputBuffer большой буфер примерно 1 КБ. Если размер выходного буфера недостаточно велик, WskControlSocket вернет STATUS_BUFFER_TOO_SMALL и OutputSizeReturned будет содержать необходимый размер буфера. Затем можно выделить больший буфер и WskControlSocket с запросом SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS и OutputBuffer задать для большего буфера.
- Кроме того, параметр outputSize может иметь значение 0, а OutputBuffer значение NULL, а затем вызвать WskControlSocket. По завершении функция WskControlSocket извлекает размер выходного буфера в байтах в параметре OutputSizeReturned. Затем можно выделить буфер соответствующего размера, а затем WskControlSocket с запросом SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS и OutputBuffer задать буфер.
Примечание Этот запрос также можно выполнить в приложении пользовательского режима с помощью SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS (SDK).
Для этого типа запроса клиент Winsock должен указать указатель на IRP и указатель на его подпрограмму завершения. IRP может передаваться клиенту более высоким драйвером или клиент может выбрать выделение IRP. Чтобы указать подпрограмму завершения, клиент должен вызвать IoSetCompletionRoutine. Дополнительные сведения см. в разделе Использование irPs с функциями ядра Winsock.
Клиент Winsock не должен освободить выделенный буфер до завершения IRP подсистемой WSK. Когда подсистема WSK завершает IRP, она уведомляет клиента, вызвав подпрограмму завершения. Ссылка на этот буфер передается клиенту подсистемой WSK в параметре контекста контекста подпрограммы завершения. Размер буфера хранится в Irp->IoStatus.Information.
Клиент может получить состояние IRP, проверив Irp->IoStatus.Status. Irp->IoStatus.Status будет иметь значение STATUS_SUCCESS, если запрос выполнен успешно. В противном случае он будет содержать STATUS_INTEGER_OVERFLOW, STATUS_NOT_FOUND, STATUS_BUFFER_TOO_SMALLили STATUS_ACCESS_DENIED, если вызов не выполнен.
Требования
Минимальный поддерживаемый клиент |
Windows 8 |
Минимальный поддерживаемый сервер |
Windows Server 2012 |
Заголовок |
Mstcpip.h |
IRQL |
PASSIVE_LEVEL |
См. также
использование привязки или перенаправления подключения
использование IRPs с функциями ядра Winsock
SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT