NDIS_SWITCH_ALLOCATE_NET_BUFFER_LIST_FORWARDING_CONTEXT funzione di callback (ndis.h)

La funzione AllocateNetBufferListForwardingContext prepara una struttura NET_BUFFER_LIST per le operazioni di invio o ricezione all'interno del commutatore estendibile.

Sintassi

NDIS_SWITCH_ALLOCATE_NET_BUFFER_LIST_FORWARDING_CONTEXT NdisSwitchAllocateNetBufferListForwardingContext;

NDIS_STATUS NdisSwitchAllocateNetBufferListForwardingContext(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList
)
{...}

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 un elenco collegato di strutture NET_BUFFER_LIST .

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

L'estensione del commutatore estendibile può originare operazioni di invio di pacchetti all'interno del percorso dati di commutatore estendibile. Ad esempio, l'estensione può inviare pacchetti a qualsiasi porta nel commutatore estendibile. Per altre informazioni su questo percorso dati, vedere Percorso dati estendibile Hyper-V.

Dopo che l'estensione chiama NdisAllocateNetBufferList o NdisAllocateCloneNetBufferList per creare o clonare un pacchetto dal pool di NET_BUFFER_LIST , l'estensione deve chiamare la funzione AllocateNetBufferListForwardingContext . Questa funzione alloca e inizializza il contesto di inoltro estendibile (OOB) out-of-band per la struttura NET_BUFFER_LIST specificata. Per altre informazioni su questo contesto, vedere Contesto di inoltro del commutatore estendibile Hyper-V.

L'estensione deve seguire queste linee guida per l'allocazione del contesto di inoltro tramite la funzione AllocateNetBufferListForwardingContext :

  • L'estensione chiama NdisAllocateNetBufferList per allocare un pacchetto dal pool di NET_BUFFER_LIST dell'estensione per un'operazione di invio o ricezione sul commutatore estendibile. Prima che l'estensione inizializzi le porte di origine e di destinazione per il pacchetto, deve chiamare AllocateNetBufferListForwardingContext.

    Per altre informazioni su come specificare le porte del commutatore estendibili di origine e destinazione, vedere Gestione dei dati delle porte di origine e porta di destinazione di Hyper-V.

  • Prima che l'estensione chiami AllocateNetBufferListForwardingContext, deve impostare il membro SourceHandle di ogni struttura NET_BUFFER_LIST allocata sul valore handle che identifica l'estensione. L'estensione riceve questo handle tramite il parametro NdisFilterHandle quando NDIS chiama la funzione FilterAttach dell'estensione.
  • Al termine dell'operazione di invio, l'estensione deve chiamare la funzione FreeNetBufferListForwardingContext per deallocare le risorse per il contesto di inoltro. L'estensione deve chiamare questa funzione prima di chiamare NdisFreeNetBufferList per restituire il pacchetto al relativo pool di NET_BUFFER_LIST .
  • Se l'estensione clona un pacchetto, deve chiamare CopyNetBufferListInfo per copiare il contesto di inoltro dal pacchetto originale al pacchetto clonato. L'estensione deve eseguire questa operazione dopo aver chiamato AllocateNetBufferListForwardingContext.
Per altre informazioni su come originare le operazioni di invio, vedere Filtrare le operazioni di invio e ricezione del modulo.
Nota Se il parametro NetBufferList contiene un puntatore a un elenco collegato di più strutture di NET_BUFFER_LIST , solo la prima struttura NET_BUFFER_LIST nell'elenco ha un contesto di inoltro allocato.
 

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

CopyNetBufferListInfo

FilterAttach

FreeNetBufferListForwardingContext

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBufferList

NdisFGetOptionalSwitchHandlers

NdisFreeNetBufferList