Функция NdisMSendNetBufferListsComplete (ndis.h)
Драйверы miniport вызывают функцию 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. Дополнительные сведения об этом флаге см. в разделе Dispatch IRQL Tracking.
Возвращаемое значение
None
Remarks
Драйвер мини-порта вызывает 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.
Драйвер мини-порта должен задать один из следующих кодов состояния в элементе Status каждой структуры 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 (включая Ndis.h) |
Библиотека | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Правила соответствия DDI | Irql_SendRcv_Function(ndis), NdisTimedDataHang, NdisTimedDataSend |