Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico descreve como criar um minidriver HID (Dispositivo de Interface Humana) usando o WDF (Windows Driver Frameworks).
Você pode escrever um minidriver HID usando KMDF ou UMDF. Recomendamos começar com o exemplo de minidriver vhidmini2. Você pode compilar esse driver de exemplo usando KMDF ou UMDF 2.x.
O que fornecer
Você escreverá um driver de filtro inferior em MsHidUmdf.sys (para UMDF) ou MsHidKmdf.sys (para KMDF), ambos incluídos como parte do sistema operacional.
Baixe e examine o exemplo de vhidmini2.
Chame WdfFdoInitSetFilter da função de retorno de chamada EvtDriverDeviceAdd do driver.
Crie filas de E/S para receber solicitações de E/S que MsHidUmdf.sys ou MsHidKmdf.sys passarem do driver de classe para o seu driver.
Forneça uma função de retorno de chamada EvtIoDeviceControl que se ramifica a manipuladores de método específicos do IOCTL. Examine os IOCTLs descritos em IOCTLs do Minidriver HID do WDF e verifique se o driver manipula os relevantes para seu dispositivo.
Para UMDF, se seu driver for enumerado pelo ACPI, habilite a suspensão seletiva opcionalmente. Na chave de hardware do dispositivo, adicione uma subchave EnableDefaultIdleNotificationHandler e defina-a como 1.
Para o UMDF, defina as seguintes diretivas INF na seção específica DDInstall do WDF em seu arquivo INF:
- UmdfKernelModeClientPolicy para AllowKernelModeClients para que o driver de passagem do modo kernel possa ser carregado na pilha.
- UmdfMethodNeitherAction para Copiar para permitir que o UMDF processe IOCTLs do tipo METHOD_NEITHER.
- UmdfFileObjectPolicy para AllowNullAndUnknownFileObjects
- UmdfFsContextUsePolicy para CanUseFsContext2
Por exemplo:
[hidumdf.NT.Wdf] UmdfKernelModeClientPolicy = AllowKernelModeClients UmdfMethodNeitherAction=Copy UmdfFileObjectPolicy=AllowNullAndUnknownFileObjects UmdfFsContextUsePolicy = CanUseFsContext2
Se você estiver escrevendo um minidriver HID da UMDF para Windows 7, baixe o WDK (Windows Driver Kit) 8.1 para obter o código-fonte para HidUmdf.sys. Em seguida, escreva um driver UMDF 1.11 e inclua HidUmdf.sys e UMDF 1.11 em seu pacote de driver.
Architecture
O driver de classe HID (HidClass.sys) e a estrutura fornecem rotinas de despacho de WDM conflitantes para lidar com algumas solicitações de E/S, como solicitações de Plug and Play e gerenciamento de energia, para minidrivers. Como resultado, um minidriver HID não pode vincular ao driver de classe e à estrutura. Portanto, a Microsoft fornece MsHidUmdf.sys e MsHidKmdf.sys, que são drivers WDM que residem entre o driver de classe e o minidriver.
Tanto MsHidUmdf.sys quanto MsHidKmdf.sys chamam a rotina hidRegisterMinidriver do driver de classe HID para se registrarem como o minidriver HID real. Embora esses drivers atuem como o driver de funções do dispositivo, eles apenas passam solicitações de E/S do driver de classe para o driver (e, portanto, às vezes são chamados de drivers de passagem). Para KMDF e UMDF, o único componente que você fornece é o minidriver HID, que é um driver de filtro secundário que fica sob o driver de passagem.
Arquitetura umdf:
Arquitetura KMDF: