Condividi tramite


NDIS_SWITCH_UPDATE_NET_BUFFER_LIST_DESTINATIONS funzione di callback (ndis.h)

L'estensione del commutatore estendibile Hyper-V chiama la funzione UpdateNetBufferListDestinations per eseguire il commit delle modifiche apportate all'estensione a un pacchetto contenente più porte di destinazione di commutatore estendibili. La funzione salva queste modifiche al contesto di inoltro estendibile (OOB) fuori banda della struttura di NET_BUFFER_LIST del pacchetto.

Sintassi

NDIS_SWITCH_UPDATE_NET_BUFFER_LIST_DESTINATIONS NdisSwitchUpdateNetBufferListDestinations;

NDIS_STATUS NdisSwitchUpdateNetBufferListDestinations(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      UINT32 NumberOfNewDestinations,
  [in]      PNDIS_SWITCH_FORWARDING_DESTINATION_ARRAY Destinations
)
{...}

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 di NET_BUFFER_LIST per un singolo pacchetto.

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] NumberOfNewDestinations

Valore UINT32 che specifica il numero di nuove porte di destinazione aggiunte al pacchetto.

[in] Destinations

Puntatore a una struttura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Questa struttura specifica le porte di destinazione di commutatore estendibili del pacchetto.

Nota L'estensione ha ricevuto questa struttura tramite una chiamata precedente alla funzione GetNetBufferListDestinations .
 

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 chiama la funzione GetNetBufferListDestinations per ottenere una matrice delle porte di destinazione del commutatore estendibile per un pacchetto. Se la funzione restituisce correttamente, la matrice viene ottenuta tramite il parametro Destination , che contiene un puntatore a una struttura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Ogni elemento di questa matrice viene formattato come struttura NDIS_SWITCH_PORT_DESTINATION che specifica una porta di destinazione per il pacchetto.

Dopo aver ottenuto la struttura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY , l'estensione può eseguire le operazioni seguenti:

Se l'estensione aggiunge o modifica le porte di destinazione nella struttura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY , l'estensione deve chiamare la funzione UpdateNetBufferListDestinations per eseguire il commit di tali modifiche alla struttura di NET_BUFFER_LIST del pacchetto.
Nota Solo le estensioni di inoltro possono chiamare UpdateNetBufferListDestinations per eseguire il commit delle porte di destinazione aggiunte o modificate per i pacchetti con più porte di destinazione. Per altre informazioni su questo tipo di estensione, vedere Estensioni di inoltro.
 
Se la chiamata a UpdateNetBufferListDestinations restituisce NDIS_STATUS_SUCCESS, l'interfaccia commutatore estendibile garantisce che la connessione della porta di commutatore estendibile e della scheda di rete a cui si fa riferimento nelle porte di destinazione non verrà eliminata fino al completamento dell'operazione di invio o ricezione del pacchetto.

Inoltre, dopo il commit delle modifiche per le porte di destinazione, le porte di destinazione non possono essere rimosse e solo il membro IsExcluded della struttura NDIS_SWITCH_PORT_DESTINATION di una porta di destinazione può essere modificato. Per altre informazioni, vedere Esclusione del recapito dei pacchetti alle porte di destinazione estendibili.

Nota Per motivi di prestazioni, l'estensione non deve chiamare la funzione UpdateNetBufferListDestinations per eseguire il commit delle modifiche a un pacchetto con una sola porta di destinazione. L'estensione chiama invece AddNetBufferListDestination per eseguire il commit delle modifiche alla porta di destinazione del pacchetto.
 
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

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest

OID_SWITCH_NIC_DELETE