Функция NdisFSendNetBufferLists (ndis.h)
Драйверы фильтров вызывают функцию NdisFSendNetBufferLists для отправки списка сетевых буферов данных.
Синтаксис
void NdisFSendNetBufferLists(
[in] NDIS_HANDLE NdisFilterHandle,
__drv_aliasesMem PNET_BUFFER_LIST NetBufferList,
[in] NDIS_PORT_NUMBER PortNumber,
[in] ULONG SendFlags
);
Параметры
[in] NdisFilterHandle
Дескриптор NDIS, идентифицирующий этот модуль фильтра. NDIS передал дескриптор драйверу фильтра в вызове функции FilterAttach .
NetBufferList
Указатель на связанный список NET_BUFFER_LIST структур. Каждая NET_BUFFER_LIST структура описывает список NET_BUFFER структур.
[in] PortNumber
Номер порта, идентифицирующий порт адаптера мини-порта. Номера портов адаптера мини-порта назначаются путем вызова функции NdisMAllocatePort . Нулевое значение определяет порт адаптера мини-порта по умолчанию.
[in] SendFlags
Флаги, определяющие атрибуты для операции отправки. Флаги можно объединить с операцией OR. Чтобы очистить все флаги, установите для этого элемента нулевое значение. Эта функция поддерживает следующие флаги:
NDIS_SEND_FLAGS_DISPATCH_LEVEL
Указывает, что текущий irQL DISPATCH_LEVEL. Дополнительные сведения об этом флаге см. в разделе Dispatch IRQL Tracking.
NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK
Указывает, что NDIS должна проверка для замыкания на себя. По умолчанию NDIS не выполняет цикловую обратную передачу данных в драйвер, отправляющий запрос на отправку. Переопределяющий драйвер может переопределить это поведение, установив этот флаг. Если этот флаг установлен, NDIS определяет все NET_BUFFER структуры, содержащие данные, соответствующие критериям получения привязки. NDIS указывает, NET_BUFFER структуры, которые соответствуют критериям для вышеопределяющего драйвера. Этот флаг не влияет на проверку замыкания на себя или циклов в других привязках.
NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE
Если этот флаг установлен, все пакеты в связанном списке NET_BUFFER_LIST структур исходят из одного порта источника расширяемого коммутатора Hyper-V.
Дополнительные сведения см. в статье Флаги отправки и получения расширяемого коммутатора Hyper-V.
NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP
Если этот флаг установлен, все пакеты в связанном списке NET_BUFFER_LIST структур перенаправляются на один и тот же порт назначения расширяемого коммутатора.
Дополнительные сведения см. в статье Флаги отправки и получения расширяемого коммутатора Hyper-V.
Возвращаемое значение
None
Remarks
После того как драйвер фильтра вызывает функцию NdisFSendNetBufferLists , NDIS отправляет NET_BUFFER_LIST структуры в базовые драйверы.
Драйвер фильтра может отправлять запросы на отправку или фильтровать запросы, получаемые от слишком параметров. Если драйвер фильтра отправляет запросы на отправку, драйвер должен выделить пулы буферов. Драйвер фильтра выделяет каждую NET_BUFFER_LIST структуру из пула.
Драйвер фильтра может предварительно выделить NET_BUFFER_LIST структуры или выделить структуры непосредственно перед вызовом NdisFSendNetBufferLists , а затем освободить их после завершения операции отправки.
Драйвер фильтра должен задать член SourceHandle каждой структуры NET_BUFFER_LIST , в которой он исходит, то же значение, которое передается параметру NdisFilterHandle . Дескриптор фильтра предоставляет сведения, необходимые NDIS для возврата структуры NET_BUFFER_LIST драйверу фильтра. Драйвер фильтра не должен изменять элемент SourceHandle во всех NET_BUFFER_LIST структурах, которые он не был создан.
Перед вызовом NdisFSendNetBufferLists драйвер фильтра может задать сведения, которые сопровождают запрос на отправку с помощью макроса NET_BUFFER_LIST_INFO . Базовые драйверы могут получить эти сведения с помощью макроса NET_BUFFER_LIST_INFO .
NDIS вызывает драйвер фильтраФункция FilterSendNetBufferLists для передачи запросов на отправку от вышестояющих драйверов. Драйвер фильтра может передавать такие запросы, передав структуры NET_BUFFER_LISTT, полученные в FilterSendNetBufferLists , в NdisFSendNetBufferLists.
Как только драйвер фильтра вызывает функцию NdisFSendNetBufferLists , он откажется от владения структурами NET_BUFFER_LIST и всеми связанными ресурсами. NDIS вызываетФункция FilterSendNetBufferListsComplete для возврата структур и данных в драйвер фильтра. NDIS может собирать структуры и данные из нескольких запросов на отправку в один связанный список NET_BUFFER_LIST структур, прежде чем передать этот список в FilterSendNetBufferListsComplete.
Пока NDIS не вызовет FilterSendNetBufferListsComplete, текущее состояние запроса на отправку недоступно для драйвера фильтра. Драйвер фильтра временно освобождает права владения всеми ресурсами, связанными с запросом на отправку, при вызове NdisFSendNetBufferLists. Драйвер фильтра никогда не должен пытаться изучить NET_BUFFER_LIST структуры или связанные с ними данные после вызова NdisFSendNetBufferLists.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.0 и более поздних версиях. |
Целевая платформа | Персональный компьютер |
Верхняя часть | ndis.h (включая Ndis.h) |
Библиотека | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Правила соответствия DDI | Irql_Filter_Driver_Function(ndis) |