Spécification du réflecteur dans un fichier INF
À compter de Windows 11, la méthode recommandée pour ajouter le réflecteur (WUDFRd.sys) à la pile d’appareils en mode noyau consiste à référencer le fichier WudfRd.inf fourni par le système dans le fichier INF d’un pilote UMDF.
Notes
WudfRd.inf est inclus uniquement avec Windows 11 et versions ultérieures.
Sur Windows 10 et les versions antérieures, pour ajouter le réflecteur (WUDFRd.sys), le fichier INF d’un pilote UMDF doit inclure une directive AddService dans une section INF DDInstall.Services ainsi qu’une section d’installation de service. Bien que cette méthode fonctionne toujours sur Windows 11 et versions ultérieures, elle n’est pas recommandée.
Dans les deux méthodes, le réflecteur peut être un filtre supérieur, un filtre inférieur ou le service pour l’appareil, selon la configuration de la pile en mode utilisateur.
Référencement de WudfRd.inf (Windows 11 et versions ultérieures)
Vous trouverez un exemple d’INF qui utilise cette technique à l’adresse echoum.inx. Vous pouvez également utiliser l’un des extraits de code suivants.
Pour installer le service WudfRd en tant que pilote de fonction pour l’appareil :
[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
Pour installer le service WudfRd en tant que pilote de filtre supérieur :
[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
Pour installer le service WudfRd en tant que pilote de filtre inférieur :
[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
Utilisation d’une directive AddService (Windows 10 et versions antérieures)
L’exemple de code suivant montre comment le fichier INF d’un pilote de fonction UMDF peut ajouter le réflecteur.
[Skeleton_Install.Services]
AddService=WUDFRd,0x000001fa,WUDFRD_ServiceInstall
Dans cet exemple, le pilote spécifie l’indicateur 0x2 (SPSVCINST_ASSOCSERVICE) (ORed dans le paramètre d’indicateurs ci-dessus) pour affecter le réflecteur comme pilote de fonction dans la pile de périphériques en mode noyau.
La directive AddService définit également les indicateurs 0x000001f8 pour empêcher le remplacement de toute configuration préexistante pour le service. Pour plus d’informations sur ces indicateurs, consultez le paramètre flags de la directive AddService.
L’exemple de code suivant, tiré de l’exemple WUDFVhidmini, montre une directive AddService pour un pilote de filtre 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
Dans ce cas, le service mshidumdf est associé au FDO pour la pile de l’appareil, et le réflecteur est un filtre inférieur.
Fourniture d’une section d’installation de service
La directive AddService fait référence à une section d’installation de service similaire à l’exemple de code suivant. L’entrée ServiceType spécifie 1 ou 0x00000001, ce qui indique que l’inf installe la prise en charge d’un ou plusieurs appareils. L’entrée StartType spécifie quand démarrer le pilote. L’entrée ErrorControl spécifie le niveau de contrôle d’erreur fourni par le pilote. L’entrée ServiceBinary spécifie le chemin d’accès au fichier binaire (le réflecteur) du service.
[WUDFRD_ServiceInstall]
DisplayName = "Windows Driver Frameworks - User-mode Driver Framework Reflector"
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\WUDFRd.sys