Поделиться через


Ключевые слова перечисления

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-файле устройства должны быть указаны только параметры, поддерживаемые связанным устройством. То есть для устройства Ethernet 10/100, которое поддерживает только полнодуплексный режим, параметры для гигабитных или более высоких скоростей или полудуплексных параметров не должны быть указаны в связанном INF-файле.

Значения скорости, которые еще не определены специально с перечисляемыми значениями от 0 до 10, могут быть заданы как число, которое является значением непосредственно в Мбит/с. Прямые значения должны быть не менее 1000 Мбит/с (1 Гбит/с) и выше. Ниже приведено несколько примеров непосредственного указания скорости.

Значение SpeedDuplex Результирующая скорость
1000 1 Гбит/с
10 000 10 Гбит/с
25 000 25 Гбит/с
50 000 50 Гбит/с
100 000 100 Гбит/с

*FlowControl
Возможность устройства включать или отключать управление потоком в пути отправки или получения.

Примечание Устройства Ethernet сегодня поддерживают управление потоками, а встроенные драйверы Windows 8 для локальной сети по умолчанию поддерживают управление потоками. Когда отладчик ядра подключается к одному из этих адаптеров локальной сети, сетевой адаптер начнет отправлять кадры приостановки потока в сеть. Большинство сетевых коммутаторов будут реагировать, временно отключая сеть для всех остальных компьютеров, подключенных к тому же концентратору. Это распространенный сценарий разработки, и взаимодействие с конечным пользователем нежелательно и трудно диагностировать.

Примечание Значения по умолчанию для клиента и сервера не совпадают; см. таблицу значений по умолчанию ниже.

По этой причине в Windows 8 и более поздних версиях NDIS автоматически отключает управление потоком при включенной отладке на компьютере (например, введите bcdedit /set debug on в командной строке). Если отладка ядра включена и минипорт вызывает NdisReadConfiguration и передает "*FlowControl" для параметра Keyword , NDIS переопределит настроенное значение и возвратит ноль.

Если необходимо включить управление потоком во время отладки, NDIS предоставляет значение реестра AllowFlowControlUnderDebugger , позволяющее сделать это. Значение реестра AllowFlowControlUnderDebugger не позволяет NDIS отключать управление потоком и позволяет сетевым адаптерам сохранять настроенное поведение. Его можно найти в следующем разделе реестра:

HKEY_LOCAL_MACHINE\Системы\CurrentControlSet\Услуги\NDIS\Параметры

Задайте для этого параметра реестра значение 0x00000001.

Если оно не существует, можно создать значение с именем AllowFlowControlUnderDebugger и типом REG_DWORD и задать для него значение 0x00000001.

*PriorityVLANTag
Значение , указывающее, включило ли устройство или отключило возможность вставки тегов 802.1Q для приоритета пакетов и виртуальных локальных сетей (VLAN). Этот ключевое слово не указывает, включен или отключен приоритет пакетов устройства или теги виртуальной локальной сети. Вместо этого он описывает следующее:

  • Указывает, вставляет ли устройство теги 802.1Q во время операции отправки
  • Доступность сведений о теге 802.1Q в NET_BUFFER_LIST сведений о внеполосном канале (OOB)
  • Копирует ли устройство теги 802.1Q в OOB во время операций получения

Драйвер мини-порта должен удалить заголовок 802.1Q из всех получаемых пакетов независимо от параметра *PriorityVLANTag . Если заголовок 802.1Q остается в пакете, другие драйверы не смогут правильно проанализировать пакет.

Если флаг Rx включен в пути получения, драйвер мини-порта должен скопировать удаленный заголовок 802.1Q в OOB.

В противном случае, если флаг Rx отключен, драйвер мини-порта не должен копировать удаленный заголовок 802.1Q в OOB.

Если флаг Tx включен на пути передачи, драйвер мини-порта должен выполнить следующие действия:

  • Вставьте заголовок 802.1Q в каждый исходящий пакет и заполните его данными из OOB (если в OOB существуют ненулевые данные).
  • Объявление соответствующих macOptions в NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES (NDIS_MAC_OPTION_8021P_PRIORITY и NDIS_MAC_OPTION_8021Q_VLAN).

В противном случае, если флаг Tx отключен, то:

  • Фильтр мини-порта не должен учитывать сведения 802.1Q в OOB (и, следовательно, не вставлять тег).
  • Фильтр мини-порта не должен объявлять соответствующие параметры MacOptions в NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES.

Примечание Если драйвер мини-порта поддерживает качество обслуживания (QoS) NDIS, он также должен считывать значение *QOS ключевое слово. В зависимости от значения *QOS ключевое слово значения *PriorityVLANTag ключевое слово интерпретируются по-разному. Дополнительные сведения см. в разделе Стандартизированные ключевые слова INF для качества обслуживания NDIS.

*InterruptModeration
Значение типа , указывающее, включена или отключена модерация прерываний на устройстве. Алгоритмы модерации прерываний зависят от устройства. Производитель устройства может использовать нестандартизированные ключевые слова для поддержки алгоритмических параметров. Дополнительные сведения об модерации прерываний см. в разделе Модерация прерываний.

*RSS
Значение типа , указывающее, включено или отключено ли на устройстве масштабирование на стороне приема (RSS). Дополнительные сведения о rss см. в разделе Масштабирование на стороне приема.

*HeaderDataSplit
Значение типа , описывающее, включено или отключено разделение данных заголовков и заголовков на устройстве. Дополнительные сведения о разделении заголовков и данных см. в разделе Разделение заголовков и данных.

Следующие ключевые слова связаны со службами разгрузки подключений:

*TCPConnectionOffloadIPv4

*TCPConnectionOffloadIPv6

Дополнительные сведения о ключевых словах разгрузки подключения см. в разделе Использование значений реестра для включения и отключения разгрузки подключения.

Следующие ключевые слова связаны со службами разгрузки задач:

*IPChecksumOffloadIPv4

*TCPChecksumOffloadIPv4

*TCPChecksumOffloadIPv6

*UDPChecksumOffloadIPv4

*UDPChecksumOffloadIPv6

*LsoV1IPv4

*LsoV2IPv4

Примечание Для устройств, поддерживающих разгрузку больших объемов отправки версии 1 (LSOv1) и LSOv2 по протоколу IPv4, в INF-файле и значениях реестра следует использовать только ключевое слово *LsoV2IPv4. Если, например, ключевое слово *LsoV2IPv4 отображается в INF-файле, а ключевое слово *LsoV1IPv4 отображается в реестре (или наоборот), ключевое слово *LsoV2IPv4 всегда имеет приоритет.

*LsoV2IPv6

*IPsecOffloadV1IPv4

*IPsecOffloadV2

*IPsecOffloadV2IPv4

*TCPUDPChecksumOffloadIPv4

*TCPUDPChecksumOffloadIPv6

Дополнительные сведения о ключевых словах разгрузки TCP/IP см. в разделе Использование значений реестра для включения и отключения разгрузки задач.

Столбцы в таблице в конце этого раздела описывают следующие атрибуты для ключевых слов перечисления:

Имя подраздела
Имя ключевое слово, которое необходимо указать в INF-файле и которое отображается в реестре.

ParamDesc
Отображаемый текст, связанный с SubkeyName.

Значение
Целочисленное значение перечисления, связанное с каждым параметром в списке. Это значение хранится в NDI\params\SubkeyName\Value.

EnumDesc
Отображаемый текст, связанный с каждым значением, которое отображается в меню.

Default
Значение по умолчанию для меню.

В следующей таблице перечислены все ключевые слова и описаны значения, которые драйвер должен использовать для предыдущих атрибутов. Дополнительные сведения о ключевое слово можно найти по ключевое слово в документации по WDK.

SubkeyName ParamDesc Значение EnumDesc
*SpeedDuplex Дуплексный & скорости 0 (по умолчанию) Автоматическое согласование
1 10 Мбит/с полудуплекс
2 Полнодуплексный режим 10 Мбит/с
3 100 Мбит/с полудуплекс
4 Полнодуплексный режим 100 Мбит/с
5 1,0 Гбит/с полудуплекс
6 Полнодуплексный режим 1,0 Гбит/с
7 Полнодуплексный режим 10 Гбит/с
8 Полнодуплексный режим 20 Гбит/с
9 Полнодуплексный режим 40 Гбит/с
10 Полнодуплексный режим 100 Гбит/с
*FlowControl Управление потоком 0 (по умолчанию для сервера) Tx & Rx Disabled
1 Tx Enabled
2 Rx Enabled
3 (клиент по умолчанию) Rx & Tx Enabled
4 Автоматическое согласование
*PriorityVLANTag Приоритет пакетов & виртуальной локальной сети 0 Приоритет пакетов & виртуальной локальной сети отключен
1 Приоритет пакетов включен
2 Виртуальная ЛС включена
3 (по умолчанию) Приоритет пакетов & включенной виртуальной локальной сети
*InterruptModeration Модерация прерываний 0 Выключено
1 (по умолчанию) Активировано
*RSS Масштабирование на стороне приема 0 Выключено
1 (по умолчанию) Активировано
*HeaderDataSplit Разделение данных заголовков 0 (по умолчанию) Выключено
1 Активировано
*TCPConnectionOffloadIPv4 Разгрузка TCP-подключения (IPv4) 0 Выключено
1 (по умолчанию) Активировано
*TCPConnectionOffloadIPv6 Разгрузка TCP-подключения (IPv6) 0 Выключено
1 (по умолчанию) Активировано
*IPChecksumOffloadIPv4 Разгрузка контрольной суммы IPv4 0 Выключено
1 Tx Enabled
2 Rx Enabled
3 (по умолчанию) Rx & Tx Enabled
*TCPChecksumOffloadIPv4 Разгрузка контрольной суммы TCP (IPv4) 0 Выключено
1 Tx Enabled
2 Rx Enabled
3 (по умолчанию) Rx & Tx Enabled
*TCPChecksumOffloadIPv6 Разгрузка контрольной суммы TCP (IPv6) 0 Выключено
1 Tx Enabled
2 Rx Enabled
3 (по умолчанию) Rx & Tx Enabled
*UDPChecksumOffloadIPv4 Разгрузка контрольной суммы UDP (IPv4) 0 Выключено
1 Tx Enabled
2 Rx Enabled
3 (по умолчанию) Rx & Tx Enabled
*UDPChecksumOffloadIPv6 Разгрузка контрольной суммы UDP (IPv6) 0 Выключено
1 Tx Enabled
2 Rx Enabled
3 (по умолчанию) Rx & Tx Enabled
*LsoV1IPv4 Разгрузка большой отправки версии 1 (IPv4) 0 Выключено
1 (по умолчанию) Активировано
*LsoV2IPv4 Разгрузка большой отправки версии 2 (IPv4) 0 Выключено
1 (по умолчанию) Активировано
*LsoV2IPv6 Разгрузка большой отправки версии 2 (IPv6) 0 Выключено
1 (по умолчанию) Активировано
*IPsecOffloadV1IPv4 Разгрузка IPsec версии 1 (IPv4) 0 Выключено
1 Заголовок проверки подлинности включен
2 ESP Enabled
3 (по умолчанию) Заголовок проверки подлинности & esp enabled
*IPsecOffloadV2 Разгрузка IPsec 0 Выключено
1 Заголовок проверки подлинности включен
2 ESP Enabled
3 (по умолчанию) Заголовок проверки подлинности & esp enabled
*IPsecOffloadV2IPv4 Разгрузка IPsec (только IPv4) 0 Выключено
1 Заголовок проверки подлинности включен
2 ESP Enabled
3 (по умолчанию) Заголовок проверки подлинности & esp enabled
*TCPUDPChecksumOffloadIPv4 Разгрузка контрольной суммы TCP/UDP (IPv4) 0 Выключено
1 Tx Enabled
2 Rx Enabled
3 (по умолчанию) Tx и Rx включены
*TCPUDPChecksumOffloadIPv6 Разгрузка контрольной суммы TCP/UDP (IPv6) 0 Выключено
1 Tx Enabled
2 Rx Enabled
3 (по умолчанию) Tx и Rx Enabled