Configuração de exemplo de dispositivo e driver
Esta seção ilustra a relação entre as configurações de hardware e driver, usando os dispositivos de teclado e mouse como exemplo. As configurações diferem para outros dispositivos. Para obter informações completas sobre qualquer configuração de dispositivo, consulte a documentação específica do dispositivo no WDK (Windows Driver Kit).
A figura a seguir mostra duas configurações de hardware possíveis para os dispositivos de teclado e mouse:
Cada um conectado diretamente em algum lugar no barramento do sistema
Ambos conectados por meio de um teclado e um controlador de dispositivo auxiliar
A figura a seguir ilustra os drivers em camadas correspondentes para operações de E/S nos dispositivos mostrados na figura anterior.
Observe que drivers de dispositivos de teclado e mouse, qualquer que seja a configuração de hardware, podem usar a classe de teclado do sistema e drivers de classe de mouse para lidar com operações independentes de hardware. Eles são chamados de drivers de classe porque cada um fornece suporte necessário ao sistema, mas independente de hardware, para uma classe específica de dispositivo.
Um driver de porta correspondente implementa o suporte específico do dispositivo para executar as operações de E/S necessárias em cada dispositivo físico. O teclado (i8042) do sistema e o driver de porta de dispositivo auxiliar para plataformas baseadas em x86 gerenciam operações específicas do dispositivo para mouse e teclado. Em uma configuração de hardware em que cada dispositivo está conectado separadamente, conforme mostrado na figura que ilustra as configurações de hardware do teclado e do mouse, cada driver de classe do sistema pode ser colocado em camadas sobre drivers de porta específicos do dispositivo separados ou um único driver para cada dispositivo pode ser implementado como um driver separado e monolítico (de nível mais baixo).
Um novo driver intermediário, como um driver de filtro PnP, pode ser adicionado à configuração na figura que ilustra as camadas do driver do teclado e do mouse. Por exemplo, um driver de filtro adicionado acima do driver de classe de teclado pode filtrar a entrada do teclado de maneira específica da plataforma antes de passá-la pelos serviços de E/S para o subsistema que a solicitou. Esse driver de filtro deve reconhecer os mesmos IRPs e IOCTLs que o driver de classe de teclado.