Angeben des Reflektors in einer INF-Datei
Ab Windows 11 empfiehlt es sich, den Reflektor (WUDFRd.sys) dem Kernelmodus-Gerätestapel hinzuzufügen, um auf die vom System bereitgestellte Datei WudfRd.inf in der INF-Datei eines UMDF-Treibers zu verweisen.
Hinweis
WudfRd.inf ist nur in Windows 11 und höher enthalten.
Zum Hinzufügen des Reflektors (WUDFRd.sys) muss die INF-Datei eines UMDF-Treibers auf Windows 10 und früheren Versionen eine AddService-Direktive in einem INF DDInstall.Services-Abschnitt sowie einen Dienstinstallationsabschnitt enthalten. Diese Methode funktioniert zwar immer noch auf Windows 11 und höher, es wird jedoch nicht empfohlen.
Bei beiden Methoden kann der Reflektor je nach Konfiguration des Benutzermodusstapels ein oberer Filter, ein niedrigerer Filter oder der Dienst für das Gerät sein.
Verweisen auf WudfRd.inf (Windows 11 und höher)
Unter echoum.inx finden Sie eine Beispiel-INF, die diese Technik verwendet. Alternativ können Sie einen der folgenden Codeausschnitte verwenden.
So installieren Sie den WudfRd-Dienst als Funktionstreiber für das Gerät:
[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
So installieren Sie den WudfRd-Dienst als oberen Filtertreiber:
[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
So installieren Sie den WudfRd-Dienst als niedrigeren Filtertreiber:
[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
Verwenden einer AddService-Direktive (Windows 10 und früher)
Das folgende Codebeispiel zeigt, wie die INF-Datei für einen UMDF-Funktionstreiber den Reflektor hinzufügen kann.
[Skeleton_Install.Services]
AddService=WUDFRd,0x000001fa,WUDFRD_ServiceInstall
In diesem Beispiel gibt der Treiber das 0x2-Flag (SPSVCINST_ASSOCSERVICE) an (ORed in den flags-Parameter oben), um den Reflektor als Funktionstreiber im Kernelmodus-Gerätestapel zuzuweisen.
Die AddService-Direktive legt auch die 0x000001f8-Flags fest, um zu verhindern, dass bereits vorhandene Konfigurationen für den Dienst überschrieben werden. Weitere Informationen zu diesen Flags finden Sie im Flags-Parameter der AddService-Direktive.
Das folgende Codebeispiel aus dem WUDFVhidmini-Beispiel zeigt eine AddService-Direktive für einen UMDF-Filtertreiber.
[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
In diesem Fall ist der dienst mshidumdf der FDO für den Gerätestapel zugeordnet, und der Reflektor ist ein niedrigerer Filter.
Bereitstellen eines Dienstinstallationsabschnitts
Die AddService-Direktive verweist auf einen Dienstinstallationsabschnitt ähnlich dem folgenden Codebeispiel. Der ServiceType-Eintrag gibt 1 oder 0x00000001 an, was angibt, dass der INF Unterstützung für mindestens ein Gerät installiert. Der StartType-Eintrag gibt an, wann der Treiber gestartet werden soll. Der Eintrag ErrorControl gibt die Vom Treiber bereitgestellte Fehlersteuerungsebene an. Der ServiceBinary-Eintrag gibt den Pfad zur Binärdatei (reflektor) für den Dienst an.
[WUDFRD_ServiceInstall]
DisplayName = "Windows Driver Frameworks - User-mode Driver Framework Reflector"
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\WUDFRd.sys