OID_TCP_TASK_OFFLOAD
Стек узла запрашивает OID_TCP_TASK_OFFLOAD OID, чтобы получить возможности разгрузки TCP сетевого адаптера драйвера мини-порта или целевого объекта разгрузки. После определения возможностей разгрузки, поддерживаемых сетевым адаптером или целевым объектом разгрузки, стек узла задает этот OID для включения одной или нескольких сообщаемых возможностей. Стек узлов также может отключить все возможности разгрузки TCP-разгрузки сетевого адаптера или целевого объекта разгрузки, задав OID_TCP_TASK_OFFLOAD. Только один протокол за раз может включить возможности разгрузки TCP для определенной сетевой карты.
Запросы возможностей разгрузки
Когда стек узла запрашивает OID_TCP_TASK_OFFLOAD, он предоставляет в InformationBufferструктуру NDIS_TASK_OFFLOAD_HEADER . Эта структура определяет следующее:
- Версия разгрузки, поддерживаемая стеком узлов.
- Формат инкапсуляции для отправки и получения пакетов, обрабатываемых стеком узлов.
- Размер заголовка инкапсуляции в таких пакетах.
С помощью этих сведений драйвер мини-порта или его сетевой адаптер может найти начало первого IP-заголовка в пакете передачи, что является необходимым условием для выполнения задачи разгрузки. Целевой объект разгрузки должен знать формат инкапсуляции для обработки получаемых пакетов. В ответ на запрос OID_TCP_TASK_OFFLOAD, драйвер минипорта или целевой объект разгрузки возвращает в InformationBuffer NDIS_TASK_OFFLOAD_HEADER структуру, за которой сразу же следует одна или несколько NDIS_TASK_OFFLOAD структур. Каждая структура NDIS_TASK_OFFLOAD описывает возможность разгрузки, поддерживаемую сетевым адаптером драйвера мини-порта или целевым объектом разгрузки. Если сетевой адаптер драйвера мини-порта или целевой объект разгрузки поддерживает несколько версий определенной возможности разгрузки, они должны возвращать одну NDIS_TASK_OFFLOAD структуру для каждой версии.
Каждая структура NDIS_TASK_OFFLOAD имеет элемент Task , который указывает конкретную возможность разгрузки, к которой применяется структура. Каждая NDIS_TASK_OFFLOAD структура также имеет TaskBuffer , который содержит сведения, относящиеся к указанной возможности разгрузки. Сведения в TaskBuffer форматируются в виде одной из следующих структур:
- NDIS_TASK_TCP_IP_CHECKSUM
Указывает возможности разгрузки контрольной суммы. - NDIS_TASK_IPSEC
Указывает возможности разгрузки IPsec. - NDIS_TASK_TCP_LARGE_SEND
Задает возможности сегментации больших пакетов TCP. - NDIS_TASK_TCP_CONNECTION_OFFLOAD
Указывает возможности разгрузки дымохода TCP. Дополнительные сведения о NDIS_TASK_TCP_CONNECTION_OFFLOAD см. в разделе Разгрузка TCP Chimney.
Примечание
Если промежуточный драйвер изменяет содержимое пакетов, которые он пересылает базовому драйверу мини-порта таким образом, что функции разгрузки TCP не могут быть выполнены в пакетах, промежуточный драйвер должен отвечать на запросы OID_TCP_TASK_OFFLOAD с состоянием NDIS_STATUS_NOT_SUPPORTED вместо передачи запроса OID базовому драйверу мини-порта или целевому объекту разгрузки.
Включение возможностей разгрузки
После запроса возможностей разгрузки сетевого адаптера или целевого объекта разгрузки стек узлов включает одну или несколько из этих возможностей, задав OID_TCP_TASK_OFFLOAD. При установке OID_TCP_TASK_OFFLOAD стек узла предоставляет в InformationBuffer структуру NDIS_TASK_OFFLOAD_HEADER, за которой сразу же следует структура NDIS_TASK_OFFLOAD для каждой возможности разгрузки, которую включает стек узлов.
Задача в каждой NDIS_TASK_OFFLOAD структуре указывает возможность разгрузки, которую включает стек узлов. Стек узла также включает определенные аспекты конкретной возможности разгрузки, задавая элементы структуры в TaskBuffer каждой структуры NDIS_TASK_OFFLOAD.
Изменение возможностей разгрузки
Чтобы изменить возможности разгрузки, которые включены для сетевого адаптера или целевого объекта разгрузки, стек узла задает OID_TCP_TASK_OFFLOAD. Драйвер мини-порта или целевой объект разгрузки должны включать только те возможности разгрузки, которые указаны в последнем наборе OID_TCP_TASK_OFFLOAD. Драйвер мини-порта или целевой объект разгрузки должны отключить все остальные возможности разгрузки. Обратите внимание, что перед отключением определенной возможности разгрузки дымохода TCP стек узлов завершает разгрузку всех разгруженных TCP-подключений, использующих такую возможность.
Целевой объект разгрузки может использовать признаки приостановки или возобновления разгрузки, чтобы изменить сообщаемые возможности разгрузки TCP:
- Целевой объект разгрузки указывает на приостановку, вызывая функцию NdisMIndicateStatusEx с элементом NDIS_STATUS_INDICATION-StatusCode>, равным NDIS_STATUS_OFFLOAD_PAUSE.
- Целевой объект разгрузки указывает на возобновление, вызывая функцию NdisMIndicateStatusEx с элементом NDIS_STATUS_INDICATION-StatusCode>, равным NDIS_STATUS_OFFLOAD_RESUME.
После того как целевой объект разгрузки запрашивает стек узлов для возобновления разгрузки объектов состояния, стек узлов снова запрашивает OID_TCP_TASK_OFFLOAD для получения измененных возможностей разгрузки TCP-разгрузки целевого объекта разгрузки разгрузки. Дополнительные сведения см. в разделе NDIS_STATUS_OFFLOAD_RESUME.
Отключение возможностей разгрузки
Чтобы отключить все возможности разгрузки, поддерживаемые сетевым адаптером или целевым объектом разгрузки, стек узла задает OID_TCP_TASK_OFFLOAD. В InformationBuffer стек узла предоставляет структуру NDIS_TASK_OFFLOAD_HEADER с элементом OffsetFirstTask этой структуры, равным нулю.
Требования
Версия: Windows Vista и более поздних версий Заголовок: Ntddndis.h (включая Ndis.h)