Anzeigen empfangener Ethernet-Frames

Der Windows TCP/IP-Protokolltreiber erlegt eine Reihe von Anforderungen für den Empfang von Ethernet-Frames auf. Jeder Treiber, der aus dem Ursprung stammt, erhält Hinweise auf Ethernet-Frames oder ändert Hinweise auf zugrunde liegende Treiber muss die allgemeinen Anforderungen unterstützen, die TCP/IP auferlegt. Zu diesen Treibern gehören Ethernet-Miniporttreiber, MUX-Zwischentreiber und Filtertreiber.

Hinweis Wenn ein Treiber diese Anforderungen nicht erfüllt, können sich überlastende Treiber (z. B. TCP/IP-Transport, MUX-Zwischentreiber und Filtertreiber) unvorhersehbar verhalten.

Treiber, die Ethernet-Empfangsanzeigen enthalten, müssen die folgenden Anforderungen unterstützen:

  • Der Treiber muss eine NET_BUFFER_LIST-Struktur für den empfangenen Ethernet-Frame zuweisen. Jede NET_BUFFER_LIST-Struktur muss die Out-of-Band-Daten (OOB) enthalten, die im NetBufferListInfo-Member des für die jeweilige Verwendung erforderlichen NET_BUFFER_LIST definiert sind.

  • Der Treiber muss eine NET_BUFFER-Struktur für den Frame zuordnen und mit einer NET_BUFFER_LIST-Struktur verknüpfen. Der Ethernet-Miniport muss einer NET_BUFFER_LIST Struktur genau eine NET_BUFFER Struktur zuweisen, wenn empfangene Daten angegeben werden. Diese Einschränkung gilt nur für den Ethernet-Empfangspfad. Sie gilt nicht für andere Medientypen, z. B. die native 802.11-WLAN-Schnittstelle. oder NDIS im Allgemeinen.

  • Ab NDIS 6.1 kann in bestimmten Szenarien eine NET_BUFFER-Struktur mehreren Speicherdeskriptorlisten (MDLs) für den empfangenen Ethernet-Frame zugeordnet werden. Obwohl eine NET_BUFFER_LIST-Struktur eine einzelne NET_BUFFER-Struktur enthalten muss, ermöglicht es dem Treiber, die empfangenen Paketdaten durch die Verwendung mehrerer MDLs in separate Puffer aufzuteilen.

    Beispielsweise teilen Ethernet-Treiber, die die Header-Daten-Split-Schnittstelle unterstützen, einen empfangenen Ethernet-Frame auf, indem sie eine verknüpfte Liste mehrerer MDLs verwenden, die einer einzelnen NET_BUFFER-Struktur zugeordnet sind. Weitere Informationen finden Sie unter Header-Data Split.

    Aus Gründen der Einfachheit und Leistung wird dringend empfohlen, dass Treiber, die keine Header-Datenteilung unterstützen, nur eine MDL für jede NET_BUFFER Struktur verwenden.

    Hinweis In NDIS 6.0 für Windows Vista darf jede NET_BUFFER-Struktur nur eine MDL enthalten.

  • Treiber dürfen empfangene Ethernet-Frames nicht in der Mitte des IP-Headers, IPv4-Optionen, IPsec-Headers, IPv6-Erweiterungsheaders oder Protokollheaders der oberen Ebene aufteilen, es sei denn, die erste MDL enthält mindestens so viele Bytes wie NDIS für die Lookaheadgröße angegeben.

NDIS-Protokoll- und Filtertreiber müssen geteilte Ethernet-Frames in Empfangsanzeigen unterstützen, wenn diese geteilten Frames den Einschränkungen entsprechen, die im vorherigen Listenelement definiert sind. Die Einschränkungen stellen sicher, dass die Protokoll- und Filtertreiber mit zukünftigen Windows-Versionen kompatibel sind.