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