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


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

Расширение Hyper-V расширяемого коммутатора вызывает функцию CopyNetBufferListInfo для копирования контекста пересылки из 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 (include Ndis.h)
IRQL <= DISPATCH_LEVEL

См. также

AllocateNetBufferListForwardingContext

NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO

NET_BUFFER_LIST

NdisAllocateCloneNetBufferList

NdisAllocateFragmentNetBufferList

NdisFGetOptionalSwitchHandlers