функция обратного вызова 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 для одного пакета, содержащего контекст для извлечения.
[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
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по