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


Функция 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.

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

Никакой

Замечания

Перед вызовом функции NdisMTerminateOffloadComplete целевой объект разгрузки должен записывать одно из следующих значений NDIS_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