Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Compreender a distinção entre classes de configuração de dispositivo e classes de interface de dispositivo é crucial para o desenvolvimento bem-sucedido de drivers do Windows e gerenciamento de dispositivos. Embora essas classes possam parecer semelhantes, elas servem a propósitos fundamentalmente diferentes no ecossistema de dispositivos Windows. As classes de instalação controlam como o sistema operacional instala e configura dispositivos. As classes de interface permitem a comunicação e a funcionalidade em tempo de execução entre drivers, aplicativos e dispositivos. Compreender 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 configuração e expõe várias interfaces de dispositivo em diferentes classes de interface ao mesmo tempo. No entanto, os dois tipos de classes têm finalidades diferentes e não são permutáveis.
Comparison
A tabela a seguir resume as principais diferenças e relações entre classes de configuração e classes de interface:
| Aspeto | Classes de configuração | Classes de interface |
|---|---|---|
| Objetivo principal | Agrupamento de dispositivos com instalação e configuração semelhantes | Agrupamento de interfaces de dispositivos que fornecem funcionalidade e comunicação semelhantes |
| Utilização | Usado pelo Windows durante a instalação do dispositivo | Usado por drivers e aplicativos para interação com dispositivos |
| Definições de GUID | Geralmente 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 de forma semelhante | Geralmente, interfaces de dispositivo que implementam um contrato de E/S específico |
| Notificação | Não utilizado para notificações de chegada ou remoção de dispositivos | 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 |
| Relacionamento | Um dispositivo pertence a uma classe de configuração | Um dispositivo pode expor zero ou mais interfaces de dispositivo em diferentes classes de interface |
| Tempo de vida | Relevante durante o processo de instalação | Relevante durante o funcionamento do dispositivo |
É importante distinguir entre os dois tipos de classes de dispositivo: classes de interface de dispositivo e classes de configuração de dispositivo. Os dois podem ser facilmente confundidos. No código de 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 configuração, diferentes classes de interface:
- Dispositivos: Dois dispositivos de sensor diferentes
- Classe de configuração: Ambos os dispositivos estão na classe Sensores .
- Classes de interface: Um sensor expõe uma interface de dispositivo de sensor de luz ambiente e o outro expõe uma interface de 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 diferentes classes de configuração, mouse e teclado, respectivamente.
Mesma classe de interface, diferentes classes de configuração:
- Dispositivos: Um rato USB e um teclado USB
- Classe de interface: Ambos os dispositivos utilizam a mesma classe de interface (Human Interface Device) para se comunicar com o sistema.
- Classes de configuração: O dispositivo de mouse pertence à classe de configuração do mouse , enquanto o dispositivo de teclado pertence à classe de configuração do teclado .
Classes de configuração do dispositivo
As classes de configuração de dispositivos 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 que são instalados e configurados da mesma maneira. Para obter mais informações sobre classes de instalação, consulte Classes de configuração de dispositivo definidas pelo sistema disponíveis para fornecedores.
As classes de configuração do dispositivo Windows são definidas no arquivo de sistema Devguid.h. Este arquivo define uma série de GUIDs para classes de instalação. No entanto, as classes de configuração de dispositivo representadas em Devguid.h não devem ser confundidas com classes de interface de dispositivo. O arquivo Devguid.h contém apenas GUIDs para classes de instalação.
Classes de interface do dispositivo
As classes de interface de 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 é ativada (chega) ou desativada (removida). Eles não precisam rastrear dispositivos individuais. As classes de interface de dispositivo agrupam 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 de 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 de 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 de dispositivo, use os GUIDs encontrados nos arquivos de cabeçalho que são específicos para a classe de interface de dispositivo. Esses GUIDs permitem que você seja notificado quando uma instância de interface de dispositivo chegar. Se um driver se registrar para notificação usando um GUID de classe de configuraçã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 configuração e uma classe de interface.