Camadas de driver WDM: um exemplo
Esta seção descreve um possível conjunto de drivers WDM para hardware USB para ilustrar as camadas do driver WDM.
A figura a seguir mostra uma configuração de hardware PnP de exemplo para um joystick USB.
Nessa figura, o joystick USB se conecta a uma porta em um hub USB. O hub USB neste exemplo reside na placa controlador de host USB e é conectado à porta única na placa do controlador de host USB. O controlador de host USB conecta-se a um barramento PCI. De uma perspectiva PnP, o hub USB, o controlador de host USB e o barramento PCI são todos dispositivos de ônibus porque cada um deles fornece portas. O joystick não é um dispositivo de ônibus.
A figura a seguir mostra um conjunto de exemplos de drivers que podem ser carregados para o hardware de joystick USB na figura anterior.
Começando na parte inferior da figura anterior, os drivers na pilha de exemplo incluem:
Um driver PCI que dirige o barramento PCI. Este é um motorista de ônibus PnP. O driver de barramento PCI é fornecido com o sistema pela Microsoft.
O driver de barramento para o controlador de host USB é implementado como um par de drivers de classe/miniclasse. A classe do controlador de host USB e os drivers de miniclasse são fornecidos com o sistema pela Microsoft.
O driver de barramento do hub USB que dirige o hub USB. O driver do hub USB é fornecido com o sistema pela Microsoft.
Três drivers para o dispositivo joystick; um deles é um par de classe/miniclasse.
O driver de função, o driver main para o dispositivo joystick, é o par de driver de classe HID/driver de miniclasse USB HID. (HID representa "Dispositivo de Interface Humana".) O driver de miniclasse HID USB dá suporte à semântica específica de USB de dispositivos HID, contando com a DLL do driver de classe HID para suporte geral à HID.
Um driver de função pode ser específico para um dispositivo específico ou, como no caso de HID, um driver de função pode atender a um grupo de dispositivos. Neste exemplo, o par de drivers de miniclasse USB/driver de classe HID atende a qualquer dispositivo compatível com HID no sistema em um barramento USB. Um driver de classe HID/par de motoristas de miniclasse HID 1394 atenderia a qualquer dispositivo compatível com HID em um ônibus 1394.
Um driver de função pode ser escrito pelo fornecedor do dispositivo ou pela Microsoft. Neste exemplo, o driver de função (o par de drivers de miniclasse HID/CLASSE HID USB) é escrito pela Microsoft.
Há dois drivers de filtro para o dispositivo joystick neste exemplo: um filtro de classe de nível superior que adiciona um recurso de botão de macro e um filtro de dispositivo de nível inferior que permite que o joystick emule um dispositivo de mouse.
O filtro de nível superior é escrito por alguém que precisa filtrar a E/S do joystick e o driver de filtro de nível inferior é escrito pelo fornecedor do joystick.
Os clientes HID do modo kernel e do usuário e o aplicativo não são drivers, mas são mostrados para integridade.