列挙キーワード

NDIS 6.0 以降のバージョンの NDIS は、ネットワーク デバイスのミニポート ドライバー用に標準化された列挙キーワードを提供します。 列挙キーワード は、メニューのリストとして表示される値と関連付けられます。

次に示すのは、列挙キーワード の INF ファイル定義の例です。

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%"

一般的な列挙キーワードは次のとおりです。

*SpeedDuplex
デバイスがサポートする速度とデュプレックスの設定。 デバイス INF ファイルに一覧表示されるのは、関連付けられているデバイスでサポートされている設定のみです。 つまり、全二重モードのみをサポートできるイーサネット 10/100 デバイスの場合、ギガビット以上の速度または半二重の設定は、関連する INF ファイルに一覧表示してはいけません。

列挙値が 0 ~ 10 で現状定義されていない速度値は、Mbps で直接数値として設定できます。 直接値は、少なくとも 1,000 Mbps (1 Gbps) 以上でなければなりません。 次に示すのは、速度を直接指定するいくつかの例です。

速度/デュプレックス 値 結果の速度
1,000 1 Gbps
10,000 10 Gbps
25,000 25 Gbps
50,000 50 Gbps
100,000 100 Gbps

*FlowControl
デバイスが送信パスや受信パスのフロー制御を有効または無効にする機能。

注: 現在、イーサネット デバイスではフロー制御がサポートされ、LAN 用 Windows 8 のインボックス ドライバーでは、既定でフロー制御が有効になっています。 カーネル デバッガーがこれらのいずれかの LAN アダプターに接続すると、NIC はフロー制御の一時停止フレームをネットワークにプッシュし始めます。 ネットワーク スイッチのほとんどは、同じハブに接続されている他のすべてのコンピューターのネットワークを一時停止して対応します。 これは一般的な開発シナリオで、エンド ユーザー エクスペリエンスは好ましくないため診断が困難です。

注: クライアントとサーバーの既定値は同じではありません。以下の既定値の表を参照ください。

このため、Windows 8 以降では、NDIS は、コンピューターでデバッグが有効になっているときに (例:コマンド ラインで bcdedit /set debug on と入力 ) フロー制御を自動的に 無効にします。 カーネル デバッグが有効で、ミニポートが NdisReadConfiguration を呼び出し、キーワード パラメーターの "*FlowControl" を渡すと、NDIS は構成された値をオーバーライドし、0 を返します。

デバッグ中にフロー制御を有効にする必要がある場合、NDIS は、AllowFlowControlUnderDebugger レジストリ値を提供してこれを行えるようにします。 AllowFlowControlUnderDebugger レジストリ値は、NDIS がフロー制御の無効化を防ぎ、NIC が構成された動作を維持できるようにします。 これは、次のレジストリ キーの下にあります。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters

このレジストリ値を 0x00000001 に設定します。

存在しない場合は、AllowFlowControlUnderDebugger という名前の値とREG_DWORD型を使用して値を作成し、0x00000001に設定できます。

*PriorityVLANTag
デバイスがパケット優先度と仮想 LAN (VLAN) の 802.1Q タグを挿入する機能を有効または無効にしたかどうかを示す値。 このキーワードでは、デバイスがパケット優先度タグまたは VLAN タグを有効または無効にしているかどうかは示されません。 代わりに、次の内容について説明します。

  • 送信操作中にデバイスが 802.1Q タグを挿入するかどうか
  • 802.1Q タグ情報が NET_BUFFER_LIST 帯域外 (OOB) 情報で使用可能かどうか
  • デバイスが受信操作中に 802.1Q タグを OOB にコピーするか

ミニポート ドライバーは、*PriorityVLANTag 設定に関係なく、すべての受信パケットから 802.1Q ヘッダーを削除する必要があります。 802.1Q ヘッダーがパケットに残っている場合、他のドライバーがパケットを正しく解析できないことがあります。

Rx フラグが受信パスで有効になっている場合、ミニポート ドライバーで、OOB に削除された 802.1Q ヘッダーをコピーしてください。

それ以外で、Rx フラグが無効になっている場合、ミニポート ドライバーは、OOB に削除された 802.1Q ヘッダーをコピーしないでください。

送信パスで Tx フラグが有効になっている場合、ミニポート ドライバーで、次の操作を行ってください。

  • 各送信パケットに 802.1Q ヘッダーを挿入し、OOB からのデータを入力します (OOB に 0 以外のデータが存在すれば)。
  • NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES (NDIS_MAC_OPTION_8021P_PRIORITYNDIS_MAC_OPTION_8021Q_VLAN) で適切な MacOptions をアドバタイズします。

それ以外で、Tx フラグが無効になっている場合は、以下の通りです。

  • ミニポート フィルターは、OOB の 802.1Q 情報を受け入れてはいけません (なので、タグを挿入しません)。
  • ミニポート フィルターは、NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTESで適切な MacOptions をアドバタイズしないでください。

: ミニポート ドライバーが NDIS サービス品質 (QoS) をサポートしている場合は、*QOS キーワード 値も読み取る必要があります。 *QOS キーワード 値に基づいて、*PriorityVLANTag キーワード 値は異なる方法で解釈します。 詳細については、「NDIS QoS の標準化された INF キーワード」を参照してください。

*InterruptModeration
デバイスによる割り込みモデレーションが有効か無効かを示す値。 割り込みモデレーション アルゴリズムはデバイスに依存します。 デバイスの製造元は、標準化していないキーワードを使用してアルゴリズム設定をサポートできます。 割り込みモデレーションの詳細は、「割り込みモデレーション」をご覧ください。

*RSS
デバイスが有効か無効かを示す値は、受信側のスケーリング (RSS) を受け取ります。 virtual Receive-side Scaling (RSS) に関する詳細は、「サイドスケーリングを受け取る」をご覧ください。

*HeaderDataSplit
デバイスによるヘッダー データ分割が有効か無効かを示す値。 ヘッダー データ分割の詳細については、「ヘッダー データの分割」を参照してください。

接続オフロード サービスには、次のキーワード が関連付けられています。

*TCPConnectionOffloadIPv4

*TCPConnectionOffloadIPv6

接続オフロード キーワード の詳細は、「レジストリ値を使用した接続オフロードの有効化と無効化」を参照してください。

タスクに関連した接続オフロード サービスには、次のキーワード が関連付けられています。

*IPChecksumOffloadIPv4

*TCPChecksumOffloadIPv4

*TCPChecksumOffloadIPv6

*UDPChecksumOffloadIPv4

*UDPChecksumOffloadIPv6

*LsoV1IPv4

*LsoV2IPv4

注: IPv4 経由で大規模な送信オフロード バージョン 1 (LSOv1) と LSOv2 の両方をサポートするデバイスの場合は、INF ファイルとレジストリ値で *LsoV2IPv4 キーワード のみを使用しなければなりません。 たとえば、*LsoV2IPv4 キーワードが INF ファイルに表示され、*LsoV1IPv4 キーワードがレジストリに表示される場合 (またはその逆)、*LsoV2IPv4 キーワードを常時優先します。

*LsoV2IPv6

*IPsecOffloadV1IPv4

*IPsecOffloadV2

*IPsecOffloadV2IPv4

*TCPUDPChecksumOffloadIPv4

*TCPUDPChecksumOffloadIPv6

TCP/IP オフロード キーワードの詳細は、「レジストリ値を使用したタスク オフロードの有効化と無効化」を参照してください。

このトピックの最後の表の列では、列挙キーワードの次の属性について説明します。

SubkeyName
INF ファイルで指定する必要があり、レジストリに表示されるキーワードの名前。

ParamDesc
SubkeyName に関連付けられている表示テキスト。

Value
リスト内の各オプションに関連付けられている列挙整数値。 この値は、NDI\params\ SubkeyName\Value に格納されます。

EnumDesc
メニューに表示される各値に関連付けられている表示テキスト。

既定値
このメニューの既定値。

次の表は、すべてのキーワードの一覧と、ドライバーが上記の属性に使用する必要がある値を示しています。 キーワードの詳細については、WDK ドキュメントでそのキーワードを検索してください。

SubkeyName ParamDesc Value EnumDesc
*SpeedDuplex 速度& デュプレックス 0 (既定値) 自動ネゴシエーションを開始します
1 10 Mbps ハーフデュプレックス
2 10 Mbps フルデュプレックス
3 100 Mbps ハーフデュプレックス
4 100 Mbps フルデュプレックス
5 1.0 Gbps ハーフデュプレックス
6 1.0 Gbps フルデュプレックス
7 1.0 Gbps フルデュプレックス
8 20 Gbps フルデュプレックス
9 40 Gbps フルデュプレックス
10 100 Gbps フルデュプレックス
*FlowControl フロー制御 0 (サーバーの既定値) Tx&Rx 無効
1 送信有効
2 受信有効
3 (既定のクライアント) 受信&送信有効
4 自動ネゴシエーションを開始します
*PriorityVLANTag パケット優先度 & VLAN 0 パケット優先度 & VLAN 無効
1 パケット優先度を有効にする
2 VLAN が有効
3 (既定値) パケット優先度& VLAN 有効にする
*InterruptModeration 割り込み節度 0 無効
1 (既定値) Enabled
*RSS Receive Side Scaling 0 無効
1 (既定値) Enabled
*HeaderDataSplit ヘッダー データの分割 0 (既定値) 無効
1 Enabled
*TCPConnectionOffloadIPv4 TCP接続オフロード (IPv4) 0 無効
1 (既定値) Enabled
*TCPConnectionOffloadIPv6 TCP接続オフロード (IPv6) 0 無効
1 (既定値) Enabled
*IPChecksumOffloadIPv4 IPv4 チェックサム オフロード 0 無効
1 送信有効
2 受信有効
3 (既定値) 受信&送信有効
*TCPChecksumOffloadIPv4 TCP チェックサムオフロード (IPv4) 0 無効
1 送信有効
2 受信有効
3 (既定値) 受信&送信有効
*TCPChecksumOffloadIPv6 TCP チェックサムオフロード (IPv6) 0 無効
1 送信有効
2 受信有効
3 (既定値) 受信&送信有効
*UDPChecksumOffloadIPv4 UDP チェックサムオフロード (IPv4) 0 無効
1 送信有効
2 受信有効
3 (既定値) 受信&送信有効
*UDPChecksumOffloadIPv6 UDP チェックサムオフロード (IPv6) 0 無効
1 送信有効
2 受信有効
3 (既定値) 受信&送信有効
*LsoV1IPv4 大規模送信オフロード バージョン 1 (IPv4) 0 無効
1 (既定値) Enabled
*LsoV2IPv4 大規模送信オフロード バージョン 2 (IPv4) 0 無効
1 (既定値) Enabled
*LsoV2IPv6 大規模送信オフロード バージョン 2 (IPv6) 0 無効
1 (既定値) Enabled
*IPsecOffloadV1IPv4 IPsec オフロード バージョン 1 (IPv4) 0 無効
1 認証ヘッダーが有効
2 ESP が有効
3 (既定値) 認証ヘッダー& ESP有効
*IPsecOffloadV2 IPsecオフロード 0 無効
1 認証ヘッダーが有効
2 ESP が有効
3 (既定値) 認証ヘッダー& ESP有効
*IPsecOffloadV2IPv4 IPsecオフロード (IPv4のみ) 0 無効
1 認証ヘッダーが有効
2 ESP が有効
3 (既定値) 認証ヘッダー& ESP有効
*TCPUDPChecksumOffloadIPv4 TCP/UDPチェックサムオフロード (IPv4) 0 無効
1 送信有効
2 受信有効
3 (既定値) Tx および Rx を有効化する
*TCPUDPChecksumOffloadIPv6 TCP/UDPチェックサムオフロード (IPv6) 0 無効
1 送信有効
2 受信有効
3 (既定値) Tx および Rx を有効化する