Поделиться через


функция обратного вызова W_INITIATE_OFFLOAD_HANDLER (ndischimney.h)

[Функция разгрузки дымохода TCP является нерекомендуемой и не должна использоваться.]

MiniportInitiateOffload выгружает состояние дымохода TCP из стека узла.

Синтаксис

W_INITIATE_OFFLOAD_HANDLER WInitiateOffloadHandler;

void WInitiateOffloadHandler(
  [in]      IN NDIS_HANDLE MiniportAdapterContext,
  [in, out] IN OUT PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
)
{...}

Параметры

[in] MiniportAdapterContext

Дескриптор выделенной области контекста целевого объекта разгрузки, в которой целевой объект разгрузки сохраняет сведения о состоянии этого экземпляра адаптера. Драйвер минипорта предоставил этот дескриптор NDIS при вызове NdisMSetMiniportAttributes из его Функция MiniportInitializeEx .

[in, out] OffloadBlockList

Указатель на NDIS_MINIPORT_OFFLOAD_BLOCK_LIST структуру, которая может быть автономной структурой или корнем связанного списка таких структур.

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

None

Remarks

Функция MiniportInitiateOffload сохраняет указатель OffloadBlockList и возвращает значение . Целевой объект разгрузки всегда асинхронно завершает операцию разгрузки путем вызова NdisMInitiateOffloadComplete. Дерево состояния, на которое указывает указатель OffloadBlockList , действителен до тех пор, пока драйвер мини-порта не вызовет NdisMInitiateOffloadComplete.

После возврата из функции MiniportInitiateOffload целевой объект разгрузки разгружает состояние из дерева состояний. Структура NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, член MiniportOffloadContext которой указывает на расположение памяти, содержащее значение NULL , за которым следует состояние для разгрузки. Дополнительные сведения см. в разделе Хранение и ссылка на разгруженное состояние. Элемент Header структуры NDIS_MINIPORT_OFFLOAD_BLOCK_LIST содержит элемент Type , указывающий тип состояния разгрузки, и, по сути, структуру состояния разгрузки или структуры, которые непосредственно следуют за NDIS_MINIPORT_OFFLOAD_BLOCK_LIST структурой в памяти.

Целевой объект разгрузки разгружает состояние разгрузки, связанное со структурой NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, в область контекста разгрузки. Дополнительные сведения см. в разделе Хранение и ссылка на разгруженное состояние.

При разгрузке состояния целевой объект разгрузки должен проходить по дереву состояний по глубине и ширине. Очень важно, чтобы целевой объект разгрузки разгружает состояние таким образом.

Некоторые из NDIS_MINIPORT_OFFLOAD_BLOCK_LIST структур в дереве состояний, которые передаются в функцию MiniportInitiateOffload , могут быть заполнителями или связывающими узлами, которые не имеют соответствующего состояния для разгрузки. Дополнительные сведения см. в разделе Заполнители, компоновщики и новые разгрузки.

Целевой объект разгрузки может получать буферизированные данные из стека узла для разгружаемого подключения. Целевой объект разгрузки должен скопировать эти данные в собственный буфер перед завершением операции разгрузки. Дополнительные сведения об обработке буферизованного получения данных см. в разделе Обработка буферизованного получения данных во время и после операции разгрузки.

Для каждого объекта состояния, который он выгружает, целевой объект разгрузки должен также предоставить значение PVOID, которое ссылается на область контекста разгрузки, в которой целевой объект разгрузки хранит объект состояния. Целевой объект разгрузки записывает это значение PVOID в расположение памяти, на которое указывает элемент *MiniportOffloadContext структуры NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, связанной с состоянием. Если целевой объект разгрузки не выгрузил состояние, связанное со структурой NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, он не должен записывать значение в расположение памяти, на которое указывает элемент *MiniportOffloadContext . Дополнительные сведения см. в разделе Хранение и ссылка на разгруженное состояние.

Требования

Требование Значение
Целевая платформа Windows
Header ndischimney.h (включая Ndischimney.h)
IRQL Любой уровень

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

MiniportInitializeEx

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST

NdisMInitiateOffloadComplete

NdisMSetMiniportAttributes