Ключевые слова перечисления
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 |