Enumerationsschlüsselwörter

NDIS 6.0 und höhere Versionen von NDIS bieten standardisierte Enumerationsschlüsselwörter für Miniporttreiber von Netzwerkgeräten. Enumerationsschlüsselwörter sind Werten zugeordnet, die als Liste in einem Menü angezeigt werden.

Das folgende Beispiel zeigt eine INF-Dateidefinition für eine Enumeration Schlüsselwort (keyword).

HKR, Ndi\params\<SubkeyName>, ParamDesc, 0, "%<SubkeyName>%"
HKR, Ndi\params\<SubkeyName>, Type, 0, "enum"
HKR, Ndi\params\<SubkeyName>, Default, 0, "3"
HKR, Ndi\params\<SubkeyName>, Optional, 0, "0"
HKR, Ndi\params\<SubkeyName>\enum, "0", 0, "%Disabled%"
HKR, Ndi\params\<SubkeyName>\enum, "1", 0, "%Tx Enabled%"
HKR, Ndi\params\<SubkeyName>\enum, "2", 0, "%Rx Enabled%"
HKR, Ndi\params\<SubkeyName>\enum, "3", 0, "%Rx & Tx Enabled%"

Die allgemeinen Enumerationsschlüsselwörter sind:

*SpeedDuplex
Geschwindigkeits- und Duplexeinstellungen, die von einem Gerät unterstützt werden. Die Geräte-INF-Datei sollte nur die Einstellungen auflisten, die das zugeordnete Gerät unterstützt. Das heißt, bei einem Ethernet 10/100-Gerät, das nur den Vollduplexmodus unterstützen kann, sollten Einstellungen für Gigabit oder höhere Geschwindigkeiten oder Halbduplex nicht in der zugehörigen INF-Datei aufgeführt werden.

Geschwindigkeitswerte, die nicht bereits mit aufgezählten Werten von 0 bis 10 definiert sind, können als Zahl festgelegt werden, die der Wert direkt in MBit/s ist. Direkte Werte müssen mindestens 1.000 MBit/s (1 GBit/s) und höher sein. Hier sind einige Beispiele für die direkte Angabe der Geschwindigkeit:

SpeedDuplex-Wert Resultierende Geschwindigkeit
1\.000 1 GBit/s
10.000 10 GBit/s
25,000 25GBit/s
50.000 50 GBit/s
100.000 100 GBit/s

*Flowcontrol
Die Möglichkeit für das Gerät, die Ablaufsteuerung im Sende- oder Empfangspfad zu aktivieren oder zu deaktivieren.

Hinweis Ethernet-Geräte unterstützen heute die Flusssteuerung, und die Windows 8 In-Box-Treiber für LAN verfügen standardmäßig über aktivierte Flusssteuerung. Wenn ein Kerneldebugger an einen dieser LAN-Adapter angefügt wird, beginnt die NIC mit dem Pushen von Ablaufsteuerungspauseframes in das Netzwerk. Die meisten Netzwerkswitches reagieren, indem sie vorübergehend das Netzwerk für alle anderen Computer herunternehmen, die mit demselben Hub verbunden sind. Dies ist ein gängiges Entwicklungsszenario, und die Endbenutzererfahrung ist sowohl unerwünscht als auch schwierig zu diagnostizieren.

Hinweis Die Standardwerte für Client und Server sind nicht identisch. Weitere Informationen finden Sie in der Tabelle mit den Standardwerten unten.

Aus diesem Grund deaktiviert NDIS in Windows 8 und höher die Ablaufsteuerung automatisch, wenn das Debuggen auf dem Computer aktiviert ist (z. B. durch Eingabe von bcdedit /set an der Befehlszeile). Wenn das Kerneldebuggen aktiviert ist und der Miniport NdisReadConfiguration aufruft und "*FlowControl" für den Schlüsselwortparameter übergibt, überschreibt NDIS den konfigurierten Wert und gibt null zurück.

Wenn Sie die Ablaufsteuerung beim Debuggen aktivieren müssen, stellt NDIS den Registrierungswert AllowFlowControlUnderDebugger bereit, um dies zu ermöglichen. Der Registrierungswert AllowFlowControlUnderDebugger verhindert, dass NDIS die Flusssteuerung deaktiviert, und ermöglicht niCs, ihr konfiguriertes Verhalten beizubehalten. Sie finden sie unter dem folgenden Registrierungsschlüssel:

HKEY_LOCAL_MACHINE\System\Currentcontrolset\Dienstleistungen\NDIS\Parameter

Legen Sie diesen Registrierungswert auf 0x00000001 fest.

Wenn er nicht vorhanden ist, können Sie einen Wert mit dem Namen AllowFlowControlUnderDebugger und dem Typ REG_DWORD erstellen und ihn auf 0x00000001 festlegen.

*PriorityVLANTag
Ein Wert, der angibt, ob das Gerät die Möglichkeit zum Einfügen der 802.1Q-Tags für Paketpriorität und virtuelle LANs (VLANs) aktiviert oder deaktiviert hat. Diese Schlüsselwort (keyword) gibt nicht an, ob das Gerät Paketpriorität oder VLAN-Tags aktiviert oder deaktiviert hat. Stattdessen wird Folgendes beschrieben:

  • Gibt an, ob das Gerät 802.1Q-Tags während eines Sendevorgangs einfügt
  • Ob 802.1Q-Taginformationen in den NET_BUFFER_LIST Out-of-Band-Informationen (OOB) verfügbar sind
  • Gibt an, ob das Gerät 802.1Q-Tags während Empfangsvorgängen in OOB kopiert

Der Miniporttreiber sollte den 802.1Q-Header unabhängig von der *PriorityVLANTag-Einstellung aus allen Empfangspaketen entfernen. Wenn der 802.1Q-Header in einem Paket verbleibt, können andere Treiber das Paket möglicherweise nicht ordnungsgemäß analysieren.

Wenn das Rx-Flag im Empfangspfad aktiviert ist, sollte der Miniporttreiber den entfernten 802.1Q-Header in OOB kopieren.

Andernfalls sollte der Miniporttreiber den entfernten 802.1Q-Header nicht in OOB kopieren, wenn das Rx-Flag deaktiviert ist.

Wenn das Tx-Flag für den Übertragungspfad aktiviert ist, sollte der Miniporttreiber die folgenden Schritte ausführen:

  • Fügen Sie den 802.1Q-Header in jedes ausgehende Paket ein, und füllen Sie es mit den Daten aus OOB auf (wenn daten ungleich Null in OOB vorhanden sind).
  • Bewerben Sie entsprechende MacOptions in NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES (NDIS_MAC_OPTION_8021P_PRIORITY und NDIS_MAC_OPTION_8021Q_VLAN).

Andernfalls, wenn das Tx-Flag deaktiviert ist, dann:

  • Der Miniportfilter sollte keine 802.1Q-Informationen in OOB berücksichtigen (und daher kein Tag einfügen).
  • Der Miniportfilter sollte keine entsprechenden MacOptions in NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES ankündigen.

Hinweis Wenn der Miniporttreiber NDIS Quality of Service (QoS) unterstützt, muss er auch den Wert *QOS Schlüsselwort (keyword) lesen. Basierend auf dem Wert *QOS Schlüsselwort (keyword) werden die Werte *PriorityVLANTag Schlüsselwort (keyword) unterschiedlich interpretiert. Weitere Informationen finden Sie unter Standardisierte INF-Schlüsselwörter für NDIS QoS.

*InterruptModeration
Ein Wert, der beschreibt, ob das Gerät die Unterbrechungsmoderation aktiviert oder deaktiviert hat. Interruptmoderationsalgorithmen sind geräteabhängig. Der Gerätehersteller kann nicht standardisierte Schlüsselwörter verwenden, um algorithmische Einstellungen zu unterstützen. Weitere Informationen zur Interruptmoderation finden Sie unter InterruptModeration.

*RSS
Ein Wert, der beschreibt, ob das Gerät die empfangsseitige Skalierung (RSS) aktiviert oder deaktiviert hat. Weitere Informationen zu RSS finden Sie unter Empfangsseitige Skalierung.

*HeaderDataSplit
Ein Wert, der beschreibt, ob das Gerät die Header-Datenteilung aktiviert oder deaktiviert hat. Weitere Informationen zur Header-Datenteilung finden Sie unter Header-Data Split.

Die folgenden Schlüsselwörter sind Verbindungsoffloaddiensten zugeordnet:

*TCPConnectionOffloadIPv4

*TCPConnectionOffloadIPv6

Weitere Informationen zu den Verbindungsauslagerungsschlüsselwörtern finden Sie unter Verwenden von Registrierungswerten zum Aktivieren und Deaktivieren der Verbindungsauslagerung.

Die folgenden Schlüsselwörter sind Aufgabenoffloaddiensten zugeordnet:

*IPChecksumOffloadIPv4

*TCPChecksumOffloadIPv4

*TCPChecksumOffloadIPv6

*UDPChecksumOffloadIPv4

*UDPChecksumOffloadIPv6

*LsoV1IPv4

*LsoV2IPv4

Hinweis Für Geräte, die sowohl großes Senden von Version 1 (LSOv1) als auch LSOv2 über IPv4 unterstützen, sollte nur der *LsoV2IPv4-Schlüsselwort (keyword) in der INF-Datei und den Registrierungswerten verwendet werden. Wenn beispielsweise die *LsoV2IPv4-Schlüsselwort (keyword) in der INF-Datei und der *LsoV1IPv4-Schlüsselwort (keyword) in der Registrierung angezeigt wird (oder umgekehrt), hat der *LsoV2IPv4-Schlüsselwort (keyword) immer Vorrang.

*LsoV2IPv6

*IPsecOffloadV1IPv4

*IPsecOffloadV2

*IPsecOffloadV2IPv4

*TCPUDPChecksumOffloadIPv4

*TCPUDPChecksumOffloadIPv6

Weitere Informationen zu den TCP/IP-Auslagerungsschlüsselwörtern finden Sie unter Verwenden von Registrierungswerten zum Aktivieren und Deaktivieren der Aufgabenauslagerung.

Die Spalten in der Tabelle am Ende dieses Themas beschreiben die folgenden Attribute für Enumerationsschlüsselwörter:

Name des Unterschlüssels
Der Name des Schlüsselwort (keyword), den Sie in der INF-Datei angeben müssen und der in der Registrierung angezeigt wird.

ParamDesc
Der Anzeigetext, der SubkeyName zugeordnet ist.

Wert
Der ganzzahlige Enumerationswert, der jeder Option in der Liste zugeordnet ist. Dieser Wert wird unter NDI\params\SubkeyName\Value gespeichert.

EnumDesc
Der Anzeigetext, der jedem Wert zugeordnet ist, der im Menü angezeigt wird.

Standard
Der Standardwert für das Menü.

In der folgenden Tabelle sind alle Schlüsselwörter aufgeführt und die Werte beschrieben, die ein Treiber für die obigen Attribute verwenden muss. Weitere Informationen zu einem Schlüsselwort (keyword) finden Sie im Schlüsselwort (keyword) in der WDK-Dokumentation.

Name des Unterschlüssels ParamDesc Wert EnumDesc
*SpeedDuplex Geschwindigkeit & Duplex 0 (Standard) Automatische Aushandlung
1 Halbduplex mit 10 MBit/s
2 Vollduplex mit 10 MBit/s
3 Halbduplex mit 100 MBit/s
4 Vollduplex mit 100 MBit/s
5 Halbduplex mit 1,0 GBit/s
6 Vollduplex mit 1,0 GBit/s
7 Vollduplex mit 10 GBit/s
8 Vollduplex mit 20 GBit/s
9 Vollduplex mit 40 GBit/s
10 Vollduplex mit 100 GBit/s
*Flowcontrol Flusssteuerung 0 (Serverstandard) Tx & Rx deaktiviert
1 Tx aktiviert
2 Rx aktiviert
3 (Clientstandard) Rx & Tx aktiviert
4 Automatische Aushandlung
*PriorityVLANTag Paketpriorität & VLAN 0 Paketpriorität & VLAN deaktiviert
1 Paketpriorität aktiviert
2 VLAN-fähig
3 (Standard) Paketpriorität & VLAN aktiviert
*InterruptModeration Unterbrechung der Moderation 0 Disabled
1 (Standard) Aktiviert
*RSS Receive Side Scaling 0 Disabled
1 (Standard) Aktiviert
*HeaderDataSplit Aufteilen von Headerdaten 0 (Standard) Disabled
1 Aktiviert
*TCPConnectionOffloadIPv4 TCP-Verbindungsauslagerung (IPv4) 0 Disabled
1 (Standard) Aktiviert
*TCPConnectionOffloadIPv6 TCP-Verbindungsauslagerung (IPv6) 0 Disabled
1 (Standard) Aktiviert
*IPChecksumOffloadIPv4 IPv4-Prüfsummenauslagerung 0 Disabled
1 Tx aktiviert
2 Rx aktiviert
3 (Standard) Rx & Tx aktiviert
*TCPChecksumOffloadIPv4 TCP-Prüfsummenauslagerung (IPv4) 0 Disabled
1 Tx aktiviert
2 Rx aktiviert
3 (Standard) Rx & Tx aktiviert
*TCPChecksumOffloadIPv6 TCP-Prüfsummenauslagerung (IPv6) 0 Disabled
1 Tx aktiviert
2 Rx aktiviert
3 (Standard) Rx & Tx aktiviert
*UDPChecksumOffloadIPv4 UDP-Prüfsummenauslagerung (IPv4) 0 Disabled
1 Tx aktiviert
2 Rx aktiviert
3 (Standard) Rx & Tx aktiviert
*UDPChecksumOffloadIPv6 UDP-Prüfsummenauslagerung (IPv6) 0 Disabled
1 Tx aktiviert
2 Rx aktiviert
3 (Standard) Rx & Tx aktiviert
*LsoV1IPv4 Large Send Offload Version 1 (IPv4) 0 Disabled
1 (Standard) Aktiviert
*LsoV2IPv4 Large Send Offload Version 2 (IPv4) 0 Disabled
1 (Standard) Aktiviert
*LsoV2IPv6 Large Send Offload Version 2 (IPv6) 0 Disabled
1 (Standard) Aktiviert
*IPsecOffloadV1IPv4 IPsec Offload Version 1 (IPv4) 0 Disabled
1 Authentifizierungsheader aktiviert
2 ESP aktiviert
3 (Standard) Authentifizierungsheader & ESP aktiviert
*IPsecOffloadV2 IPsec-Auslagerung 0 Disabled
1 Authentifizierungsheader aktiviert
2 ESP aktiviert
3 (Standard) Authentifizierungsheader & ESP aktiviert
*IPsecOffloadV2IPv4 IPsec-Auslagerung (nur IPv4) 0 Disabled
1 Authentifizierungsheader aktiviert
2 ESP aktiviert
3 (Standard) Authentifizierungsheader & ESP aktiviert
*TCPUDPChecksumOffloadIPv4 TCP/UDP-Prüfsummenauslagerung (IPv4) 0 Disabled
1 Tx aktiviert
2 Rx aktiviert
3 (Standard) Tx und Rx aktiviert
*TCPUDPChecksumOffloadIPv6 TCP/UDP-Prüfsummenauslagerung (IPv6) 0 Disabled
1 Tx aktiviert
2 Rx aktiviert
3 (Standard) Tx und Rx aktiviert