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.
Entender a distinção entre classes de configuração de dispositivo e classes de interface do dispositivo é crucial para o desenvolvimento bem-sucedido do driver do Windows e o gerenciamento de dispositivos. Embora essas classes possam parecer semelhantes, elas atendem a propósitos fundamentalmente diferentes no ecossistema de dispositivos Windows. As classes de instalação regem como o sistema operacional instala e configura os dispositivos. As classes de interface habilitam a comunicação e a funcionalidade do runtime entre drivers, aplicativos e dispositivos. Entender essa distinção ajuda você a escolher o tipo de classe correto para a instalação do dispositivo, implementar notificações de dispositivo adequadas e evitar armadilhas comuns de desenvolvimento.
Um dispositivo geralmente pertence a uma classe de instalação e expõe várias interfaces de dispositivo em classes de interface diferentes ao mesmo tempo. No entanto, os dois tipos de classes atendem a diferentes finalidades e não são intercambiáveis.
Comparison
A tabela a seguir resume as principais diferenças e relações entre classes de instalação e classes de interface:
| Aspecto | Classes de instalação | Classes de interface |
|---|---|---|
| Finalidade primária | Agrupamento de dispositivos com instalação e configuração semelhantes | Agrupando interfaces de dispositivo que fornecem funcionalidade e comunicação semelhantes |
| Uso | Usado pelo Windows durante a instalação do dispositivo | Usado por drivers e aplicativos para interação do dispositivo |
| Definições de GUID | Normalmente definido em Devguid.h | Definido em arquivos de cabeçalho específicos do dispositivo (por exemplo, Ntddmou.h, Ntddpar.h) |
| Critérios de agrupamento | Dispositivos instalados e configurados da mesma forma | Geralmente, interfaces de dispositivo que implementam um contrato de E/S específico |
| Notificação | Não usado para notificações de chegada ou remoção do dispositivo | Usado para registrar notificações de chegada e remoção da interface do dispositivo |
| Examples | Sensores, firmware, Bluetooth | Captura de áudio, renderização de áudio, sensor de luz ambiente |
| Relação | Um dispositivo pertence a uma classe de configuração | Um dispositivo pode expor zero ou mais interfaces de dispositivo em classes de interface diferentes |
| Vida | Relevante durante o processo de instalação | Relevante durante a operação do dispositivo |
É importante distinguir entre os dois tipos de classes de dispositivo: classes de interface do dispositivo e classes de instalação de dispositivo. Os dois podem ser facilmente confundidos. No código do modo de usuário, ambas as classes usam o mesmo conjunto de funções de instalação do dispositivo. Eles também usam o mesmo conjunto de estruturas de dados (conjuntos de informações do dispositivo).
Mesma classe de instalação, classes de interface diferentes:
- Dispositivos: dois dispositivos de sensor diferentes
- Classe de instalação: ambos os dispositivos estão na classe Sensors .
- Classes de interface: um sensor expõe uma interface de dispositivo do sensor de luz ambiente e o outro expõe uma interface do dispositivo acelerômetro.
Considere um dispositivo de mouse USB e um dispositivo de teclado USB. Ambos usam a mesma classe de interface (Dispositivo de Interface Humana). Mas eles pertencem a classes de instalação diferentes, Mouse e Teclado, respectivamente.
Mesma classe de interface, classes de instalação diferentes:
- Dispositivos: um mouse USB e um teclado USB
- Classe de interface: ambos os dispositivos utilizam a mesma classe de interface (Dispositivo de Interface Humana) para se comunicar com o sistema.
- Classes de Instalação: o dispositivo do mouse pertence à classe de instalação do Mouse , enquanto o dispositivo de teclado pertence à classe de instalação teclado .
Classes de instalação do dispositivo
As classes de instalação do dispositivo são categorias predefinidas usadas exclusivamente para a instalação e configuração de dispositivos no Windows. Eles ajudam o sistema operacional a entender como gerenciar o dispositivo durante o processo de instalação. As classes de instalação fornecem um mecanismo para agrupar dispositivos instalados e configurados da mesma maneira. Para obter mais informações sobre classes de instalação, consulte classes de instalação de dispositivo definidas pelo sistema disponíveis para fornecedores.
As classes de instalação do dispositivo Windows são definidas no arquivo de sistema Devguid.h. Esse arquivo define uma série de GUIDs para classes de instalação. No entanto, as classes de instalação do dispositivo representadas em Devguid.h não devem ser confundidas com classes de interface do dispositivo. O arquivo Devguid.h contém apenas GUIDs para classes de instalação.
Classes de interface do dispositivo
As classes de interface do dispositivo fornecem um mecanismo para agrupar interfaces de dispositivo de acordo com características ou funcionalidades compartilhadas. Drivers e aplicativos de usuário podem se registrar para notificações sobre interfaces de dispositivo em uma classe de interface específica. Isso significa que eles são notificados quando qualquer interface de dispositivo pertencente a essa classe está habilitada (chega) ou está desabilitada (removida). Eles não precisam rastrear dispositivos individuais. As classes de interface do dispositivo estão agrupando interfaces de dispositivo expostas por dispositivos. Você se registra para notificações de chegada e remoção de interfaces de dispositivo.
As definições de classes de interface não são fornecidas em um único arquivo. Uma classe de interface do dispositivo é sempre definida em um arquivo de cabeçalho que pertence exclusivamente a uma classe específica de dispositivos. Por exemplo, Ntddmou.h contém a definição de GUID_DEVINTERFACE_MOUSE, o GUID que representa a classe de interface do mouse. Ntddpar.h define o GUID da classe de interface para dispositivos paralelos. Ntddpcm.h define o GUID da classe de interface padrão para dispositivos PCMCIA. Ntddstor.h define o GUID da classe de interface para dispositivos de armazenamento.
Para se registrar para notificações de interface do dispositivo, use os GUIDs encontrados nos arquivos de cabeçalho específicos para a classe de interface do dispositivo. Esses GUIDs permitem que você seja notificado quando uma instância de interface do dispositivo chegar. Se um driver se registrar para notificação usando um GUID de classe de instalação em vez de um GUID de classe de interface, ele não será notificado quando uma interface chegar.
Ao definir uma nova classe de interface, não use um único GUID para identificar uma classe de instalação e uma classe de interface.