Функция NdisFIndicateReceiveNetBufferLists (ndis.h)
Драйвер фильтра вызывает NdisFIndicateReceiveNetBufferLists , чтобы указать, что он получил сетевые данные. Дополнительные сведения см. в разделе Получение данных в драйвере фильтра.
Синтаксис
void NdisFIndicateReceiveNetBufferLists(
[in] NDIS_HANDLE NdisFilterHandle,
[in] PNET_BUFFER_LIST NetBufferLists,
[in] NDIS_PORT_NUMBER PortNumber,
[in] ULONG NumberOfNetBufferLists,
[in] ULONG ReceiveFlags
);
Параметры
[in] NdisFilterHandle
Дескриптор NDIS, идентифицирующий этот модуль фильтра. NDIS передал дескриптор драйверу фильтра в вызове функции FilterAttach .
[in] NetBufferLists
Связанный список NET_BUFFER_LIST структур. Каждая NET_BUFFER_LIST структура содержит одну NET_BUFFER структуру.
[in] PortNumber
Номер порта, идентифицирующий порт адаптера мини-порта. Номера портов адаптера мини-порта назначаются путем вызова функции NdisMAllocatePort . Нулевое значение определяет порт адаптера мини-порта по умолчанию.
[in] NumberOfNetBufferLists
Количество NET_BUFFER_LIST структур, которые находятся в связанном списке структур в NetBufferLists .
[in] ReceiveFlags
Флаги, определяющие атрибуты для указания получения. Флаги можно объединить с операцией OR. Чтобы очистить все флаги, установите для этого элемента нулевое значение. Эта функция поддерживает следующие флаги:
NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL
Указывает, что текущий irQL DISPATCH_LEVEL. Дополнительные сведения об этом флаге см. в разделе Dispatch IRQL Tracking.
NDIS_RECEIVE_FLAGS_RESOURCES
Указывает, что драйвер фильтра возвращает права собственности на структуры NET_BUFFER_LIST и все присоединенные NET_BUFFER структуры сразу после возврата вызова NdisFIndicateReceiveNetBufferLists .
NDIS_RECEIVE_FLAGS_SINGLE_ETHER_TYPE
Указывает, что все структуры NET_BUFFER_LIST в списке NetBufferLists имеют одинаковый тип протокола (EtherType).
NDIS_RECEIVE_FLAGS_SINGLE_VLAN
Указывает, что все структуры NET_BUFFER_LIST в списке NetBufferLists принадлежат к одной виртуальной локальной сети.
NDIS_RECEIVE_FLAGS_PERFECT_FILTERED
Указывает, что все структуры NET_BUFFER_LIST в списке NetBufferLists включают только данные, соответствующие фильтру пакетов и списку адресов многоадресной рассылки, назначенные адаптеру мини-порта.
NDIS_RECEIVE_FLAGS_SINGLE_QUEUE
Указывает, что все структуры NET_BUFFER_LIST в списке NetBufferLists принадлежат одной очереди виртуальных машин. Драйвер мини-порта должен установить этот флаг для всех показаний получения в очереди, если флаг NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION был установлен в элементе Flags NDIS_RECEIVE_QUEUE_PARAMETERS структуру при выделении очереди.
NDIS_RECEIVE_FLAGS_SHARED_MEMORY_INFO_VALID
Указывает, что все структуры NET_BUFFER_LIST в списке NetBufferLists содержат допустимые сведения о общей памяти. Если этот флаг установлен для полученного NET_BUFFER_LIST, NDIS обрабатывает сведения об общей памяти как допустимые. Если этот флаг не установлен, NDIS и драйверы игнорируют сведения об общей памяти. Например, промежуточные драйверы, изменяющие пакетные данные, могут использовать этот флаг для определения необходимости копирования данных. Драйверы мини-портов могут использовать флаг , чтобы определить, как освободить память, связанную с очередью виртуальных машин, при удалении очереди.
NDIS_RECEIVE_FLAGS_MORE_NBLS
Зарезервировано.
NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE
Если этот флаг установлен, все пакеты в связанном списке NET_BUFFER_LIST структур исходят из одного порта источника расширяемого коммутатора Hyper-V.
Дополнительные сведения см. в статье Флаги отправки и получения расширяемого коммутатора Hyper-V.
NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP
Если этот флаг установлен, все пакеты в связанном списке NET_BUFFER_LIST структур перенаправляются на один и тот же порт назначения расширяемого коммутатора.
Дополнительные сведения см. в статье Флаги отправки и получения расширяемого коммутатора Hyper-V.
Возвращаемое значение
None
Remarks
Когда драйвер фильтра вызывает функцию NdisFIndicateReceiveNetBufferLists , он указывает список NET_BUFFER_LIST структур в параметре NetBufferLists . NDIS передает NET_BUFFER_LIST структуры более легающим драйверам.
Драйверы фильтров могут вызывать NdisFIndicateReceiveNetBufferLists для создания указания получения.
Драйверы фильтров также могут фильтровать признаки получения, созданные базовыми драйверами. NDIS вызываетФункция FilterReceiveNetBufferLists для фильтрации таких признаков получения.
Драйвер фильтра должен задать члену SourceHandle каждой структуры NET_BUFFER_LIST , из которой он исходит, то же значение, что и параметр NdisFilterHandle . Драйвер фильтра не должен изменять элемент SourceHandle во всех NET_BUFFER_LIST структурах, которые он не был создан.
Драйвер фильтра должен правильно инициализировать NET_BUFFER_LIST структуры, присоединенные NET_BUFFER структуры и все присоединенные многомерные списки.
Если драйвер фильтра вызывает функцию NdisFIndicateReceiveNetBufferLists и очищает флаг NDIS_RECEIVE_FLAG_RESOURCES в параметре ReceiveFlags , NDIS возвращает указанные структуры NET_BUFFER_LIST драйверу фильтра.Функция FilterReturnNetBufferLists. В этом случае драйвер фильтра не должен возвращать NET_BUFFER_LIST структуры, пока NDIS не вернет структуры NET_BUFFER_LISTв FilterReturnNetBufferLists.
Если драйвер фильтра вызывает NdisFIndicateReceiveNetBufferLists и задает флаг NDIS_RECEIVE_FLAG_RESOURCES в параметре ReceiveFlags , это означает, что драйвер фильтра должен немедленно восстановить права владения структурами NET_BUFFER_LIST . В этом случае NDIS не вызывает функцию FilterReturnNetBufferLists драйвера фильтра для возврата NET_BUFFER_LIST структур. Вместо этого NDIS возвращает NET_BUFFER_LIST структуры в драйвер фильтра по возвращении из NdisFIndicateReceiveNetBufferLists. Драйвер фильтра должен восстановить NET_BUFFER_LIST структуры сразу после возврата NdisFIndicateReceiveNetBufferLists . Чтобы восстановить NET_BUFFER_LIST структуры, драйвер фильтра может вызвать собственную функцию FilterReturnNetBufferLists .
Установка флага NDIS_RECEIVE_FLAG_RESOURCES в параметре ReceiveFlags заставляет драйверы копировать сетевые данные и освобождать структуры NET_BUFFER_LIST в драйвер фильтра.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.0 и более поздних версиях. |
Целевая платформа | Персональный компьютер |
Верхняя часть | ndis.h (включая Ndis.h) |
Библиотека | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Правила соответствия DDI | Irql_Filter_Driver_Function(ndis) |