NDIS_SWITCH_SET_NET_BUFFER_LIST_SWITCH_CONTEXT funzione di callback (ndis.h)

L'estensione del commutatore estendibile Hyper-V chiama la funzione SetNetBufferListSwitchContext per collegare un buffer di contesto allocato dall'estensione all'NET_BUFFER_LIST. Il contesto è quindi accessibile per la durata di tale NET_BUFFER_LIST, incluso se il contesto è impostato su in ingresso e il NBL viene visualizzato di nuovo in uscita, indipendentemente dal fatto che altre estensioni impostano il proprio contesto. Questo tipo di accesso non è possibile usando le API di contesto NDIS esistenti NET_BUFFER_LIST (NdisAllocateNetBufferListCon NET_BUFFER_LIST_CONTEXT_DATA_START text/ ) perché un'altra estensione può allocare il contesto NDIS quando ottiene la proprietà dell'NET_BUFFER_LIST, a quel punto il puntatore al contesto NDIS originale viene perso.

Sintassi

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

Parametri

[in] NdisSwitchContext

Valore NDIS_SWITCH_CONTEXT che contiene l'handle del modulo di commutatore estendibile a cui è associata l'estensione dell'estensione estendibile Hyper-V. Quando l'estensione chiama NdisFGetOptionalSwitchHandlers, questo handle viene restituito tramite il parametro NdisSwitchContext .

[in, out] NetBufferList

Puntatore a una struttura NET_BUFFER_LIST per un singolo pacchetto che riceve l'associazione di contesto.

Nota Questa struttura deve contenere un contesto di inoltro estendibile. Se l'estensione creata o clonata il pacchetto, deve essere stata allocata in precedenza questa struttura chiamando la funzione AllocateNetBufferListForwardingContext .
 

[in] ContextType

Il tipo di contesto dichiarato usando NDIS_DECLARE_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE che verrà usato come chiave durante il recupero del contesto.

[in] Context

Puntatore al contesto che sarà recuperabile usando contextType specificato.

Valore restituito

Se la chiamata ha esito positivo, la funzione restituisce NDIS_STATUS_SUCCESS. In caso contrario, restituisce un codice di errore NDIS_STATUS_Xxx definito in Ndis.h.

Commenti

Le API SetNetBufferListSwitchContext consentono alle estensioni di collegare il contesto a un NET_BUFFER_LIST in ingresso e recuperarlo in uscita. Anche in questo caso, le estensioni devono essere resilienti al contesto in ingresso che non sono presenti in uscita. Il contesto del commutatore non viene mantenuto quando viene clonato un NET_BUFFER_LIST, quindi negli scenari in cui la NET_BUFFER_LIST viene clonata tra ingresso e uscita, l'NET_BUFFER_LIST non avrà il contesto del commutatore originale.

L'estensione deve gestire la durata del contesto. Un approccio consiste nell'allocare NDIS NET_BUFFER_LIST contesto (usando NdisAllocateNetBufferListContext o preconfigurato se l'estensione possiede il pool di NET_BUFFER_LIST) e usare SetNetBufferListSwitchContext per associare un identificatore di tipo di contesto al contesto di NET_BUFFER_LIST NDIS. Al termine dell'NBL, l'estensione può liberare il contesto di NET_BUFFER_LIST NDIS (usando NdisFreeNetBufferListContext o liberando il NET_BUFFER_LIST stesso se è stato originato dall'estensione).

Per altre informazioni sul contesto di inoltro del commutatore estendibile, vedere Contesto di inoltro del commutatore estendibile Hyper-V.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.30 e versioni successive.
Piattaforma di destinazione Desktop
Intestazione ndis.h (includere Ndis.h)
IRQL <= DISPATCH_LEVEL

Vedi anche

AllocateNetBufferListForwardingContext

GetNetBufferListDestinations

GetNetBufferListSwitchContext

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest