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

Расширение расширяемого коммутатора Hyper-V вызывает функцию CopyNetBufferListInfo для копирования контекста внеполосной пересылки (OOB) из структуры NET_BUFFER_LIST исходного пакета в структуру NET_BUFFER_LIST конечного пакета. Этот контекст включает в себя расширяемый исходный порт коммутатора и сведения о сетевом адаптере. Также можно скопировать сведения о портах назначения расширяемого коммутатора.

Синтаксис

NDIS_SWITCH_COPY_NET_BUFFER_LIST_INFO NdisSwitchCopyNetBufferListInfo;

NDIS_STATUS NdisSwitchCopyNetBufferListInfo(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST DestNetBufferList,
  [in]      PNET_BUFFER_LIST SrcNetBufferList,
  [in]      UINT32 Flags
)
{...}

Параметры

[in] NdisSwitchContext

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

[in, out] DestNetBufferList

Указатель на структуру NET_BUFFER_LIST для целевого пакета, в который копируется контекст переадресации расширяемого переключателя.

[in] SrcNetBufferList

Указатель на структуру NET_BUFFER_LIST для исходного пакета, из которого копируется контекст переадресации расширяемого коммутатора.

[in] Flags

Значение UINT32. При указании флага NDIS_SWITCH_COPY_NBL_INFO_FLAGS_PRESERVE_DESTINATIONS функция копирует порты назначения расширяемого коммутатора из исходного пакета в целевой пакет.

Данные, содержащиеся в NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO объединении исходного пакета, всегда копируются в контекст переадресации расширяемого коммутатора в целевом пакете. Эти данные включают идентификаторы исходных портов и индекс подключения сетевого адаптера, из которого был получен пакет. В зависимости от количества портов назначения расширяемого коммутатора, которые копируются в целевой пакет, член NumAvailableDestinations NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO объединения обновляется в пакете назначения.

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

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

Если вызов завершается успешно, функция возвращает NDIS_STATUS_SUCCESS. В противном случае возвращается код ошибки NDIS_STATUS_Xxx, определенный в Ndis.h.

Комментарии

Расширение расширяемого коммутатора вызывает функцию CopyNetBufferListInfo для копирования данных OOB из исходного пакета в целевой пакет. Эти данные включают в себя следующее:

  • Данные из массива NetBufferListInfo структуры NET_BUFFER_LIST исходного пакета.
  • NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO данные из контекста переадресации расширяемого коммутатора исходного пакета.
  • Данные для портов назначения расширяемого коммутатора из контекста переадресации расширяемого коммутатора исходного пакета.
    Примечание Эти данные копируются, только если указан флаг NDIS_SWITCH_COPY_NBL_INFO_FLAGS_PRESERVE_DESTINATIONS.
     
Прежде чем расширение вызовет CopyNetBufferListInfo, оно должно подготовить структуру NET_BUFFER_LIST конечного пакета, выполнив следующие действия.
  1. Расширение должно сначала инициализировать структуру NET_BUFFER_LIST для целевого пакета, который является производным от структуры NET_BUFFER_LIST исходного пакета.

    Например, расширение может вызвать NdisAllocateCloneNetBufferList , чтобы создать полную копию исходного пакета. Расширение также может вызывать NdisAllocateFragmentNetBufferList для создания копии только фрагмента исходного пакета. Дополнительные сведения см. в разделе Производные структуры NET_BUFFER_LIST.

  2. Расширение должно вызвать функцию AllocateNetBufferListForwardingContext , чтобы выделить контекст переадресации расширяемого коммутатора для конечного пакета. Эти данные используются для хранения сведений о переадресации расширяемого коммутатора OOB, таких как исходный и конечный порты пакета.
Примечание Если расширение создает или клонирование исходного пакета, оно должно ранее вызывать функцию AllocateNetBufferListForwardingContext для пакета. Исходные пакеты, которые расширение фильтрует через стек драйвера расширяемого коммутатора, уже содержат выделенный контекст переадресации расширяемого коммутатора.
 

Требования

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

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

AllocateNetBufferListForwardingContext

NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO

NET_BUFFER_LIST

NdisAllocateCloneNetBufferList

NdisAllocateFragmentNetBufferList

NdisFGetOptionalSwitchHandlers