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


Функция NdisMSendNetBufferListsComplete (ndis.h)

Драйверы минипорта вызывают функцию NdisMSendNetBufferListsComplete, чтобы вернуть связанный список структур NET_BUFFER_LIST в избыточный драйвер и вернуть окончательное состояние запроса на отправку.

Синтаксис

void NdisMSendNetBufferListsComplete(
  [in] NDIS_HANDLE      MiniportAdapterHandle,
       PNET_BUFFER_LIST NetBufferList,
  [in] ULONG            SendCompleteFlags
);

Параметры

[in] MiniportAdapterHandle

Дескриптор минипорта, передаваемый NDIS в функцию MiniportInitializeEx.

NetBufferList

Указатель на связанный список структур NET_BUFFER_LIST. Минипорт-драйвер получил структуры NET_BUFFER_LIST в предыдущих вызовах функции MiniportSendNetBufferLists.

[in] SendCompleteFlags

Флаги NDIS, которые можно объединить с операцией OR. Чтобы очистить все флаги, установите для этого элемента значение нулю. Эта функция поддерживает флаг NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL, который; Значение , если задано, указывает, что текущий IRQL DISPATCH_LEVEL. Дополнительные сведения об этом флаге см. в отслеживания IRQL.

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

Никакой

Замечания

Драйвер минипорта вызывает NdisMSendNetBufferListsComplete для завершения отправки запросов, выполненных NDIS в функцию miniportSendNetBufferLists. Драйвер минипорта указывает связанный список структур NET_BUFFER_LIST, связанных с завершенными запросами на отправку. Пока ожидается состояние запросов на отправку, минипорт-драйвер сохраняет владение структурами NET_BUFFER_LIST и всеми выделенными протоколом ресурсами, связанными со структурами NET_BUFFER_LIST.

После вызова драйвера мини-порта NdisMSendNetBufferListsComplete, NDIS вызывает функцию ProtocolSendNetBufferListsComplete драйвера, вызывающего функцию NdisSendNetBufferLists, чтобы инициировать запрос на отправку.

Минипорт-драйвер может завершить отправку запросов в любом порядке. Например, драйвер минипорта может объединить списки структуры NET_BUFFER_LIST из нескольких MiniportSendNetBufferLists вызовы или разделить список из вызова MiniportSendNetBufferLists. Однако драйвер минипорта не должен изменять список NET_BUFFER структур, связанных с NET_BUFFER_LIST структурой.

Драйвер минипорта должен задать один из следующих кодов состояния в элементе состояния каждой структуры NET_BUFFER_LIST, указанной параметром NetBufferLists:

Структура Описание
NDIS_STATUS_SUCCESS Все сетевые данные, описываемые структурой NET_BUFFER_LIST и связанными NET_BUFFER структурами, успешно обработаны для передачи. Например, минипорт-драйвер копировал данные в очередь или данные уже переданы.
NDIS_STATUS_INVALID_LENGTH Размер данных в некоторых NET_BUFFER структурах, связанных с этой NET_BUFFER_LIST структурой, был слишком большим для базовой сетевой карты.
NDIS_STATUS_RESOURCES Запрос отправки для этой NET_BUFFER_LIST структуры завершился ошибкой из-за нехватки ресурсов.
NDIS_STATUS_PAUSED Минипорт-адаптер находится в состоянии "Приостановлено", как описано на справочной странице функции MiniportPause.
NDIS_STATUS_SEND_ABORTED NDIS называется функцией MiniportCancelSend, чтобы отменить операцию отправки для этой NET_BUFFER_LIST структуры.
NDIS_STATUS_RESET_IN_PROGRESS Минипорт-драйвер прервал запрос на отправку из-за сброса.
NDIS_STATUS_FAILURE Минипорт-драйвер не удалось отправить запрос из-за какой-либо причины, отличной от описанных ранее. Например, минипорт-драйвер может завершить запрос на отправку из-за сбоя оборудования.

Вызов драйвера минипорта к NdisMSendNetBufferListsComplete не обязательно означает, что данные для запроса отправки передаются по сети. Данные могут быть помещены в очередь в аппаратном интерфейсе сетевого адаптера.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Поддерживается в NDIS 6.0 и более поздних версиях.
целевая платформа Всеобщий
заголовка ndis.h (include Ndis.h)
библиотеки Ndis.lib
IRQL <= DISPATCH_LEVEL
правил соответствия DDI Irql_SendRcv_Function(ndis), NdisTimedDataHang, NdisTimedDataSend

См. также

MiniportCancelSend

MiniportInitializeEx

MiniportSendNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NdisSendNetBufferLists