Festlegen NET_BUFFER_LIST Informationen
Ein Header-Daten-Split-Anbieter muss die Flags für Headerdatenteilung im NblFlags-Member der NET_BUFFER_LIST-Strukturen für Empfangsanzeigen festlegen. Für geteilte Frames muss eine NIC auch die physische Adresse des Datenteils des empfangenen Frames im DataPhysicalAddress-Member jeder NET_BUFFER Struktur angeben.
Hinweis Ein Miniporttreiber kann den DataPhysicalAddress-Member der NET_BUFFER-Struktur festlegen, auch wenn der NET_BUFFER keinem geteilten Frame zugeordnet ist. In diesem Fall enthält DataPhysicalAddress die physische Adresse der Header-MDL.
Der Header-Daten-Split-Anbieter kombiniert die Flags im NblFlags-Member mit einem bitweisen OR-Vorgang.
Der Header-Daten-Split-Anbieter kann die folgenden Flags festlegen, auch wenn er keinen Frame aufteilt:
NDIS_NBL_FLAGS_IS_IPV4
Alle Frames im NET_BUFFER_LIST sind IPv4-Frames. Wenn dieses Flag festgelegt ist, darf das NDIS_NBL_FLAGS_IS_IPV6-Flag nicht festgelegt werden.
NDIS_NBL_FLAGS_IS_IPV6
Alle Frames im NET_BUFFER_LIST sind IPv6-Frames. Wenn dieses Flag festgelegt ist, darf das NDIS_NBL_FLAGS_IS_IPV4-Flag nicht festgelegt werden.
NDIS_NBL_FLAGS_IS_TCP
Alle Frames im NET_BUFFER_LIST sind TCP-Frames. Wenn dieses Flag festgelegt ist, darf NDIS_NBL_FLAGS_IS_UDP nicht festgelegt werden. Und entweder NDIS_NBL_FLAGS_IS_IPV4 oder NDIS_NBL_FLAGS_IS_IPV6 muss festgelegt werden.
NDIS_NBL_FLAGS_IS_UDP
Alle Frames im NET_BUFFER_LIST sind UDP-Frames. Wenn dieses Flag festgelegt ist, darf NDIS_NBL_FLAGS_IS_TCP nicht festgelegt werden. Und entweder NDIS_NBL_FLAGS_IS_IPV4 oder NDIS_NBL_FLAGS_IS_IPV6 muss festgelegt werden.
Jeder NDIS-Treiber kann die obigen Flags zum Debuggen, Testen oder zu anderen Zwecken festlegen. Wenn ein Treiber diese Flags festlegt, müssen die Werte den Inhalt des empfangenen Frames genau beschreiben. Das Festlegen dieser Flags wird empfohlen.
Der Header-Daten-Split-Anbieter kann die folgenden Flags für header-daten-split festlegen:
NDIS_NBL_FLAGS_HD_SPLIT
Der Header und die Daten werden in alle Ethernet-Frames aufgeteilt, die der NET_BUFFER_LIST-Struktur zugeordnet sind.
NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER
Alle Frames in der NET_BUFFER_LIST-Struktur werden am Anfang des Protokollheaders der oberen Ebene aufgeteilt. Wenn dieses Flag festgelegt ist, muss entweder NDIS_NBL_FLAGS_IS_IPV4 oder NDIS_NBL_FLAGS_IS_IPV6 festgelegt werden. Außerdem kann entweder NDIS_NBL_FLAGS_IS_TCP oder NDIS_NBL_FLAGS_IS_UDP festgelegt werden. Und NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD darf nicht festgelegt werden.
NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD
Alle Frames in einer NET_BUFFER_LIST-Struktur werden am Anfang der TCP-Nutzlast oder am Anfang der UDP-Nutzlast aufgeteilt. Wenn dieses Flag festgelegt ist, muss entweder NDIS_NBL_FLAGS_IS_IPV4 oder NDIS_NBL_FLAGS_IS_IPV6 festgelegt werden. Es muss entweder NDIS_NBL_FLAGS_IS_TCP oder NDIS_NBL_FLAGS_IS_UDP festgelegt werden. Außerdem darf NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER nicht festgelegt werden.
Wenn der Header-Daten-Split-Anbieter keinen Frame aufteilt, muss der Frame mit den folgenden Flags angegeben werden, die in NblFlags deaktiviert sind:
NDIS_NBL_FLAGS_HD_SPLIT
NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER
NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD