Настройка INF-файла для драйвера фильтра мониторинга
Следующие проблемы с установкой драйвера фильтра NDIS связаны с драйверами фильтров мониторинга:
Задайте для записи 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-файле сети.
Задайте запись INF-файла NetCfgInstanceId в INF-файле, как показано в следующем примере.
NetCfgInstanceId="{5cbf81bf-5055-47cd-9055-a76b2b4e3697}"
С помощью средстваUuidgen.exe можно создать GUID для записи NetCfgInstanceId .
Раздел DDInstall INF-файла для драйвера фильтра должен содержать директиву Addreg для ключа Ndi . В INF-файле должна быть указана запись Service в разделе Ndi . Запись ServiceBinary в разделе service-install INF-файла указывает путь к двоичному файлу для драйвера фильтра. Дополнительные сведения см. в разделах Добавление значений Service-Related в раздел Ndi Key и DDInstall.Services в INF-файле сети.
Раздел DDInstall в INF-файле драйвера фильтра должен содержать записи FilterType и FilterRunType . Чтобы указать фильтр мониторинга, определите запись FilterType в INF-файле, как показано в следующем примере.
HKR, Ndi,FilterType,0x00010001 ,0x00000001
Значение FilterType 0x00000001 указывает, что фильтр является фильтром мониторинга.
Определите запись FilterRunType в INF-файле, как показано в следующем примере.
HKR, Ndi,FilterRunType,0x00010001 ,0x00000002
Значение 0x00000002 в предыдущем примере указывает, что модуль фильтра является необязательным. Чтобы установить обязательный модуль фильтра, задайте для параметра FilterRunType значение 0x00000001. Дополнительные сведения см. в разделе Обязательные драйверы фильтра.
Примечание Настоятельно рекомендуется, чтобы драйвер упрощенного фильтра мониторинга (LWF) не был обязательным, если только он не будет использоваться в управляемой среде, где не будет дополнительно изменять драйверы LWF. Это связано с тем, что обязательный драйвер LWF для мониторинга может привести к сбою filterAttach при необязательных изменениях драйверов LWF. Драйвер LWF мониторинга привязан к каждому изменяемом фильтру и привязке по умолчанию, чтобы упростить мониторинг сетевого трафика на всех уровнях. Рассмотрим следующий сценарий.
- Экземпляр обязательного драйвера LWF для мониторинга устанавливается поверх необязательного изменяющегося драйвера LWF.
- Дополнительный драйвер LWF нижнего изменения не подключается к нижнему компоненту. Это приведет к тому, что обработчик FilterAttach драйвера LWF обязательного мониторинга не будет вызван.
- Так как теперь экземпляр обязательного драйвера LWF не загружается, NDIS не привязывает протоколы (например, TCP/IP) к интерфейсу или сетевому адаптеру, поэтому интерфейс становится непригодным для использования.
В следующем примере показано, как INF-файл драйвера фильтра задает имя службы.
HKR, Ndi,Service,,"NdisMon"
В этом примере "NdisMon" — это имя службы водителя, как оно передается в NDIS. Обратите внимание, что имя службы драйвера фильтра может отличаться от имени двоичного файла драйвера, но обычно они совпадают.
В следующем примере показано, как INF-файл фильтра ссылается на имя службы драйвера фильтра при добавлении этой службы.
[Install.Services] AddService=NdisMon,,NdisMon_Service_Inst [NdisMon_Service_Inst] DisplayName = %NdisMon_Desc% ServiceType = 1 ;SERVICE_KERNEL_DRIVER StartType = 1 ;SERVICE_SYSTEM_START ErrorControl = 1 ;SERVICE_ERROR_NORMAL ServiceBinary = %13%\ndisMon.sys LoadOrderGroup = NDIS Description = %NdisMon_Desc% AddReg = Common.Params.Reg
Inf-файл фильтра должен указывать по крайней мере имя основной службы фильтра для атрибута CoServices , как показано в следующем примере.
HKR, Ndi,CoServices,0x00010000,"NdisMon"
Дополнительные сведения об атрибуте CoServices см. в разделе Добавление значений Service-Related в ключ Ndi.
Значение FilterClass в INF-файле для драйвера фильтра определяет его порядок в стеке изменений фильтров. Однако драйверы фильтров мониторинга не определяют ключ FilterClass . Вместо этого модуль фильтра мониторинга, который устанавливается первым, находится ближе всего к адаптеру мини-порта.
Для управления привязками драйвера необходимо определить следующие записи в INF-файле драйвера фильтра мониторинга:
HKR, Ndi\Interfaces,UpperRange,,"noupper" HKR, Ndi\Interfaces,LowerRange,,"nolower" HKR, Ndi\Interfaces, FilterMediaTypes,,"ethernet"
Дополнительные сведения об управлении привязками драйверов см. в разделе Указание связей привязки драйвера фильтра.
INF-файл фильтра мониторинга может указывать общие определения параметров для драйвера фильтра, параметры, связанные с определенным адаптером, и параметры, связанные с определенным экземпляром (модуль фильтра). В следующем примере показаны некоторые распространенные определения параметров.
Внимание!
Использование HKR AddReg для добавления ключей непосредственно в состояние службы является нарушением соответствия требованиям. Чтобы обеспечить соответствие требованиям, эти ключи необходимо добавить в ключ Parameters службы.
[Common.Params.reg] HKR, FilterDriverParams\DriverParam, ParamDesc, ,"Driverparam for filter" HKR, FilterDriverParams\DriverParam, default, ,"5" HKR, FilterDriverParams\DriverParam, type, ,"int" HKR, FilterAdapterParams\AdapterParam, ParamDesc, ,"Adapterparam for filter" HKR, FilterAdapterParams\AdapterParam, default, ,"10" HKR, FilterAdapterParams\AdapterParam, type, ,"int" HKR, FilterInstanceParams\InstanceParam, ParamDesc, ,"Instance param for filter" HKR, FilterInstanceParams\InstanceParam, default, ,"15" HKR, FilterInstanceParams\InstanceParam, type, ,"int"