Freigeben über


NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO Union (ndis.h)

Die NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO Union gibt die Informationen zum Weiterleiten eines Pakets an einen oder mehrere erweiterbare Hyper-V-Switchports an.

Diese Informationen sind in den Out-of-Band-Daten (OOB) der NET_BUFFER_LIST Struktur des Pakets enthalten.

Syntax

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;

Member

AsUINT64

Der vollständige 64-Bit-NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO Wert.

NumAvailableDestinations

Ein Wert, der die Anzahl der nicht verwendeten erweiterbaren Switch-Zielport-Elemente innerhalb einer NET_BUFFER_LIST-Struktur angibt. Weitere Informationen finden Sie im Abschnitt mit Hinweisen.

SourcePortId

Der Bezeichner des erweiterbaren Quellswitchports, von dem der NET_BUFFER_LIST stammt.

SourceNicIndex

Ein UINT32-Wert, der den Index des Quellnetzwerkadapters angibt, der mit dem erweiterbaren Switchport verbunden ist, der vom SourcePortId-Member angegeben wird.

Weitere Informationen zu diesem Indexwert finden Sie unter Netzwerkadapterindexwerte.

NativeForwardingRequired

Wenn dieses Element auf TRUE festgelegt ist, ist das Paket ein NVGRE-Paket, und die Hyper-V-Netzwerkvirtualisierungskomponente (HNV) des erweiterbaren Hyper-V-Switches leitet dieses Paket weiter. Weitere Informationen finden Sie unter Hybridweiterleitung.

Dieses Flag darf von keiner Erweiterung angeschrieben werden.

Hinweis Dieses Flag ist nur in NDIS 6.40 und höher verfügbar.

Reserved1

Dieses Element ist für die zukünftige Verwendung durch NDIS reserviert.

Dieses Element ist für die zukünftige Verwendung durch NDIS reserviert.

IsPacketDataSafe

Wenn dieser Member auf TRUE festgelegt ist, stammen alle Paketdaten aus dem vertrauenswürdigen Hostspeicher.

SafePacketDataSize

Ein Wert, der die Anzahl der aufeinanderfolgenden Bytes in den Paketdaten angibt, die sich im vertrauenswürdigen Hostspeicher befinden. Dieser Wert ist vom Anfang der Paketdaten in Byteseinheiten enthalten. Die restlichen Paketdaten (falls vorhanden) nach dem Wert SafePacketDataSize befinden sich im nicht vertrauenswürdigen freigegebenen Arbeitsspeicher, auf den die untergeordneten und übergeordneten Hyper-V-Partitionen zugreifen.

Weitere Informationen finden Sie im Abschnitt mit Hinweisen.

Hinweis Dieser Member ist nur gültig, wenn das IsPacketDataSafe-Element auf FALSE festgelegt ist.

IsPacketDataUncached

Wenn dieses Flag nicht festgelegt ist, werden die gesamten Paketdaten zwischengespeichert. Wenn sie festgelegt ist, werden ein Teil oder alle Daten nicht zwischengespeichert. Wenn festgelegt, überprüfen Sie das Feld IsSafePacketDataUncached , um festzustellen, ob mindestens der SafePacketData-Teil zwischengespeichert ist.

IsSafePacketDataUncached

Wenn das IsPacketDataUncached-Flag festgelegt ist, gibt dieses Feld an, ob der SafePacketData-Teil des Pakets zwischengespeichert wird. Wenn ja, sehen Sie sich das Feld SafePacketDataSize an, wie viele Bytes zwischengespeichert werden.

Reserved2

Dieses Element ist für die zukünftige Verwendung durch NDIS reserviert.

Hinweise

Erweiterbare Switcherweiterungen können das makro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL verwenden, um auf die NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO Union in einer NET_BUFFER_LIST-Struktur zuzugreifen.

Der NumAvailableDestinations-Member der NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO Union gibt die Anzahl der nicht verwendeten erweiterbaren Switch-Zielportelemente innerhalb einer NET_BUFFER_LIST-Struktur an. Jeder erweiterbare Switchzielport wird durch ein NDIS_SWITCH_PORT_DESTINATION-Element innerhalb der NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY-Struktur einer NET_BUFFER_LIST-Struktur angegeben. Die erweiterbare Switcherweiterung ruft GetNetBufferListDestinations auf, um die aktuelle NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY in einer NET_BUFFER_LIST-Struktur abzurufen.

Das NativeForwardingRequired-Element gibt an, ob es sich bei dem Paket um ein NVGRE-Paket handelt oder nicht. Wenn es TRUE ist, ist das Paket ein NVGRE-Paket, und die Weiterleitungserweiterung bestimmt nicht das Weiterleitungszielportarray des Pakets, obwohl sie Zielports im Array hinzufügen oder ausschließen kann. Weitere Informationen finden Sie unter Hybridweiterleitung.

Das IsPacketDataUncached-Flag kann erweiterbare Switcherweiterungen dabei unterstützen, zu bestimmen, ob ein Teil oder alle Paketdaten zwischengespeichert werden oder nicht. Wenn dieses Flag festgelegt ist, werden ein Teil oder alle Daten nicht zwischengespeichert, und das IsSafePacketDataUncached-Flag teilt der Erweiterung mit, ob der Datenteil des sicheren Pakets zwischengespeichert wird. Wenn die Daten des sicheren Pakets zwischengespeichert werden, gibt das SafePacketDataSize-Element an, wie viele Bytes zwischengespeichert werden.

SafePacketDataSize gibt die Größe der Paketdaten an, die sich im lokalen oder vertrauenswürdigen Arbeitsspeicher im übergeordneten Betriebssystem der übergeordneten Hyper-V-Partition befinden. Auf diesen Arbeitsspeicher kann die untergeordnete Partition nicht zugreifen. Daher gilt es als "sicher" vor nicht synchronisierten Updates durch das Gastbetriebssystem, das in dieser Partition ausgeführt wird.

Wenn eine erweiterbare Switcherweiterung mehr vertrauenswürdigen Speicherplatz benötigt, um die Paketdaten zu überprüfen, müssen sie die folgenden Schritte ausführen:

  1. Die Erweiterung muss die NET_BUFFER_LIST Struktur des Pakets duplizieren, indem eine NET_BUFFER_LIST - und NET_BUFFER-Struktur zugewiesen wird. Die Erweiterung ruft dann NdisCopyFromNetBufferToNetBuffer auf, um die NET_BUFFER Struktur des Pakets zu duplizieren. Wenn diese Funktion erfolgreich abgeschlossen wurde, werden die Daten des Pakets in den vertrauenswürdigen Arbeitsspeicher kopiert.
  2. Die Erweiterung muss CopyNetBufferListInfo aufrufen, um die OOB-Daten des Pakets in das duplizierte Paket zu kopieren.
  3. Nachdem das ursprüngliche Paket dupliziert wurde, muss die Erweiterung die NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO Union im duplizierten Paket mithilfe des makros NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL abrufen. Die Erweiterung muss das IsPacketDataSafe-Element auf TRUE festlegen.
Weitere Informationen zum Duplizieren von Paketen in der erweiterbaren Switch-Schnittstelle finden Sie unter Ursprungsdatenverkehr.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.30 und höher.
Kopfzeile ndis.h (einschließlich Ndis.h)

Weitere Informationen

Weiterleitungserweiterungen

Weiterleiten von Paketen an erweiterbare Hyper-V-Switchports

Weiterleiten von Paketen an physische Netzwerkadapter

GetNetBufferListDestinations

Hybridweiterleitung

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER_LIST

NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL

Übersicht über den erweiterbaren Hyper-V-Switch