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


Настройка INF-файла для драйвера изменения фильтра

Следующие проблемы с установкой драйвера фильтра NDIS связаны с изменением драйверов фильтров. Чтобы создать INF-файл для собственного драйвера фильтра, можно также адаптировать пример драйвера фильтра NDIS 6.0 .

  • Задайте для записи INF-файла класс значение NetService в INF-файле. В следующем примере показан пример записи класса для INF-файла.

    Class = NetService
    
  • Раздел DDInstall в INF-файле драйвера фильтра должен иметь запись характеристик. В следующем примере показано, как следует определить запись характеристик в INF-файле фильтра.

    Characteristics=0x40000
    

    Значение 0x40000 указывает, что задан NCF_LW_FILTER (0x40000). Драйверы фильтров не должны задавать флаг NCF_FILTER (0x400). Значения флагов NCF_ Xxx определяются в Netcfgx.h. Дополнительные сведения о флагах NCF_ Xxx см. в разделе DDInstall вINF-файле сети.

  • Задайте запись NetCfgInstanceId в файле INF, как показано в следующем примере.

    NetCfgInstanceId="{5cbf81bd-5055-47cd-9055-a76b2b4e3697}"
    

    С помощью средства Uuidgen.exe можно создать GUID для записи NetCfgInstanceId.

  • Раздел DDInstall INF-файла драйвера фильтра должен содержать директиву Addreg для ключа Ndi. INF-файл должен указать запись Service в ключе в разделе Ndi. Запись ServiceBinary в разделе установки службы INF-файла указывает путь к двоичному файлу драйвера фильтра. Дополнительные сведения см. в разделе Добавление связанных со службой значений в ключ Ndi и раздел DDInstall.Services в сетевом файле INF.

  • Раздел DDInstall в INF-файле драйвера фильтра должен содержать записи FilterType и FilterRunType. Чтобы указать фильтр изменения, определите запись FilterType в INF-файле, как показано в следующем примере.

    HKR, Ndi,FilterType,0x00010001 ,0x00000002
    

    Значение FilterType 0x00000002 указывает, что фильтр является модифицирующим фильтром.

  • Определите запись FilterRunType в INF-файле, как показано в следующем примере.

    HKR, Ndi,FilterRunType,0x00010001 ,0x00000001
    

    Значение 0x00000001 в предыдущем примере указывает, что модуль фильтра является обязательным. Чтобы установить дополнительный модуль фильтра, задайте для записи FilterRunType значение 0x00000002. Для получения дополнительной информации см. обязательные фильтрующие драйверы.

  • В следующем примере показано, как измененный INF-файл драйвера фильтра указывает имя службы.

    HKR, Ndi,Service,,"NdisLwf"
    

    В этом примере NdisLwf — это имя службы драйвера, как это сообщается в NDIS. Обратите внимание, что имя службы драйвера фильтра может отличаться от имени двоичного файла драйвера, но обычно они одинаковы.

  • В следующем примере показано, как INF-файл фильтра ссылается на имя службы драйвера фильтра при добавлении этой службы.

    [Install.Services]
    AddService=NdisLwf,,NdisLwf_Service_Inst;, common.EventLog 
    
    [NdisLwf_Service_Inst]
    DisplayName     = %NdisLwf_Desc%
    ServiceType     = 1 ;SERVICE_KERNEL_DRIVER
    StartType       = 1 ;SERVICE_SYSTEM_START
    ErrorControl    = 1 ;SERVICE_ERROR_NORMAL
    ServiceBinary   = %13%\ndislwf.sys
    LoadOrderGroup  = NDIS
    Description     = %NdisLwf_Desc%
    AddReg          = Common.Params.reg
    
  • INF-файл фильтра должен указать по крайней мере имя основной службы фильтра для атрибута CoServices, как показано в следующем примере.

    HKR, Ndi,CoServices,0x00010000,"NdisLwf"
    

    Дополнительные сведения об атрибуте CoServices см. в разделе «Добавление значений, связанных со службой, в ключ Ndi».

  • Значение FilterClass в INF-файле драйвера фильтра определяет порядок в стеке фильтров. Драйверы фильтров должны определить ключ FilterClass. Класс драйвера может быть одним из значений в следующей таблице.

    Ценность Описание

    планировщик

    Служба управления фильтрацией пакетов. Этот класс драйвера фильтра является драйвером верхнего уровня, который может существовать выше фильтров классов шифрования в стеке драйверов. Планировщик пакетов обнаруживает классификацию приоритета 802.1p, которая предоставляется пакетам по качеству компонентов обслуживания (QoS), а планировщик отправляет эти уровни базовым драйверам в соответствии с их приоритетом.

    шифрование

    Драйверы фильтров классов шифрования существуют между фильтрами планировщика и класса сжатия.

    сжатие

    Драйверы фильтров классов сжатия существуют между фильтрами шифрования и класса VPN.

    VPN

    Драйверы фильтров классов VPN существуют между драйверами фильтрации сжатия и балансировки нагрузки.

    балансировка нагрузки

    Служба балансировки нагрузки и фильтрации. Этот класс драйверов-фильтров располагается между драйверами планирования пакетов и драйверами управления отказами. Служба фильтрации балансировки нагрузки балансирует рабочую нагрузку передачи пакетов путем распределения рабочей нагрузки по набору базовых минипорт-адаптеров.

    переключение на резерв

    Служба фильтра отказоустойчивости. Этот класс драйвера фильтра существует между драйверами балансировки нагрузки и диагностики.

    диагностический

    Драйверы фильтров диагностики находятся ниже драйверов отработки отказа в стеке.

    обычай

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

    адрес_поставщика

    Драйверы фильтров адресов поставщика расположены ниже встроенного фильтра виртуализации сети Hyper-V ms_wnv и работают с пакетами адресов поставщика (PA - Адрес Поставщика).

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

В следующем примере показан пример FilterClass.

HKR, Ndi,FilterClass,, compression
  • В расширяемом коммутаторе Hyper-V допустимы только драйверы фильтров расширения коммутатора Hyper-V. Hyper-V драйверы фильтров расширяемого коммутатора должны определить ключ FilterClass с одним из значений в следующей таблице.

    Ценность Описание

    ms_switch_capture

    Начиная с NDIS 6.30, драйверы захвата контролируют трафик пакетов в стеке драйвера расширяемого коммутатора Hyper-V. Этот класс драйвера фильтра существует под пользовательскими драйверами в стеке.

    Дополнительные сведения об этом классе драйвера см. в разделе Расширения для захвата.

    ms_switch_filter

    Начиная с версии NDIS 6.30, драйверы фильтрации обрабатывают трафик пакетов и обеспечивают выполнение политики портов или коммутаторов для доставки пакетов через стек драйверов расширяемого коммутатора. Данный класс фильтрующего драйвера находится ниже ms_switch_capture драйверов в стеке.

    Для получения дополнительной информации об этом классе драйверов, см. Расширения фильтрации.

    ms_switch_forward

    Начиная с версии NDIS 6.30, фильтр драйверов пересылки выполняет те же функции, что и драйвер фильтрации. Драйверы переадресации также перенаправляют пакеты в и из портов расширяемого коммутатора. Этот класс драйвера фильтра располагается ниже ms_switch_filter драйверов в стеке.

    Дополнительные сведения об этом классе драйвера см. в Расширениях пересылки.

  • Чтобы управлять привязками драйвера, необходимо определить следующие записи в INF-файле драйвера фильтра.

    HKR, Ndi\Interfaces,UpperRange,,"noupper"
    HKR, Ndi\Interfaces,LowerRange,,"nolower"
    HKR, Ndi\Interfaces, FilterMediaTypes,,"ethernet"
    

    Дополнительные сведения об управлении привязками драйверов см. в разделе Указание связей привязки драйвера фильтра.

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

Осторожность

Использование HKR AddReg для установки ключей непосредственно в состояние службы является нарушением требований соответствия. Эти ключи необходимо добавить в ключ параметров службы для соответствия.

[Common.Params.reg]

HKR, FilterDriverParams\DriverParam,  ParamDesc, , "Driverparam for lwf"
HKR, FilterDriverParams\DriverParam,  default, , "5"
HKR, FilterDriverParams\DriverParam,  type,  , "int"

HKR, FilterAdapterParams\AdapterParam,  ParamDesc, , "Adapterparam for lwf"
HKR, FilterAdapterParams\AdapterParam,  default, , "10"
HKR, FilterAdapterParams\AdapterParam,  type,  , "int"