функция обратного вызова PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE (ndis.h)

Функция ProtocolSendNetBufferListsComplete завершает операцию отправки, инициированную драйвером протокола с помощью вызоваФункция NdisSendNetBufferLists.

Примечание Функцию необходимо объявить с помощью типа PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE . Дополнительные сведения см. в следующем разделе Примеры.
 

Синтаксис

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

См. также раздел

NET_BUFFER

NET_BUFFER_LIST

NdisMSendNetBufferListsComplete

NdisOpenAdapterEx

NdisSendNetBufferLists