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

Расширение расширяемого коммутатора Hyper-V вызывает функцию GetNetBufferListSwitchContext, чтобы получить контекст коммутатора, ранее заданный на NET_BUFFER_LIST.

Синтаксис

NDIS_SWITCH_GET_NET_BUFFER_LIST_SWITCH_CONTEXT NdisSwitchGetNetBufferListSwitchContext;

PVOID NdisSwitchGetNetBufferListSwitchContext(
  [in] NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in] PNET_BUFFER_LIST NetBufferList,
  [in] PNDIS_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE ContextType
)
{...}

Параметры

[in] NdisSwitchContext

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

[in] NetBufferList

Указатель на структуру NET_BUFFER_LIST для одного пакета, содержащего контекст для извлечения.

Примечание Эта структура должна содержать расширяемый контекст переадресации коммутатора. Если расширение создало или клонировало пакет, оно должно ранее выделить эту структуру путем вызова функции AllocateNetBufferListForwardingContext.
 

[in] ContextType

Контекст

Тип контекста, объявленный с помощью NDIS_DECLARE_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE , который использовался при настройке контекста.

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

Значение NULL, если в NET_BUFFER_LIST не найден контекст, соответствующий указанному типу контекста. В противном случае возвращается указатель, отличный от NULL, на буфер.

Комментарии

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

Расширение должно управлять временем существования контекста. Один из подходов заключается в выделении NDIS NET_BUFFER_LIST контексте (с помощью NdisAllocateNetBufferListContext или предварительно настроенного, если расширение владеет пулом NET_BUFFER_LIST), и использовать SetNetBufferListSwitchContext для связывания идентификатора типа контекста с NET_BUFFER_LIST контекстом NDIS. После завершения NBL расширение может освободить контекст NDIS NET_BUFFER_LIST (с помощью NdisFreeNetBufferListContext или освободить сам NET_BUFFER_LIST, если он был создан расширением).

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

Требования

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

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

AllocateNetBufferListForwardingContext

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest

SetNetBufferListSwitchContext