Hyper-V Extensible Switch Forwarding Context-Datentypen
Die NET_BUFFER_LIST-Struktur für jedes Paket, das den Datenpfad des erweiterbaren Hyper-V-Switches durchläuft, enthält Out-of-Band-Daten (OOB). Diese Daten geben den Quellport an, von dem das Paket stammt, sowie einen oder mehrere Zielports für die Paketübermittlung. Diese OOB-Daten werden als erweiterbarer Switchweiterleitungskontext bezeichnet.
Die folgenden Datentypen wurden für den Zugriff auf den erweiterbaren Switchweiterleitungskontext innerhalb der NET_BUFFER_LIST-Struktur eines Pakets deklariert:
NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO
Dies ist eine 64-Bit-Union, die die Weiterleitungsmerkmale eines Pakets enthält. Diese Daten enthalten die Bezeichner für den Quellport und die Netzwerkadapterverbindung, von der das Paket stammt. Diese Daten enthalten auch die Anzahl nicht verwendeter Elemente, die im Zielportarray verfügbar sind.
Die erweiterbare Switcherweiterung kann mithilfe des Makros NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL auf diese Daten zugreifen.
NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY
Diese Struktur definiert das Zielportarray für das Paket. Jedes Element in diesem Array ist als NDIS_SWITCH_PORT_DESTINATION-Struktur formatiert.
Die NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY-Struktur enthält Elemente, die die aktuelle Anzahl der Gesamtanzahl von Elementen sowie die Anzahl der verwendeten Elemente im Array angeben.
Die erweiterbare Switcherweiterung kann dieses Array abrufen, indem sie die GetNetBufferListDestinations-Funktion aufruft . Wenn der Treiber elemente im Array für ein Paket mit mehreren Zielports hinzufügt oder ändert, muss er die UpdateNetBufferListDestinations-Funktion aufrufen. Diese Funktion committet diese Änderungen an das Zielportarray im Weiterleitungskontext des Pakets.
Hinweis Um Änderungen an einem Paket mit nur einem Zielport zu committen, ist es für den Treiber effizienter, die AddNetBufferListDestination-Funktion aufzurufen.
NDIS_SWITCH_PORT_DESTINATION
Diese Struktur definiert einen Zielport für das Paket. Für Pakete mit einem einzelnen Zielport gibt es nur ein NDIS_SWITCH_PORT_DESTINATION-Element im Zielportarray. Für Pakete mit mehreren Zielports gibt es eines oder mehrere dieser Elemente im Array.
Nachdem die erweiterbare Switcherweiterung GetNetBufferListDestinations aufgerufen hat, um das Zielportarray des Pakets abzurufen, kann sie mithilfe des Makros NDIS_SWITCH_PORT_DESTINATION_AT_ARRAY_INDEX auf einzelne Elemente im Array zugreifen.