функция обратного вызова 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 | Любой уровень |