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

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

Синтаксис

NDIS_SWITCH_REPORT_FILTERED_NET_BUFFER_LISTS NdisSwitchReportFilteredNetBufferLists;

void NdisSwitchReportFilteredNetBufferLists(
  [in]           NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in]           PUNICODE_STRING ExtensionGuid,
  [in]           PUNICODE_STRING ExtensionFriendlyName,
  [in]           NDIS_SWITCH_PORT_ID PortId,
  [in]           UINT32 Flags,
  [in]           UINT32 NumberOfNetBufferLists,
  [in]           PNET_BUFFER_LIST NetBufferLists,
  [in, optional] PUNICODE_STRING FilterReason
)
{...}

Параметры

[in] NdisSwitchContext

Значение NDIS_SWITCH_CONTEXT, содержащее дескриптор модуля расширяемого коммутатора, к которому подключено расширение расширяемого коммутатора Hyper-V. Когда расширение вызывает NdisFGetOptionalSwitchHandlers, этот дескриптор возвращается с помощью параметра NdisSwitchContext .

[in] ExtensionGuid

Указатель на структуру UNICODE_STRING , содержащую GUID расширения. NDIS указывает этот GUID в элементе FilterModuleGuidName структуры NDIS_FILTER_ATTACH_PARAMETERS . NDIS передает указатель на эту структуру в параметре AttachParameters при вызове функции FilterAttach расширения.

[in] ExtensionFriendlyName

Указатель на структуру UNICODE_STRING , содержащую понятное имя расширения. Это имя определяется записью DisplayName в директиве AddService INF-файла расширения.

[in] PortId

Значение NDIS_SWITCH_PORT_ID, указывающее расширяемый порт коммутатора. Дополнительные сведения см. в разделе «Примечания».

[in] Flags

Значение UINT32. Если указан флаг NDIS_SWITCH_REPORT_FILTERED_NBL_FLAGS_IS_INCOMING, он указывает, что элемент PortId определяет источник отброшенного пакета. Если он не указан, член PortId определяет порт расширяемого коммутатора назначения. Дополнительные сведения см. в разделе «Примечания».

[in] NumberOfNetBufferLists

Значение UINT32, содержащее количество NET_BUFFER_LIST структур, заданное параметром NetBufferLists .

[in] NetBufferLists

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

[in, optional] FilterReason

Указатель на структуру UNICODE_STRING , которая содержит понятное описание причины удаления или исключения пакетов. Дополнительные сведения см. в разделе «Примечания».

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

None

Remarks

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

Расширение может исключить доставку пакета следующими способами:

  • Расширение завершает пакет, а не пересылает его через стек драйверов расширяемого коммутатора. Например, расширение может вызвать NdisFSendNetBufferListsComplete , чтобы удалить пакет, который он проверял, когда NDIS вызывает свою функцию FilterSendNetBufferLists .
  • Расширение изменяет порты назначения для пакета. Например, расширение должно вызывать ReportFilteredNetBufferLists , если оно устанавливает для члена IsExcludedзначение TRUE в структуре NDIS_SWITCH_PORT_DESTINATION для порта назначения пакета.

    Дополнительные сведения об исключении доставки пакетов на порты расширяемого коммутатора см. в разделе Исключение доставки пакетов в порты назначения расширяемого коммутатора.

При вызове ReportFilteredNetBufferLists расширение должно следовать этим рекомендациям:
  • Параметр NetBufferLists указывает связанный список NET_BUFFER_LIST структур. Все пакеты, указанные в этих структурах, должны быть получены или отправлены на один и тот же порт, а также удалены или исключены по той же причине.
  • Если пакет удаляется из-за политики, основанной на исходном порте, необходимо указать флаг NDIS_SWITCH_REPORT_FILTERED_NBL_FLAGS_IS_INCOMING. Расширение также должно задать для параметра PortId идентификатор порта, из которого был получен пакет.
  • Если пакет удаляется из-за политики на основе порта назначения, флаг NDIS_SWITCH_REPORT_FILTERED_NBL_FLAGS_IS_INCOMING указывать не следует. Расширение также должно задать для параметра PortId идентификатор порта, на который должен был быть отправлен пакет.

Требования

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

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

FilterAttach

Директива INF AddService

NDIS_FILTER_ATTACH_PARAMETERS

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

UNICODE_STRING