Compartilhar via


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.

diagrama ilustrando o hardware de exemplo de plug and play 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.

diagrama ilustrando camadas de driver de exemplo plug and play para um joystick usb.

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.