NDIS_SWITCH_GET_NET_BUFFER_LIST_SWITCH_CONTEXT Rückruffunktion (ndis.h)

Die Erweiterung des erweiterbaren Hyper-V-Switches ruft die GetNetBufferListSwitchContext-Funktion auf, um den switch-Kontext abzurufen, der zuvor für die NET_BUFFER_LIST festgelegt wurde.

Syntax

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
)
{...}

Parameter

[in] NdisSwitchContext

Ein NDIS_SWITCH_CONTEXT Wert, der das Handle des erweiterbaren Switchmoduls enthält, an das die erweiterbare Hyper-V-Switcherweiterung angefügt ist. Wenn die Erweiterung NdisFGetOptionalSwitchHandlers aufruft, wird dieses Handle über den NdisSwitchContext-Parameter zurückgegeben.

[in] NetBufferList

Ein Zeiger auf eine NET_BUFFER_LIST-Struktur für ein einzelnes Paket, das den abzurufenden Kontext enthält.

Hinweis Diese Struktur muss einen erweiterbaren Switchweiterleitungskontext enthalten. Wenn die Erweiterung das Paket erstellt oder geklont hat, muss sie diese Struktur zuvor durch Aufrufen der AllocateNetBufferListForwardingContext-Funktion zugeordnet haben.
 

[in] ContextType

Kontext

Der Kontexttyp, der mit dem NDIS_DECLARE_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE deklariert wurde, der beim Festlegen des Kontexts verwendet wurde.

Rückgabewert

NULL, wenn in der NET_BUFFER_LIST kein Kontext gefunden wurde, der dem angegebenen Kontexttyp entspricht. Andernfalls wird ein Nicht-NULL-Zeiger auf den Puffer zurückgegeben.

Hinweise

Die SetNetBufferListSwitchContext-APIs ermöglichen Es Erweiterungen, Kontext an eine NET_BUFFER_LIST beim Eingehenden anzufügen und beim ausgehenden Datenverkehr abzurufen. Dennoch sollten Erweiterungen resilient sein, wenn der Eingangskontext beim ausgehenden Datenverkehr nicht vorhanden ist. Der Switchkontext wird nicht beibehalten, wenn ein NET_BUFFER_LIST geklont wird. In Szenarien, in denen die NET_BUFFER_LIST zwischen Eingehendem und Ausgehendem geklont wird, verfügt der NET_BUFFER_LIST also nicht über den Switchkontext des Originals.

Die Erweiterung muss die Lebensdauer des Kontexts verwalten. Ein Ansatz besteht darin, NDIS NET_BUFFER_LIST Kontext zuzuordnen (mithilfe von NdisAllocateNetBufferListContext oder vorkonfiguriert, wenn die Erweiterung den NET_BUFFER_LIST-Pool besitzt) und setNetBufferListSwitchContext zu verwenden, um dem NDIS-NET_BUFFER_LIST-Kontext einen Kontexttypbezeichner zuzuordnen. Wenn die NBL abgeschlossen ist, kann die Erweiterung den NDIS-NET_BUFFER_LIST-Kontext freigeben (mithilfe von NdisFreeNetBufferListContext oder freigeben des NET_BUFFER_LIST selbst, wenn es von der Erweiterung stammt).

Weitere Informationen zum Weiterleitungskontext für erweiterbare Switches finden Sie unter Hyper-V Extensible Switch Forwarding Context.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.30 und höher.
Zielplattform Desktop
Kopfzeile ndis.h (include Ndis.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

AllocateNetBufferListForwardingContext

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest

SetNetBufferListSwitchContext