Поделиться через


Функция NdisCoSendNetBufferLists (ndis.h)

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

Синтаксис

void NdisCoSendNetBufferLists(
  [in] NDIS_HANDLE      NdisVcHandle,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG            SendFlags
);

Параметры

[in] NdisVcHandle

Дескриптор виртуального подключения (VC), определяющий целевой объект запроса на отправку.

[in] NetBufferLists

Указатель на связанный список NET_BUFFER_LIST структур. Каждая NET_BUFFER_LIST структура описывает список NET_BUFFER структур.

[in] SendFlags

Флаги, определяющие атрибуты для операции отправки. Флаги можно объединить с побитовой операцией ИЛИ. Чтобы очистить все флаги, задайте для этого параметра нулевое значение. NdisCoSendNetBufferLists поддерживает следующие флаги:

NDIS_SEND_FLAGS_DISPATCH_LEVEL

Текущий irQL DISPATCH_LEVEL. Дополнительные сведения об этом флаге см. в разделе Dispatch IRQL Tracking.

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

NDIS должна проверка для замыкания на себя. По умолчанию NDIS не выполняет цикловую обратную передачу данных в драйвер, отправляющий запрос на отправку. Переопределяющий драйвер может переопределить это поведение, задав NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK. Если этот флаг установлен, NDIS определяет все NET_BUFFER структуры, содержащие данные, соответствующие критериям получения привязки. NDIS указывает, NET_BUFFER структуры, которые соответствуют критериям для вышеопределяющего драйвера. Этот флаг не влияет на проверку замыкания на себя или зацикливание на других привязках.

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

None

Remarks

После того как драйвер протокола CoNDIS вызывает NdisCoSendNetBufferLists, NDIS отправляет NET_BUFFER_LIST структуры, которые заданы параметром NetBufferLists , в базовый драйвер.Функция MiniportCoSendNetBufferLists.

Драйвер протокола должен выделить каждую структуру NET_BUFFER_LIST из пула, вызвав одну из следующих функций:

Драйвер протокола может предварительно выделить NET_BUFFER_LIST структуры, например в своей подпрограмме DriverEntry . Кроме того, драйвер протокола может выделить структуры непосредственно перед вызовом NdisCoSendNetBufferLists , а затем освободить их после завершения операции отправки. Когда NDIS возвращает структуру NET_BUFFER_LIST вФункция ProtocolCoSendNetBufferListsComplete, драйвер протокола может подготовить структуру NET_BUFFER_LIST и все связанные с ней ресурсы для повторного использования. При повторном использовании NET_BUFFER_LIST структур можно повысить производительность, чем возвращать структуры в пул, а затем перераспределить их для другой операции отправки.

Драйвер протокола должен задать для элемента SourceHandle каждой структуры NET_BUFFER_LIST то же значение, которое он передает в параметре NdisVcHandle . Исходный дескриптор предоставляет сведения, необходимые NDIS для возврата структуры NET_BUFFER_LIST драйверу протокола после вызова базового драйвера мини-портаФункция NdisMCoSendNetBufferListsComplete.

Прежде чем драйвер протокола вызовет NdisCoSendNetBufferLists, драйвер может задать сведения, сопровождающие запрос на отправку, с помощью макроса NET_BUFFER_LIST_INFO. Базовый драйвер может получить эти сведения с помощью макроса NET_BUFFER_LIST_INFO.

Прежде чем драйвер протокола вызовет NdisCoSendNetBufferLists со списком NET_BUFFER_LIST структур, драйвер протокола должен убедиться, что NET_BUFFER_LIST структуры настроены в порядке отправки сетевых данных.

Как только драйвер протокола вызывает NdisCoSendNetBufferLists, ему больше не принадлежат NET_BUFFER_LIST структуры и все связанные с ними ресурсы. NDIS вызывает функцию ProtocolCoSendNetBufferListsComplete , чтобы вернуть структуры и данные в драйвер протокола. NDIS может собирать структуры и данные из нескольких запросов на отправку в один связанный список NET_BUFFER_LIST структур, прежде чем передать этот список в ProtocolCoSendNetBufferListsComplete.

Пока NDIS не вызовет ProtocolCoSendNetBufferListsComplete, текущее состояние отправки, инициированной драйвером протокола, недоступно для драйвера протокола. Драйвер протокола временно освобождает права владения всеми ресурсами, выделенными для запроса на отправку, при вызове NdisCoSendNetBufferLists. Драйвер протокола никогда не должен пытаться изучить структуры NET_BUFFER_LIST или любые связанные с ними данные после вызова драйвером NdisCoSendNetBufferLists.

Требования

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

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

DriverEntry

MiniportCoSendNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisAllocateCloneNetBufferList NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisMCoSendNetBufferListsComplete ProtocolCoSendNetBufferListsComplete