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


Функция NdisMTerminateOffloadComplete (ndischimney.h)

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

Целевой объект разгрузки вызывает функцию NdisMTerminateOffloadComplete для завершения операции разгрузки, инициированной предыдущим вызовом Функция MiniportTerminateOffload целевого объекта разгрузки.

Синтаксис

void NdisMTerminateOffloadComplete(
  [in] IN NDIS_HANDLE                       NdisMiniportHandle,
  [in] IN PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
);

Параметры

[in] NdisMiniportHandle

Дескриптор, полученный целевым объектом разгрузки в предыдущем вызове NdisMRegisterMiniportDriver.

[in] OffloadBlockList

Указатель на NDIS_MINIPORT_OFFLOAD_BLOCK_LIST структура. Целевой объект разгрузки получил этот указатель в качестве входного параметра для его Функция MiniportTerminateOffload .

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

None

Remarks

Перед вызовом функции NdisMTerminateOffloadComplete целевой объект разгрузки должен записать одно из следующих значений NDIS_STATUS в элемент Status каждой структуры NDIS_MINIPORT_OFFLOAD_BLOCK_LIST в дереве состояния:

  • NDIS_STATUS_SUCCESS

    Целевой объект разгрузки успешно завершил разгрузку объекта состояния, на который ссылается структура NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. Если за структурой NDIS_MINIPORT_OFFLOAD_BLOCK_LIST следует делегированная структура состояния (XXX_OFFLOAD_STATE_DELEGATED), целевой объект разгрузки успешно записал значения делегированных переменных для этого объекта состояния в структуру делегированного состояния.

  • NDIS_STATUS_FAILURE

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

Перед вызовом функции NdisMTerminateOffloadComplete целевой объект разгрузки должен также: При наличии необработанных данных для отправки данных в tcp-подключении, которое завершается, целевой объект разгрузки упаковывает такие данные в чистые буферы и передает упакованные данные в стек узлов в связанном списке NET_BUFFER_LIST структур. В этом случае целевой объект разгрузки задает значение, отличное от NULL , для элемента NetBufferListChain структуры NDIS_MINIPORT_OFFLOAD_BLOCK_LIST для этого соединения. (Структура NDIS_MINIPORT_OFFLOAD_BLOCK_LIST находится в связанном списке, на который указывает указатель OffloadBlockList .) Элемент NetBufferListChain указывает на связанный список NET_BUFFER_LIST структур, с которыми связаны отправляемые данные.

При передаче необработанных данных отправки в стек узла целевой объект разгрузки также должен указывать значения, отличные от NULL , для следующих делегированных переменных TCP для разрываемого подключения:

  • SndUna
  • SndNxt
  • SndMax
Дополнительные сведения о передаче необработанных данных отправки см. в разделе Обработка необработанных данных отправки во время и после операции разгрузки.

Если отсутствуют незавершенные данные отправки в прерванном TCP-подключении, целевой объект разгрузки должен указать значение NULL для элемента NetBufferListChain .

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

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

Требования

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

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

MiniportTerminateOffload

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST

NdisMRegisterMiniportDriver

TCP_OFFLOAD_STATE_DELEGATED