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.
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.
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:
- 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.
- Die Erweiterung muss CopyNetBufferListInfo aufrufen, um die OOB-Daten des Pakets in das duplizierte Paket zu kopieren.
- 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.
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
Weiterleiten von Paketen an erweiterbare Hyper-V-Switchports
Weiterleiten von Paketen an physische Netzwerkadapter
NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für