Compartir a través de


Especificar el reflector en un archivo INF

A partir de Windows 11, la manera recomendada de agregar el reflector (WUDFRd.sys) a la pila de dispositivos en modo kernel es hacer referencia al archivo WudfRd.inf proporcionado por el sistema en el archivo INF de un controlador UMDF.

Nota:

WudfRd.inf solo se incluye con Windows 11 y versiones posteriores.

En Windows 10 y versiones anteriores, para agregar el reflector (WUDFRd.sys), el archivo INF de un controlador UMDF debe incluir una directiva AddService en una sección INF DDInstall.Services, así como una sección service-install-section. Aunque este método sigue funcionando en Windows 11 y versiones posteriores, no se recomienda.

En ambos métodos, el reflector puede ser un filtro superior, un filtro inferior o el servicio del dispositivo, según la configuración de la pila en modo de usuario.

Hacer referencia a WudfRd.inf (Windows 11 y versiones posteriores)

Puede encontrar un INF de ejemplo que use esta técnica en echoum.inx. Como alternativa, use uno de los fragmentos de código siguientes.

Para instalar el servicio WudfRd como controlador de función para el dispositivo:

[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

Para instalar el servicio WudfRd como un controlador de filtro superior:

[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

Para instalar el servicio WudfRd como un controlador de filtro inferior:

[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

Uso de una directiva AddService (Windows 10 y versiones anteriores)

En el ejemplo de código siguiente se muestra cómo el archivo INF de un controlador de función UMDF podría agregar el reflector.

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

En este ejemplo, el controlador especifica la marca 0x2 (SPSVCINST_ASSOCSERVICE) (ORed en el parámetro flags anterior) para asignar el reflector como controlador de función en la pila de dispositivos en modo kernel.

La directiva AddService también establece las marcas de 0x000001f8 para evitar sobrescribir cualquier configuración preexistente para el servicio. Para obtener más información sobre estas marcas, vea el parámetro flags de la directiva AddService.

En el ejemplo de código siguiente, tomado del ejemplo WUDFVhidmini, se muestra una directiva AddService para un controlador de filtro 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

En este caso, el servicio mshidumdf está asociado al FDO para la pila de dispositivos y el reflector es un filtro inferior.

Proporcionar una sección service-install-section

La directiva AddService hace referencia a una sección service-install-similar al ejemplo de código siguiente. La entrada ServiceType especifica 1 o 0x00000001, lo que indica que inf instala compatibilidad con uno o varios dispositivos. La entrada StartType especifica cuándo se debe iniciar el controlador. La entrada ErrorControl especifica el nivel de control de error que proporciona el controlador. La entrada ServiceBinary especifica la ruta de acceso al binario (el reflector) del servicio.

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