Freigeben über


NDIS_SWITCH_SET_NET_BUFFER_LIST_SWITCH_CONTEXT Rückruffunktion (ndis.h)

Die erweiterbare Hyper-V-Switcherweiterung ruft die SetNetBufferListSwitchContext-Funktion auf, um einen durch die Erweiterung zugewiesenen Kontextpuffer an den NET_BUFFER_LIST anzufügen. Auf den Kontext kann dann für die Lebensdauer dieses NET_BUFFER_LIST zugegriffen werden, einschließlich, wenn der Kontext auf eingehenden Datenverkehr festgelegt ist und die NBL beim Ausgehenden wieder angezeigt wird, unabhängig davon, ob andere Erweiterungen einen eigenen Kontext festlegen. Diese Art des Zugriffs ist mit den vorhandenen NDIS-NET_BUFFER_LIST-Kontext-APIs (NdisAllocateNetBufferListContext/ NET_BUFFER_LIST_CONTEXT_DATA_START) nicht möglich, da eine andere Erweiterung den NDIS-Kontext zuordnen kann, wenn sie den Besitz des NET_BUFFER_LIST erhält, sodass der Zeiger auf den ursprünglichen NDIS-Kontext verloren geht.

Syntax

NDIS_SWITCH_SET_NET_BUFFER_LIST_SWITCH_CONTEXT NdisSwitchSetNetBufferListSwitchContext;

NDIS_STATUS NdisSwitchSetNetBufferListSwitchContext(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      PNDIS_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE ContextType,
  [in]      PVOID Context
)
{...}

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, out] NetBufferList

Ein Zeiger auf eine NET_BUFFER_LIST-Struktur für ein einzelnes Paket, das die Kontextzuordnung empfängt.

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

Der Kontexttyp, der mit NDIS_DECLARE_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE deklariert wurde, der beim Abrufen des Kontexts als Schlüssel verwendet wird.

[in] Context

Der Zeiger auf den Kontext, der mit dem angegebenen ContextType abgerufen werden kann.

Rückgabewert

Wenn der Aufruf erfolgreich ist, gibt die Funktion NDIS_STATUS_SUCCESS zurück. Andernfalls wird ein NDIS_STATUS_Xxx-Fehlercode zurückgegeben, der in Ndis.h definiert ist.

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

GetNetBufferListSwitchContext

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest