функция обратного вызова PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE (ndis.h)
Функция ProtocolSendNetBufferListsComplete завершает операцию отправки, инициированную драйвером протокола с помощью вызоваФункция NdisSendNetBufferLists.
Синтаксис
PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE ProtocolSendNetBufferListsComplete;
void ProtocolSendNetBufferListsComplete(
[in] NDIS_HANDLE ProtocolBindingContext,
[in] PNET_BUFFER_LIST NetBufferList,
[in] ULONG SendCompleteFlags
)
{...}
Параметры
[in] ProtocolBindingContext
Дескриптор области контекста, выделенной драйвером протокола для хранения сведений о состоянии привязки. Этот дескриптор был передан в NDIS при предыдущем вызове NdisOpenAdapterEx.
[in] NetBufferList
Указатель на список NET_BUFFER_LIST структур, предоставленных драйвером протокола при предыдущем вызове NdisSendNetBufferLists.
[in] SendCompleteFlags
Флаги NDIS, которые можно объединить с операцией OR. Чтобы очистить все флаги, установите для этого элемента нулевое значение. Эта функция поддерживает флаг NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL, который; Значение , если задано, указывает, что текущий irQL DISPATCH_LEVEL. Дополнительные сведения об этом флаге см. в разделе Dispatch IRQL Tracking.
Возвращаемое значение
None
Remarks
ProtocolSendNetBufferListsComplete — это обязательная функция для драйверов протоколов. ProtocolSendNetBufferListsComplete выполняет любую постобработку, необходимую для завершения операции отправки. Например, драйвер протокола может уведомлять клиентов, запрашивающих протокол для отправки сетевых данных о завершении операции отправки.
NDIS вызывает ProtocolSendNetBufferListsComplete после вызова базового драйвера мини-портаФункция NdisMSendNetBufferListsComplete. Завершение операции отправки обычно подразумевает, что базовый драйвер мини-порта передал указанные сетевые данные. Однако драйвер мини-порта может указать, что операция отправки завершена сразу после передачи сетевых данных в сетевую карту.
Когда NDIS вызывает ProtocolSendNetBufferListsComplete, драйвер протокола восстанавливает права владения всеми ресурсами, связанными с NET_BUFFER_LIST структурами, указанными параметром NetBufferLists .
NDIS всегда отправляет сетевые данные, предоставляемые протоколом, в базовый драйвер мини-порта в определенном протоколом порядке, передаваемом в NdisSendNetBufferLists. Однако базовый драйвер может выполнять запросы на отправку в любом порядке. То есть драйверы протоколов могут полагаться на NDIS для отправки сетевых данных в порядке FIFO базовому драйверу. Однако драйверы протоколов не могут полагаться на базовый драйвер для вызова NdisMSendNetBufferListsComplete в том же порядке.
NDIS вызывает ProtocolSendNetBufferListsComplete по адресу IRQL<= DISPATCH_LEVEL.
Примеры
Чтобы определить функцию ProtocolSendNetBufferListsComplete , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.Например, чтобы определить функцию ProtocolSendNetBufferListsComplete с именем MySendNetBufferListsComplete, используйте тип PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE , как показано в следующем примере кода:
PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE MySendNetBufferListsComplete;
Затем реализуйте функцию следующим образом:
_Use_decl_annotations_
VOID
MySendNetBufferListsComplete(
NDIS_HANDLE ProtocolBindingContext,
PNET_BUFFER_LIST NetBufferLists,
ULONG SendCompleteFlags
)
{...}
Тип функции PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов NDIS.
Сведения о Use_decl_annotations см. в статье Поведение функции с заметками.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.0 и более поздних версиях. |
Целевая платформа | Windows |
Header | ndis.h (включая Ndis.h) |
IRQL | <= DISPATCH_LEVEL |