次の方法で共有


Enumeration Keywords

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) 以上である必要があります。 速度を直接指定する例をいくつか次に示します。

SpeedDuplex value Resulting speed
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\システム\CurrentControlSet\サービス\NDIS\パラメーター

このレジストリ値を 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 以外のデータが存在する場合)。
  • 適切なMacOptionsをNDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES (NDIS_MAC_OPTION_8021P_PRIORITYおよびNDIS_MAC_OPTION_8021Q_VLAN)で宣伝します。

それ以外の場合、Tx フラグが無効になっている場合は、次のようになります。

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

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

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

*RSS
デバイスが受信側スケーリング (RSS) を有効化または無効化しているかを示す値。 RSS の詳細については、「Receive Side Scaling」を参照してください。

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

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

*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
メニューに表示される各値に関連付けられている表示テキスト。

Default
メニューの既定値。

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

SubkeyName ParamDesc Value EnumDesc
*SpeedDuplex 速度とデュプレックス 0 (Default) Auto Negotiation
1 10 Mbps 半二重
2 10 Mbps 全二重
3 100 Mbps 半二重
4 100 Mbps 全二重
5 1.0 Gbps 半二重
6 1.0 Gbps 全二重
7 10 Gbps 全二重
8 20 Gbps 全二重
9 40 Gbps 全二重
10 100 Gbps 全二重
*FlowControl Flow Control 0 (サーバーの既定値) Tx および Rx 無効
1 Tx Enabled
2 Rx Enabled
3 (クライアントの既定値) Rx と Tx が有効
4 Auto Negotiation
*PriorityVLANTag パケット優先度 & VLAN 0 パケット優先順位 & VLAN 無効
1 パケット優先度が有効
2 VLAN Enabled
3 (Default) パケット優先度と VLAN が有効
*InterruptModeration Interrupt Moderation 0 Disabled
1 (Default) Enabled
*RSS 受信側のスケーリング 0 Disabled
1 (Default) Enabled
*HeaderDataSplit ヘッダー データ分割 0 (Default) Disabled
1 Enabled
*TCPConnectionOffloadIPv4 TCP 接続オフロード (IPv4) 0 Disabled
1 (Default) Enabled
*TCPConnectionOffloadIPv6 TCP 接続オフロード (IPv6) 0 Disabled
1 (Default) Enabled
*IPChecksumOffloadIPv4 IPv4 チェックサム オフロード 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Rx と Tx が有効
*TCPChecksumOffloadIPv4 TCP チェックサムオフロード (IPv4) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Rx と Tx が有効
*TCPChecksumOffloadIPv6 TCP チェックサムオフロード (IPv6) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Rx と Tx が有効
*UDPChecksumOffloadIPv4 UDP チェックサムオフロード (IPv4) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Rx と Tx が有効
*UDPChecksumOffloadIPv6 UDP チェックサムオフロード (IPv6) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Rx と Tx が有効
*LsoV1IPv4 大規模送信オフロード バージョン 1 (IPv4) 0 Disabled
1 (Default) Enabled
*LsoV2IPv4 大きな送信オフロード バージョン 2 (IPv4) 0 Disabled
1 (Default) Enabled
*LsoV2IPv6 大規模送信オフロード バージョン2 (IPv6) 0 Disabled
1 (Default) Enabled
*IPsecOffloadV1IPv4 IPsec オフロード バージョン 1 (IPv4) 0 Disabled
1 認証ヘッダーが有効
2 ESP Enabled
3 (Default) 認証ヘッダー & ESP が有効
*IPsecOffloadV2 IPsec Offload 0 Disabled
1 認証ヘッダーが有効
2 ESP Enabled
3 (Default) 認証ヘッダー & ESP が有効
*IPsecOffloadV2IPv4 IPsec オフロード (IPv4 のみ) 0 Disabled
1 認証ヘッダーが有効
2 ESP Enabled
3 (Default) 認証ヘッダー & ESP が有効
*TCPUDPChecksumOffloadIPv4 TCP/UDP チェックサム オフロード (IPv4) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) 送信(Tx)および受信(Rx)有効化
*TCPUDPChecksumOffloadIPv6 TCP/UDP チェックサム オフロード (IPv6) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) 送信(Tx)および受信(Rx)有効化