NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO unione (ndis.h)

L'unione NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO specifica le informazioni per l'inoltro di un pacchetto a una o più porte estendibili Hyper-V.

Queste informazioni sono contenute nei dati fuori banda (OOB) della struttura di NET_BUFFER_LIST del pacchetto.

Sintassi

typedef union _NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO {
  UINT64 AsUINT64;
  struct {
    UINT32 NumAvailableDestinations : 16;
    UINT32 SourcePortId : 16;
    UINT32 SourceNicIndex : 8;
    UINT32 NativeForwardingRequired : 1;
#if ...
    UINT32 Reserved1 : 1;
#else
    UINT32 Reserved1 : 2;
#endif
    UINT32 IsPacketDataSafe : 1;
    UINT32 SafePacketDataSize : 12;
    UINT32 IsPacketDataUncached : 1;
    UINT32 IsSafePacketDataUncached : 1;
    UINT32 Reserved2 : 7;
  };
} NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO, *PNDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO;

Members

AsUINT64

Valore di NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO a 64 bit completo.

NumAvailableDestinations

Valore che specifica il numero di porte di destinazione estendibili inutilizzate all'interno di una struttura NET_BUFFER_LIST . Per altre informazioni, vedere la sezione Osservazioni.

SourcePortId

Identificatore della porta di commutatore estendibile di origine da cui è stata generata la NET_BUFFER_LIST .

SourceNicIndex

Valore UINT32 che specifica l'indice della scheda di rete di origine connessa alla porta di commutatore estendibile specificata dal membro SourcePortId .

Per altre informazioni su questo valore di indice, vedere Valori dell'indice della scheda di rete.

NativeForwardingRequired

Se questo membro è impostato su TRUE, il pacchetto è un pacchetto NVGRE e il componente HNV (Hyper-V Network Virtualization) del commutatore estendibile Hyper-V inoltra questo pacchetto. Per altre informazioni, vedere Inoltro ibrido.

Questo flag non deve essere scritto in da alcuna estensione.

Nota Questo flag è disponibile solo in NDIS 6.40 e versioni successive.

Reserved1

Questo membro è riservato per l'uso futuro da parte di NDIS.

Questo membro è riservato per l'uso futuro da parte di NDIS.

IsPacketDataSafe

Se questo membro è impostato su TRUE, tutti i dati del pacchetto provengono dalla memoria host attendibile.

SafePacketDataSize

Valore che specifica il numero di byte consecutivi nei dati dei pacchetti che si trovano nella memoria host attendibile. Questo valore si trova in unità di byte dall'inizio dei dati del pacchetto. Il resto dei dati del pacchetto (se presente) dopo il valore SafePacketDataSize si trova nella memoria condivisa non attendibile a cui si accede dalle partizioni figlio e padre Hyper-V.

Per altre informazioni, vedere la sezione Osservazioni.

Nota Questo membro è valido solo se il membro IsPacketDataSafe è impostato su FALSE.

IsPacketDataUncached

Se questo flag non è impostato, l'intero pacchetto viene memorizzato nella cache. Se è impostata, parte o tutti i dati non vengono memorizzati nella cache. Se impostato, controllare il campo IsSafePacketDataUncached per verificare se almeno la parte SafePacketData viene memorizzata nella cache.

IsSafePacketDataUncached

Se il flag IsPacketDataUncached è impostato, questo campo indica se la parte SafePacketData del pacchetto viene memorizzata nella cache. In tal caso, vedere il campo SafePacketDataSize per il numero di byte memorizzati nella cache.

Reserved2

Questo membro è riservato per l'uso futuro da parte di NDIS.

Commenti

Le estensioni di commutatori estendibili possono usare la macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL per accedere all'unione NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO in una struttura NET_BUFFER_LIST .

Il membro NumAvailableDestinations dell'unione NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO specifica il numero di elementi della porta di destinazione estendibili inutilizzati all'interno di una struttura NET_BUFFER_LIST . Ogni porta di destinazione del commutatore estendibile viene specificata da un elemento NDIS_SWITCH_PORT_DESTINATION all'interno della strutturaNDIS_SWITCH_FORWARDING_DESTINATION_ARRAY di una struttura NET_BUFFER_LIST. L'estensione del commutatore estendibile chiama GetNetBufferListDestinations per ottenere la NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY corrente in una struttura NET_BUFFER_LIST .

Il membro NativeForwardingRequired specifica se il pacchetto è un pacchetto NVGRE o meno. Se è TRUE, il pacchetto è un pacchetto NVGRE e l'estensione di inoltro non determina la matrice di porte di destinazione di inoltro del pacchetto, anche se può aggiungere o escludere porte di destinazione nella matrice. Per altre informazioni, vedere Inoltro ibrido.

Il flag IsPacketDataUncached può aiutare le estensioni di commutatori estendibili a determinare se parte o tutti i dati del pacchetto vengono memorizzati nella cache o meno. Se questo flag è impostato, parte o tutti i dati non vengono memorizzati nella cache e il flag IsSafePacketDataUncached indica l'estensione se la parte dei dati dei pacchetti sicuri viene memorizzata nella cache. Se i dati dei pacchetti sicuri vengono memorizzati nella cache, il membro SafePacketDataSize specifica il numero di byte memorizzati nella cache.

SafePacketDataSize specifica le dimensioni dei dati del pacchetto che si trovano in locale o attendibile, memoria nel sistema operativo padre della partizione padre Hyper-V. Questa memoria non è accessibile dalla partizione figlio. Pertanto, è considerato "sicuro" dagli aggiornamenti non sincronizzati dal sistema operativo guest in esecuzione in tale partizione.

Se un'estensione del commutatore estendibile richiede uno spazio più attendibile per controllare i dati dei pacchetti, è necessario seguire questa procedura:

  1. L'estensione deve duplicare la struttura NET_BUFFER_LIST del pacchetto allocando una struttura NET_BUFFER_LIST e NET_BUFFER. L'estensione chiama quindi NdisCopyFromNetBufferToNetBuffer per duplicare la struttura NET_BUFFER del pacchetto. Se questa funzione viene completata correttamente, i dati del pacchetto vengono copiati nella memoria attendibile.
  2. L'estensione deve chiamare CopyNetBufferListInfo per copiare i dati OOB del pacchetto duplicato.
  3. Dopo aver duplicato il pacchetto originale, l'estensione deve ottenere l'unione NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO nel pacchetto duplicato usando la macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL . L'estensione deve impostare il membro IsPacketDataSafe su TRUE.
Per altre informazioni su come duplicare i pacchetti nell'interfaccia del commutatore estendibile, vedere Traffico di pacchetti di origine.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.30 e versioni successive.
Intestazione ndis.h (includere Ndis.h)

Vedi anche

Estensioni di inoltro

Inoltro di pacchetti a porte di commutatore estendibili Hyper-V

Inoltro di pacchetti a schede di rete fisiche

GetNetBufferListDestinations

Inoltro ibrido

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER_LIST

NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL

Panoramica del commutatore estendibile Hyper-V