Udostępnij przez


Określanie reflektora w pliku INF

Począwszy od systemu Windows 11, zalecanym sposobem dodania reflektora (WUDFRd.sys) do stosu urządzeń w trybie jądra jest odwołanie się do pliku WudfRd.inf dostarczonego przez system w pliku INF sterownika UMDF.

Uwaga

Plik WudfRd.inf jest dołączony tylko do systemu Windows 11 lub nowszego.

W systemie Windows 10 i starszych, aby dodać refleksor (WUDFRd.sys), plik INF sterownika UMDF musi zawierać dyrektywy AddService w sekcji INF DDInstall.Services, a także sekcji service-install-section. Mimo że ta metoda nadal działa w systemie Windows 11 i nowszych, nie jest zalecana.

W obu metodach reflektor może być górnym filtrem, dolnym filtrem lub usługą dla urządzenia, w zależności od konfiguracji stosu w trybie użytkownika.

Odwoływanie się do pliku WudfRd.inf (system Windows 11 lub nowszy)

Przykład pliku INF używającego tej techniki można znaleźć w echoum.inx. Możesz też użyć jednego z poniższych fragmentów kodu.

Aby zainstalować usługę WudfRd jako sterownik funkcji dla urządzenia:

[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

Aby zainstalować usługę WudfRd jako sterownik górnego 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

Aby zainstalować usługę WudfRd jako sterownik filtru niższego:

[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

Używanie dyrektywy AddService (Windows 10 i wcześniejszych wersjach)

Poniższy przykład kodu pokazuje, jak plik INF sterownika funkcji UMDF może dodać reflektor.

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

W tym przykładzie sterownik określa flagę 0x2 (SPSVCINST_ASSOCSERVICE) (połączoną za pomocą operacji OR z flagami parametru powyżej), aby przypisać reflektor jako sterownik funkcji w stosie urządzenia działającego w trybie jądra.

Dyrektywa AddService ustawia również flagi 0x000001f8, aby zapobiec zastępowaniu wszystkich istniejących konfiguracji usługi. Aby uzyskać więcej informacji na temat tych flag, zobacz parametr flagi dyrektywy AddService.

Poniższy przykład kodu pobrany z przykładu WUDFVhidmini przedstawia dyrektywę AddService dla sterownika 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

W takim przypadku usługa mshidumdf jest skojarzona z FDO dla stosu urządzenia, a reflektor jest filtrem dolnym.

Dostarczanie sekcji instalacji usługi

Dyrektywa AddService odwołuje się do sekcji instalacyjnej usługi, podobnej do poniższego przykładu kodu. Wpis ServiceType określa 1 lub 0x00000001, co wskazuje, że funkcja INF instaluje obsługę co najmniej jednego urządzenia. Wpis StartType określa, kiedy należy uruchomić sterownik. Wpis ErrorControl określa poziom kontroli błędów zapewniany przez sterownik. Wpis ServiceBinary określa ścieżkę do pliku binarnego (refleksora) dla usługi.

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