функция обратного вызова 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.
-
Расширение должно сначала инициализировать структуру NET_BUFFER_LIST для целевого пакета, который является производным от структуры NET_BUFFER_LIST исходного пакета.
Например, расширение может вызывать NdisAllocateCloneNetBufferList для создания полной копии исходного пакета. Расширение также может вызывать NdisAllocateFragmentNetBufferList для создания копии только фрагмента исходного пакета. Дополнительные сведения см. в производных NET_BUFFER_LIST структур.
- Расширение должно вызвать функцию AllocateNetBufferListForwardingContext, чтобы выделить контекст переадресации расширяемого коммутатора для целевого пакета. Эти данные используются для хранения данных переадресации расширяемого коммутатора OOB, таких как порты источника и назначения пакета.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Поддерживается в NDIS 6.30 и более поздних версиях. |
целевая платформа | Настольный |
заголовка | ndis.h (include Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
См. также
AllocateNetBufferListForwardingContext
NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO
NdisAllocateCloneNetBufferList