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)有効化 |