Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A partir do Windows 11, a maneira recomendada de adicionar o refletor (WUDFRd.sys) à pilha de dispositivos de modo kernel é fazer referência ao arquivo WudfRd.inf fornecido pelo sistema no arquivo INF de um driver UMDF.
Observação
WudfRd.inf está incluído apenas no Windows 11 e posterior.
No Windows 10 e versões anteriores, para adicionar o refletor (WUDFRd.sys), o ficheiro INF de um driver UMDF deve incluir uma diretiva AddService numa secção INF DDInstall.Services, bem como uma secção de instalação de serviço. Embora este método ainda funcione no Windows 11 e posterior, não é recomendado.
Em ambos os métodos, o refletor pode ser um filtro superior, um filtro inferior ou o serviço para o dispositivo, dependendo da configuração da pilha de modo de usuário.
Fazendo referência ao WudfRd.inf (Windows 11 e posterior)
Você pode encontrar um exemplo de INF que usa essa técnica em echoum.inx. Como alternativa, use um dos seguintes trechos.
Para instalar o serviço WudfRd como o controlador de função para o 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 o serviço WudfRd como um driver 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 o serviço WudfRd como um driver 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
Usando uma diretiva AddService (Windows 10 e versões anteriores)
O exemplo de código a seguir mostra como o arquivo INF para um driver de função UMDF pode adicionar o refletor.
[Skeleton_Install.Services]
AddService=WUDFRd,0x000001fa,WUDFRD_ServiceInstall
Neste exemplo, o driver especifica o sinalizador 0x2 (SPSVCINST_ASSOCSERVICE) (aplicado no parâmetro flags acima) para atribuir o refletor como o driver de função na pilha de dispositivos do modo kernel.
A diretiva AddService configura os sinalizadores 0x000001f8 para também evitar a sobreposição de qualquer configuração preexistente para o serviço. Para obter mais informações sobre esses sinalizadores, consulte o parâmetro flags da diretiva AddService.
O exemplo de código a seguir, retirado do exemplo WUDFVhidmini, mostra uma diretiva AddService para um driver 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
Neste caso, o serviço mshidumdf está associado ao FDO para a pilha de dispositivos, e o refletor é um filtro de nível inferior.
Fornecimento de uma secção de instalação de serviço
A diretiva AddService faz referência a uma seção service-install, semelhante ao exemplo de código a seguir. A entrada ServiceType especifica 1 ou 0x00000001, o que indica que o INF instala suporte para um ou mais dispositivos. A entrada StartType especifica quando iniciar o driver. A entrada ErrorControl especifica o nível de controle de erro que o driver fornece. A entrada ServiceBinary especifica o caminho para o ficheiro binário (o refletor) do serviço.
[WUDFRD_ServiceInstall]
DisplayName = "Windows Driver Frameworks - User-mode Driver Framework Reflector"
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\WUDFRd.sys