Condividi tramite


Confronto tra classi di installazione e classi di interfaccia

Comprendere la distinzione tra le classi di installazione dei dispositivi e le classi di interfaccia dispositivo è fondamentale per il successo dello sviluppo di driver Windows e della gestione dei dispositivi. Anche se queste classi potrebbero apparire simili, fungono da scopi fondamentalmente diversi nell'ecosistema di dispositivi Windows. Le classi di installazione regolano il modo in cui il sistema operativo installa e configura i dispositivi. Le classi di interfaccia consentono la comunicazione e le funzionalità di runtime tra driver, applicazioni e dispositivi. Comprendere questa distinzione consente di scegliere il tipo di classe corretto per l'installazione del dispositivo, implementare le notifiche del dispositivo appropriate ed evitare problemi di sviluppo comuni.

Un dispositivo spesso appartiene a una classe di installazione ed espone diverse interfacce di dispositivo in classi di interfaccia diverse contemporaneamente. Tuttavia, i due tipi di classi servono scopi diversi e non sono intercambiabili.

Diagramma che mostra la relazione tra un dispositivo, la relativa classe di installazione e le varie classi di interfaccia.

Comparison

La tabella seguente riepiloga le differenze principali e le relazioni tra classi di installazione e classi di interfaccia:

Aspetto Classi di installazione Classi di interfaccia
Scopo principale Raggruppamento di dispositivi con installazione e configurazione simili Raggruppamento di interfacce di dispositivo che forniscono funzionalità e comunicazioni simili
Utilizzo Usato da Windows durante l'installazione del dispositivo Usato da driver e applicazioni per l'interazione del dispositivo
Definizioni GUID In genere definito in Devguid.h Definito nei file di intestazione specifici del dispositivo (ad esempio Ntddmou.h, Ntddpar.h)
Criteri di raggruppamento Dispositivi installati e configurati in modo analogo In genere, le interfacce di dispositivo che implementano un contratto I/O specifico
Notifica Non usato per le notifiche di arrivo o rimozione del dispositivo Usato per la registrazione delle notifiche di arrivo e rimozione dell'interfaccia del dispositivo
Examples Sensori, Firmware, Bluetooth Acquisizione audio, rendering audio, sensore di luce ambientale
Relazione Un dispositivo appartiene a una classe di installazione Un dispositivo può esporre zero o più interfacce di dispositivo in classi di interfaccia diverse
Vita Rilevante durante il processo di installazione Rilevante durante l'operazione del dispositivo

È importante distinguere tra i due tipi di classi di dispositivi: classi di interfaccia dispositivo e classi di configurazione del dispositivo. I due possono essere facilmente confusi. Nel codice in modalità utente entrambe le classi usano lo stesso set di funzioni di installazione del dispositivo. Usano anche lo stesso set di strutture di dati (set di informazioni sul dispositivo).

Stessa classe di installazione, classi di interfaccia diverse:

  • Dispositivi: due dispositivi sensore diversi
  • Classe setup: entrambi i dispositivi si trovano nella classe Sensors .
  • Classi di interfaccia: un sensore espone un'interfaccia del dispositivo sensore di luce ambientale e l'altra espone un'interfaccia del dispositivo accelerometro.

Si consideri un dispositivo mouse USB e un dispositivo da tastiera USB. Entrambi usano la stessa classe di interfaccia (Human Interface Device). Ma appartengono rispettivamente a classi di configurazione diverse, mouse e tastiera.

Stessa classe di interfaccia, classi di installazione diverse:

  • Dispositivi: un mouse USB e una tastiera USB
  • Classe di interfaccia: entrambi i dispositivi usano la stessa classe di interfaccia (Human Interface Device) per comunicare con il sistema.
  • Classi di installazione: il dispositivo mouse appartiene alla classe di installazione mouse , mentre il dispositivo tastiera appartiene alla classe di installazione Tastiera .

Classi di installazione del dispositivo

Le classi di installazione dei dispositivi sono categorie predefinite usate esclusivamente per l'installazione e la configurazione dei dispositivi in Windows. Consentono al sistema operativo di comprendere come gestire il dispositivo durante il processo di installazione. Le classi di installazione forniscono un meccanismo per il raggruppamento dei dispositivi installati e configurati nello stesso modo. Per altre informazioni sulle classi di installazione, vedere Classi di installazione dei dispositivi definite dal sistema disponibili per i fornitori.

Le classi di installazione dei dispositivi Windows sono definite nel file di sistema Devguid.h. Questo file definisce una serie di GUID per le classi di installazione. Tuttavia, le classi di installazione del dispositivo rappresentate in Devguid.h non devono essere confuse con le classi di interfaccia dispositivo. Il file Devguid.h contiene solo GUID per le classi di installazione.

Classi dell'interfaccia del dispositivo

Le classi di interfaccia dispositivo forniscono un meccanismo per raggruppare le interfacce dei dispositivi in base a caratteristiche o funzionalità condivise. I driver e le applicazioni utente possono registrarsi per le notifiche sulle interfacce di dispositivo in una determinata classe di interfaccia. Ciò significa che ricevono una notifica quando un'interfaccia del dispositivo appartenente a tale classe è abilitata (arriva) o è disabilitata (rimossa). Non è necessario tenere traccia dei singoli dispositivi. Le classi dell'interfaccia dispositivo raggruppano le interfacce dei dispositivi esposte dai dispositivi. Ti registri per le notifiche relative all'arrivo e alla rimozione delle interfacce del dispositivo.

Le definizioni delle classi di interfaccia non vengono fornite in un singolo file. Una classe di interfaccia dispositivo viene sempre definita in un file di intestazione che appartiene esclusivamente a una determinata classe di dispositivi. Ad esempio, Ntddmou.h contiene la definizione di GUID_DEVINTERFACE_MOUSE, il GUID che rappresenta la classe dell'interfaccia del mouse. Ntddpar.h definisce il GUID della classe di interfaccia per i dispositivi paralleli. Ntddpcm.h definisce il GUID della classe di interfaccia standard per i dispositivi PCMCIA. Ntddstor.h definisce il GUID della classe di interfaccia per i dispositivi di archiviazione.

Per eseguire la registrazione per le notifiche dell'interfaccia del dispositivo, usare i GUID presenti nei file di intestazione specifici della classe dell'interfaccia del dispositivo. Questi GUID consentono di ricevere una notifica quando arriva un'istanza dell'interfaccia del dispositivo. Se un driver esegue la registrazione per la notifica usando un GUID della classe di installazione anziché un GUID della classe di interfaccia, non riceve una notifica quando arriva un'interfaccia.

Quando si definisce una nuova classe di interfaccia, non usare un singolo GUID per identificare sia una classe di installazione che una classe di interfaccia.