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


Указание отражателя в INF-файле

Начиная с Windows 11 рекомендуется добавить отражатель (WUDFRd.sys) в стек устройств в режиме ядра, чтобы ссылаться на предоставленный системой файл WudfRd.inf в INF-файле драйвера UMDF.

Примечание

WudfRd.inf включается только в Windows 11 и более поздних версий.

На Windows 10 и более ранних версиях, чтобы добавить отражатель (WUDFRd.sys), INF-файл драйвера UMDF должен включать директиву AddService в раздел INF DDInstall.Services, а также раздел service-install-section. Хотя этот метод по-прежнему работает с Windows 11 и более поздних версий, он не рекомендуется.

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

Ссылка на WudfRd.inf (Windows 11 и более поздние версии)

Пример inf, в котором используется этот метод, можно найти на сайте echoum.inx. Кроме того, можно использовать один из следующих фрагментов.

Чтобы установить службу WudfRd в качестве драйвера функции для устройства, выполните следующие действия.

[DDInstall]
Include=WUDFRD.inf
Needs=WUDFRD.NT
; also include any existing DDInstall directives

[DDInstall.HW]
Include=WUDFRD.inf
Needs=WUDFRD.NT.HW
; also include any existing DDInstall.HW directives

[DDInstall.Services]
Include=WUDFRD.inf
Needs=WUDFRD.NT.Services
; also include any existing any DDInstall.Services directives

Чтобы установить службу WudfRd в качестве драйвера верхнего фильтра, выполните следующие действия.

[DDInstall] 
Include=WUDFRD.inf
Needs=WUDFRD_UpperFilter.NT
; also include any existing DDInstall directives

[DDInstall.HW]
Include=WUDFRD.inf
Needs=WUDFRD_UpperFilter.NT.HW
; also include any existing DDInstall.HW directives

[DDInstall.Services]
Include=WUDFRD.inf
Needs=WUDFRD_UpperFilter.NT.Services
; also include any existing any DDInstall.Services directives

[DDInstall.Filters]
Include=WUDFRD.inf
Needs=WUDFRD_UpperFilter.NT.Filters

Чтобы установить службу WudfRd в качестве драйвера нижнего фильтра, выполните следующие действия.

[DDInstall] 
Include=WUDFRD.inf
Needs=WUDFRD_LowerFilter.NT
; also include any existing DDInstall directives

[DDInstall.HW]
Include=WUDFRD.inf
Needs=WUDFRD_LowerFilter.NT.HW
; also include any existing DDInstall.HW directives

[DDInstall.Services]
Include=WUDFRD.inf
Needs=WUDFRD_LowerFilter.NT.Services
; also include any existing any DDInstall.Services directives

[DDInstall.Filters]
Include=WUDFRD.inf
Needs=WUDFRD_LowerFilter.NT.Filters

Использование директивы AddService (Windows 10 и более ранних версий)

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

[Skeleton_Install.Services]
AddService=WUDFRd,0x000001fa,WUDFRD_ServiceInstall

В этом примере драйвер задает флаг 0x2 (SPSVCINST_ASSOCSERVICE) (в параметре flags выше) для назначения отражателя в качестве драйвера функции в стеке устройств в режиме ядра.

Директива AddService также задает флаги 0x000001f8, чтобы предотвратить перезапись любой уже существовающей конфигурации для службы. Дополнительные сведения об этих флагах см. в параметре flags директивыAddService.

В следующем примере кода, взятом из примера WUDFVhidmini, показана директива AddService для драйвера фильтра UMDF.

[hidumdf.win8.NT.Services]
AddService=WUDFRd,0x000001f8,WUDFRD_ServiceInstall  
AddService=mshidumdf, 0x000001fa, mshidumdf.AddService

[WudfVhidmini_AddReg]
HKR,,"LowerFilters",0x00010008,"WUDFRd" ; FLG_ADDREG_TYPE_MULTI_SZ | FLG_ADDREG_APPEND

В этом случае служба mshidumdf связана с FDO для стека устройств, а отражатель является более низким фильтром.

Предоставление раздела service-install-section

Директива AddService ссылается на раздел service-install-section, аналогичный приведенному ниже примеру кода. В записи ServiceType указывается 1 или 0x00000001, что указывает, что INF устанавливает поддержку для одного или нескольких устройств. Запись StartType указывает, когда следует запустить драйвер. Запись ErrorControl указывает уровень управления ошибками, который предоставляет драйвер. Запись ServiceBinary указывает путь к двоичному файлу (отражатель) для службы.

[WUDFRD_ServiceInstall]
DisplayName = "Windows Driver Frameworks - User-mode Driver Framework Reflector"
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\WUDFRd.sys