Určení reflektoru v souboru INF

Počínaje Windows 11 je doporučeným způsobem, jak přidat reflektor (WUDFRd.sys) do zásobníku zařízení v režimu jádra, odkazovat na systémem dodávaný soubor WudfRd.inf v souboru INF ovladače UMDF.

Poznámka:

WudfRd.inf je součástí Windows 11 a novějšího.

Pokud chcete ve Windows 10 a starších verzích přidat reflektor (WUDFRd.sys), musí soubor INF ovladače UMDF obsahovat direktivu AddService v části INF DDInstall.Services a také v části pro instalaci služby. I když tato metoda stále funguje ve Windows 11 a novějších verzích, nedoporučuje se.

V obou metodách může být reflektor buď horním filtrem, dolním filtrem, nebo službou pro zařízení, v závislosti na konfiguraci zásobníku uživatelského režimu.

Odkazování na WudfRd.inf (Windows 11 a novější)

Ukázkový soubor INF, který používá tuto techniku, najdete na echoum.inx. Případně použijte jeden z následujících fragmentů kódu.

Instalace služby WudfRd jako ovladače funkce pro zařízení:

[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

Instalace služby WudfRd jako ovladače horního filtru:

[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

Instalace služby WudfRd jako nižšího filtračního ovladače:

[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

Použití direktivy AddService (Windows 10 a starší)

Následující příklad kódu ukazuje, jak soubor INF pro ovladač funkce UMDF může přidat reflektor.

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

V tomto příkladu ovladač určuje příznak 0x2 (SPSVCINST_ASSOCSERVICE) (vložený do parametru flags výše) k přiřazení reflektoru jako ovladače funkce v zásobníku zařízení v režimu jádra.

Direktiva AddService také nastaví příznaky 0x000001f8, aby se zabránilo přepsání jakékoli existující konfigurace služby. Další informace o těchto příznacích naleznete v parametru flags direktivy AddService.

Následující příklad kódu převzatý z příkladu WUDFVhidmini ukazuje příkaz AddService ovladače filtru 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

V tomto případě je služba mshidumdf přidružená k FDO zařízení a reflektor je dolní filtr.

Poskytnutí sekce instalace služby

Direktiva AddService odkazuje na část service-install-section podobnou příkladu kódu uvedenému níže. Položka ServiceType určuje hodnotu 1 nebo 0x00000001, což znamená, že INF nainstaluje podporu jednoho nebo více zařízení. Položka #B0 StartType #C1 určuje, kdy se má ovladač spustit. Položka ErrorControl určuje úroveň řízení chyb, kterou ovladač zajišťuje. Položka ServiceBinary určuje cestu k binárnímu souboru (reflektoru) služby.

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