MB-Unterstützung für die Verarbeitung von unformatierten IP-Paketen
MB-Miniporttreiber, die Raw-IP-Paketframes in ihrem Sende-/Empfangsdatenpfad unterstützen, sollten die folgenden Richtlinien beachten:
Net Buffer List (NBL)-Flags für die VERARBEITUNG von RAW-IP-Paketen
Für IPv4-Pakete:
Der NblFlags-Member der NET_BUFFER_LIST-Struktur muss auf NDIS_NBL_FLAGS_IS_IPV4 festgelegt werden.
Der NetBufferListFrameType-Member der NET_BUFFER_LIST-Struktur muss in Netzwerkbytereihenfolge auf 0x0800 (Ethertype IPv4) festgelegt werden.
Für IPv6-Pakete:
Der NblFlags-Member NET_BUFFER_LIST-Struktur muss auf NDIS_NBL_FLAGS_IS_IPV6 festgelegt werden.
Der NetBufferListFrameType-Member der NET_BUFFER_LIST-Struktur muss in der Netzwerkbytereihenfolge auf 0x86dd (Ethertype IPv6) festgelegt werden.
Miniport-Treiber können das NdisSetNblFlag-Makro verwenden, um Flags in der Netzpufferliste festzulegen. In der folgenden Zeile wird veranschaulicht, wie das IPv4-Paketflag in der Netzpufferliste festgelegt wird:
NdisSetNblFlag(pNbl, NDIS_NBL_FLAGS_IS_IPV4);
Miniporttreiber können die NET_BUFFER_LIST_INFO verwenden, um Informationen in einer Netzpufferliste abzurufen und festzulegen. In der folgenden Zeile wird veranschaulicht, wie Sie den NetBufferListFrameType-OOB in der Netzwerkpufferliste für IPV4-Pakete ändern:
Value = ConvertToNetworkByteOrder(0x0800);
NET_BUFFER_LIST_INFO(pNbl, NetBufferListFrameType) = Value;
Verarbeitung des Sendepfads
Der MB-Dienst legt diese Flags in der NBL fest, bevor die Liste an den Miniporttreiber übergeben wird, der über das Netzwerk gesendet werden soll. Der Miniporttreiber kann die Flags in der Eingabe-NBL überprüfen.
Verarbeitung des Empfangspfads
Miniporttreiber sollten Flags in der NBL festlegen, bevor die NBL für empfangene Pakete an den MB-Dienst übergeben wird.
Wenn Ihr Miniporttreiber während der Entwicklungsphase des Treibers rohe IP-Pakete implementiert, aber weiterhin DHCP-Server-Spoofing aktiviert ist (EnableDhcp = 1), sollte Ihr Miniporttreiber Folgendes sicherstellen:
Die Hardwareadresse und die in der DHCP-Antwort des Miniporttreibers festgelegte Länge sollten mit den Werten der Elemente CurrentMacAddress und MacAddressLength übereinstimmen, die vom Miniporttreiber in der NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES-Struktur angegeben werden.
Die Transaktions-ID (das xid-Element ) der DHCP-Antwort des Miniporttreibers sollte genau mit der Transaktions-ID übereinstimmen, die in der DHCP-Anforderungsnachricht vom Client festgelegt wurde.