Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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 включены |