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

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

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

Синтаксис

PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE ProtocolCoSendNetBufferListsComplete;

void ProtocolCoSendNetBufferListsComplete(
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG SendCompleteFlags
)
{...}

Параметры

[in] ProtocolVcContext

Дескриптор для области контекста, выделенной драйвером протокола, в которой этот драйвер хранит сведения о состоянии выполнения каждого виртуального подключения (VC). Клиент или автономный диспетчер вызовов предоставил этот дескриптор либо при вызове функции NdisCoCreateVc , либо из функции ProtocolCoCreateVc .

[in] NetBufferLists

Указатель на список NET_BUFFER_LIST структур, предоставленных драйвером протокола при предыдущем вызовеФункция NdisCoSendNetBufferLists.

[in] SendCompleteFlags

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

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

None

Remarks

Для драйверов протокола CoNDIS требуется функция ProtocolCoSendNetBufferListsComplete . ProtocolCoSendNetBufferListsComplete выполняет любую постобработку, необходимую для завершения операции отправки. Например, драйвер протокола может уведомить клиентов, которые запросили драйвер для отправки сетевых данных о том, что операция отправки завершена.

NDIS вызывает ProtocolCoSendNetBufferListsComplete после вызова базового драйвера мини-портаФункция NdisMCoSendNetBufferListsComplete. Полная операция отправки не обязательно означает, что базовый драйвер мини-порта передал указанные сетевые данные. Например, драйвер мини-порта может указать, что операция отправки завершена сразу после передачи сетевых данных в сетевой интерфейс карта оборудования (NIC).

Когда NDIS вызывает ProtocolCoSendNetBufferListsComplete, драйвер протокола восстанавливает права владения всеми ресурсами, связанными с NET_BUFFER_LIST структурами, указанными параметром NetBufferLists .

NDIS всегда отправляет сетевые данные, предоставленные драйвером протокола, базовым драйверам в определенном протоколом порядке, который был передан в NdisCoSendNetBufferLists. Однако базовый драйвер может выполнять запросы на отправку в любом порядке. Это значит, что драйверы протокола могут полагаться на NDIS для отправки сетевых данных в порядке fifo (first in, first out) в базовый драйвер. Однако драйверы протоколов не могут полагаться на базовый драйвер для вызова NdisMCoSendNetBufferListsComplete в том же порядке.

NDIS вызывает ProtocolCoSendNetBufferListsComplete по адресу IRQL<= DISPATCH_LEVEL.

Примеры

Чтобы определить функцию ProtocolCoSendNetBufferListsComplete , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить функцию ProtocolCoSendNetBufferListsComplete с именем MyCoSendNetBufferListsComplete, используйте тип PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE , как показано в следующем примере кода:

PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE MyCoSendNetBufferListsComplete;

Затем реализуйте функцию следующим образом:

_Use_decl_annotations_
VOID
 MyCoSendNetBufferListsComplete(
    NDIS_HANDLE  ProtocolVcContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  SendCompleteFlags
    )
  {...}

Тип функции PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов NDIS.

Сведения о Use_decl_annotations см. в статье Поведение функции с заметками.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Windows
Header ndis.h (включая Ndis.h)
IRQL <= DISPATCH_LEVEL

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

Функции отправки и получения драйвера протокола CoNDIS

NET_BUFFER_LIST

NdisCoCreateVc

NdisCoSendNetBufferLists

NdisMCoSendNetBufferListsComplete

ProtocolCoCreateVc

ProtocolCoReceiveNetBufferLists