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


структура NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY (ndis.h)

Структура NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY указывает массив Hyper-V расширяемых портов назначения коммутатора для пакета. Каждый элемент в массиве форматируется как структура NDIS_SWITCH_PORT_DESTINATION.

Эти сведения содержатся в исходящих данных (OOB) структуры NET_BUFFER_LIST пакета.

Синтаксис

typedef struct _NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY {
  NDIS_OBJECT_HEADER Header;
  UINT32             ElementSize;
  UINT32             NumElements;
  UINT32             NumDestinations;
  PVOID              FirstElement;
} NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY, *PNDIS_SWITCH_FORWARDING_DESTINATION_ARRAY;

Члены

Header

Тип, редакция и размер структуры NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY. Этот элемент отформатирован как структура NDIS_OBJECT_HEADER.

Элемент типазаголовка должен иметь значение NDIS_OBJECT_TYPE_DEFAULT. Чтобы указать версию структуры NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY, редакции члена заголовка необходимо задать следующее значение:

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY_REVISION_1

Исходная версия для NDIS 6.30 и более поздних версий.

Задайте для элемента размер значение NDIS_SIZEOF_NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY_REVISION_1.

ElementSize

Значение ULONG, указывающее размер в байтах каждого элемента NDIS_SWITCH_PORT_DESTINATION, следующего за структурой NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY.

NumElements

Значение ULONG, указывающее общее количество элементов NDIS_SWITCH_PORT_DESTINATION в структуре NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY.

Значение элемента NumElements указывает количество используемых в данный момент элементов NDIS_SWITCH_PORT_DESTINATION (как указано в элементе NumDestinations), а также количество элементов, доступных для новых портов назначения. Число неиспользуемых элементов NDIS_SWITCH_PORT_DESTINATION в структуре NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY вычисляется по (NumElements - NumDestinations).

NumDestinations

Значение ULONG, указывающее количество элементов NDIS_SWITCH_PORT_DESTINATION в структуре NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY, указывающей назначения портов.

Примечание Если numElements имеет значение нулю, этот элемент игнорируется.
 

FirstElement

Указатель на первый элемент NDIS_SWITCH_PORT_DESTINATION в буфере, который содержит структуру NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY и все его элементы.

Замечания

Расширение расширяемого коммутатора может выполнять следующие действия с конечными портами в NET_BUFFER_LIST структуре пакета:

  • Запросите текущие порты назначения на расширяемом коммутаторе, в который будет перенаправлен пакет.

    Расширение расширяемого коммутатора вызывает функцию getNetBufferListDestinations для получения массива назначений портов для пакета. GetNetBufferListDestinations возвращает указатель на структуру NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY в параметре назначения.

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

  • Добавьте или измените порты назначения для пакета.

    После того как он запрашивает текущие порты назначения для пакета, расширение расширяемого коммутатора может выполнить следующее:

    • Расширение пересылки может добавлять новые порты назначения в структуру NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY.
    • Расширение фильтрации или пересылки может изменять данные в NDIS_SWITCH_PORT_DESTINATION структуре для порта назначения.
      Примечание Расширение фильтрации может изменить только элемент IsExcluded этой структуры. Расширение пересылки также может изменять и членов PreservePriority.
       
    Если расширение добавляет или изменяет назначения портов, он должен вызывать UpdateNetBufferListDestinations, чтобы зафиксировать изменения в конечных портах в данные OOB пакета в структуре NET_BUFFER_LIST.

    Дополнительные сведения см. в разделе Управление Hyper-V расширяемымиданными порта назначения коммутатора.

Расширения расширяемого коммутатора могут использовать макрос NDIS_SWITCH_PORT_DESTINATION_AT_ARRAY_INDEX для доступа к элементам NDIS_SWITCH_PORT_DESTINATION в массиве NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Поддерживается в NDIS 6.30 и более поздних версиях.
заголовка ndis.h (include Ndis.h)

См. также

добавление данных порта назначения расширяемого коммутатора в пакет

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

расширения пересылки

GetNetBufferListDestinations

гибридной пересылки

NDIS_OBJECT_HEADER

NDIS_SWITCH_PORT_DESTINATION

NDIS_SWITCH_PORT_DESTINATION_AT_ARRAY_INDEX

NET_BUFFER_LIST

обзор Hyper-V расширяемого коммутатора

UpdateNetBufferListDestinations