Compartilhar via


Camadas de driver do WDM: um exemplo

Esta seção descreve um possível conjunto de drivers WDM para hardware USB para ilustrar camadas de driver do WDM.

A figura a seguir mostra uma configuração de hardware PnP de exemplo para um joystick USB.

diagrama ilustrando o hardware de exemplo 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 está conectado à porta única na placa do controlador de host USB. O controlador de host USB conecta-se a um barramento PCI. Sob uma perspectiva PnP, o hub USB, o controlador de host USB e o barramento PCI consistem todos em dispositivos de barramento, pois cada um fornece portas. O joystick não é um dispositivo de barramento.

A figura a seguir mostra um conjunto de exemplos de drivers que podem ser carregados para o hardware do joystick USB na figura anterior.

diagrama ilustrando camadas de driver de exemplo Plug and Play para um joystick USB.

Começando pela parte inferior da figura anterior, os drivers na pilha de exemplo incluem:

  • Um driver PCI que controla 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. Os drivers da classe controladora de host USB e miniclasse são fornecidos com o sistema pela Microsoft.

  • O driver do hub USB que controla o hub. 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 funcional, que é o principal driver para o dispositivo joystick, é o par de driver de classe HID e 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 da miniclasse USB HID/driver da classe HID atende a qualquer dispositivo compatível com HID no sistema em um barramento USB. Um driver de classe HID e um driver de miniclasse HID 1394 atenderiam a qualquer dispositivo compatível com HID em um barramento 1394.

    Um driver de função pode ser escrito pelo fornecedor do dispositivo ou pela Microsoft. Neste exemplo, o driver de função (driver da classe HID/driver da miniclasse 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 macro e um filtro de dispositivo de nível inferior que permite que o joystick emule um 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 de modo kernel e de modo usuário e o aplicativo não são drivers, mas são mostrados para fins de completude.