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


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

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

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

Синтаксис

NDIS_TCP_OFFLOAD_DISCONNECT_COMPLETE NdisTcpOffloadDisconnectComplete;

void NdisTcpOffloadDisconnectComplete(
  [in] IN NDIS_HANDLE NdisMiniportHandle,
  [in] IN PNET_BUFFER_LIST NetBufferList
)
{...}

Параметры

[in] NdisMiniportHandle

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

[in] NetBufferList

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

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

None

Remarks

Завершение прерывания отключения

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

  • Завершите все незавершенные запросы на отправку по подключению со значением состояния NDIS_STATUS_REQUEST_ABORTED. Целевой объект разгрузки записывает это значение состояния в элемент Status каждой структуры NET_BUFFER_LIST в связанном списке, который он передает вФункция NdisTcpOffloadSendComplete.
  • Запишите значение состояния в элемент Status структуры NET_BUFFER_LIST, на которую указывает указатель NetBufferList . Значение состояния NDIS_STATUS_SUCCESS указывает, что целевой объект разгрузки успешно отправил сегмент RST. Описание допустимых значений состояния см. в разделе NET_BUFFER_LIST.
Завершение корректного отключения

Перед выполнением корректного запроса на отключение целевой объект разгрузки должен:

  • Запишите значение состояния в элемент Status структуры NET_BUFFER_LIST, которая передается в Функция NdisTcpOffloadDisconnectComplete :
    • Значение NDIS_STATUS_SUCCESS указывает, что сегмент FIN, а также любые пользовательские данные были успешно отправлены целевым объектом разгрузки и также подтверждены удаленным узлом.
    • Значение NDIS_STATUS_UPLOAD_IN_PROGRESS указывает, что передается TCP-подключение, на которое ссылается NdisMiniportHandle .
    • Значение NDIS_STATUS_REQUEST_ABORTED указывает, что сегмент FIN и(или) какие-либо пользовательские данные не были успешно переданы целевым объектом разгрузки и подтверждены удаленным узлом. В конечном итоге стек узлов завершит разгрузку TCP-подключения.
  • Укажите количество байтов пользовательских данных, которые были отправлены и успешно подтверждены. Для этого целевой объект разгрузки вызывает макрос NET_BUFFER_LIST_INFO с идентификаторомTcpOffloadBytesTransferred.
  • ВызовитеФункция NdisAdvanceNetBufferDataStart. Параметр NetBufferList должен указывать на структуру NET_BUFFER, связанную со структурой NET_BUFFER_LIST, которую целевой объект разгрузки передает функции NdisTcpOffloadDisconnectComplete . Параметр DataOffsetDelta должен указывать количество байтов данных из структуры NET_BUFFER, которые были переданы целевым объектом разгрузки, а также успешно подтверждены удаленным узлом. Параметр FreeMdl должен иметь значение NULL.
Обратите внимание, что функция NdisTcpOffloadDisconnectComplete возвращает только NET_BUFFER_LIST структуру и связанные структуры, переданные NDIS целевому объекту разгрузки. Функция MiniportTcpOffloadDisconnect . Функция NdisTcpOffloadDisconnectComplete не может вернуть NET_BUFFER_LIST структуры, которые NDIS передал в предыдущих вызовах целевого объекта разгрузки. Функция MiniportTcpOffloadSend .

Требования

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

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

MiniportTcpOffloadDisconnect

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisAdvanceNetBufferDataStart

NdisMRegisterMiniportDriver

NdisTcpOffloadSendComplete