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


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

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

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

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

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

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

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

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

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

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

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

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

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

*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 см. в разделе "Использование значений реестра для включения и отключения разгрузки задач".

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

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

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

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

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

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

В следующей таблице перечислены все ключевые слова и описываются значения, которые драйвер должен использовать для предыдущих атрибутов. Дополнительные сведения об ключевом слове можно найти в документации по 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 Отключены
1 Tx включено
2 Rx Включено
3 (по умолчанию для клиента) Rx & Tx Включено
4 Автоматическое согласование
*PriorityVLANTag Приоритет пакетов и виртуальная локальная сеть 0 Отключены приоритет пакета и виртуальная локальная сеть
1 Включен приоритет пакета
2 Включена виртуальная локальная сеть
3 (по умолчанию) Включен приоритет пакетов и включена виртуальная локальная сеть
*МодерацияПрерываний Модерация прерываний 0 Нетрудоспособный
1 (по умолчанию) Включен
*RSS Масштабирование на стороне приема 0 Нетрудоспособный
1 (по умолчанию) Включен
*HeaderDataSplit Разделение данных заголовка 0 (по умолчанию) Нетрудоспособный
1 Включен
*TCPConnectionOffloadIPv4 Разгрузка TCP-подключения (IPv4) 0 Нетрудоспособный
1 (по умолчанию) Включен
*TCPConnectionOffloadIPv6 Разгрузка TCP-подключения (IPv6) 0 Нетрудоспособный
1 (по умолчанию) Включен
*IPChecksumOffloadIPv4 Разгрузка контрольной суммы IPv4 0 Нетрудоспособный
1 Tx включено
2 Rx Включено
3 (по умолчанию) Rx & Tx Включено
*TCPChecksumOffloadIPv4 Разгрузка контрольной суммы TCP (IPv4) 0 Нетрудоспособный
1 Tx включено
2 Rx Включено
3 (по умолчанию) Rx & Tx Включено
*TCPChecksumOffloadIPv6 Разгрузка контрольной суммы TCP (IPv6) 0 Нетрудоспособный
1 Tx включено
2 Rx Включено
3 (по умолчанию) Rx & Tx Включено
*UDPChecksumOffloadIPv4 Разгрузка контрольной суммы UDP (IPv4) 0 Нетрудоспособный
1 Tx активирован
2 Rx Включено
3 (по умолчанию) Rx & Tx Включено
*UDPChecksumOffloadIPv6 Разгрузка контрольной суммы UDP (IPv6) 0 Нетрудоспособный
1 Tx включено
2 Rx Включено
3 (по умолчанию) Rx & Tx Включено
*LsoV1IPv4 Разгрузка крупных пакетов версия 1 (IPv4) 0 Нетрудоспособный
1 (по умолчанию) Включен
*LsoV2IPv4 Разгрузка крупной отправки, версия 2 (IPv4) 0 Нетрудоспособный
1 (по умолчанию) Включен
*LsoV2IPv6 Крупная разгрузка отправки версии 2 (IPv6) 0 Нетрудоспособный
1 (по умолчанию) Включен
*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 Tx включено
2 Rx Включено
3 (по умолчанию) Tx и Rx включены
*TCPUDPChecksumOffloadIPv6 Разгрузка контрольной суммы TCP/UDP (IPv6) 0 Нетрудоспособный
1 Tx включено
2 Rx Включено
3 (по умолчанию) Tx и Rx включены