код элемента управления SIO_LOOPBACK_FAST_PATH

ВажноSIO_LOOPBACK_FAST_PATH не рекомендуется использовать в коде.

Код элемента управления SIO_LOOPBACK_FAST_PATH сокета позволяет приложению WSK настроить сокет TCP для более быстрых операций в интерфейсе замыкания на себя.

Чтобы использовать этот IOCTL, приложение WSK вызывает функцию WskControlSocket со следующими параметрами.

Параметр Значение

RequestType

WskIoctl

ControlCode

SIO_LOOPBACK_FAST_PATH

Уровень

0

Размер входных данных

Размер входного буфера (в байтах).

InputBuffer

Указатель на входной буфер. Этот параметр содержит указатель на логическое значение, указывающее, следует ли настроить сокет для быстрых операций замыкания на себя.

OutputSize

0

OutputBuffer

NULL

OutputSizeReturned

NULL

Irp

Указатель на IRP.

Приложение может использовать SIO_LOOPBACK_FAST_PATH IOCTL для повышения производительности операций замыкания на себя в сокете TCP. Этот IOCTL запрашивает, чтобы стек TCP/IP использовал специальный быстрый путь для операций замыкания на себя в этом сокете. SIO_LOOPBACK_FAST_PATH IOCTL можно использовать только с сокетами TCP. Этот IOCTL должен использоваться на обеих сторонах сеанса замыкания на себя. Быстрый путь tcp-замыкания на себя поддерживается с помощью интерфейса замыкания на себя IPv4 или IPv6.

Сокет, который планирует инициировать запрос на подключение, должен применить этот IOCTL перед выполнением запроса на подключение. Сокет, прослушивающий запрос на подключение, должен применить этот IOCTL перед принятием подключения.

После того как приложение установит подключение к интерфейсу замыкания на себя с помощью быстрого пути, все пакеты на протяжении всего времени существования подключения должны использовать быстрый путь.

Применение SIO_LOOPBACK_FAST_PATH к сокету, который будет подключен к пути без замыкания на себя, не будет иметь никакого эффекта.

Эта оптимизация замыкания на себя tcp приводит к тому, что пакеты проходят через транспортный уровень (TL) вместо традиционного замыкания на себя через сетевой уровень. Такая оптимизация повышает задержку пакетов замыкания на себя. Когда приложение согласится использовать быстрый путь на уровне подключения, все пакеты будут следовать пути замыкания на себя. Для связи за замыкание на себя не ожидается перегрузка и удаление пакетов. Понятие контроля перегрузки и надежной доставки в TCP будет ненужным. Однако это не относится к управлению потоком. Без управления потоком отправитель может перегрузить буфер получения, что приведет к ошибочному поведению замыкания на себя tcp. Управление потоком в пути замыкания на себя, оптимизированном для TCP, поддерживается путем размещения запросов отправки в очереди. Когда буфер получения заполнен, стек TCP/IP гарантирует, что отправка не будет завершена до обслуживания очереди, сохраняя управление потоком.

Подключения с быстрым путем TCP с замыканиями на себя при наличии выноски платформы фильтрации Windows (МПП) для данных подключения должны принимать неоптимизированный медленный путь для замыкания на себя. Таким образом, фильтры МПП не позволят использовать этот новый быстрый путь замыкания на себя. Если включен фильтр МПП, система будет использовать медленный путь, даже если был задан SIO_LOOPBACK_FAST_PATH IOCTL. Таким образом, приложения в пользовательском режиме обладают полными возможностями безопасности МПП.

По умолчанию SIO_LOOPBACK_FAST_PATH отключен.

Только подмножество параметров сокета TCP/IP поддерживается, если SIO_LOOPBACK_FAST_PATH IOCTL используется для включения быстрого пути замыкания на себя в сокете. Список поддерживаемых параметров включает следующие:

Приложение WSK должно указывать указатель на IRP и подпрограмму завершения при вызове функции WskControlSocket для этого типа запроса. Приложение не должно освобождать буфер, пока подсистема WSK не завершит IRP. После завершения IRP подсистема вызывает подпрограмму завершения. В процедуре завершения приложение должно проверка состояние IRP и освободить все ресурсы, выделенные ранее для запроса.

Дополнительные сведения об обработке WSK IRP см. в статье Использование irPs с функциями ядра Winsock.

По завершении IRP подсистема установит значение Irp-IoStatus.Status>STATUS_SUCCESS, если запрос выполнен успешно. В противном случае Irp-IoStatus.Status> будет иметь значение STATUS_INVALID_BUFFER_SIZE или STATUS_NOT_SUPPORTED, если вызов не выполнен успешно.

Возвращаемое значение

Требования

Минимальная версия клиента

Windows 8

Минимальная версия сервера

Windows Server 2012

Заголовок

Mstcpip.h

IRQL

PASSIVE_LEVEL

См. также раздел

SIO_LOOPBACK_FAST_PATH (пакет SDK)

Использование IRP с функциями ядра Winsock