функция обратного вызова 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.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | ndischimney.h (включая Ndischimney.h) |