Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Qualsiasi driver di un dispositivo fisico, logico o virtuale a cui il codice in modalità utente può indirizzare le richieste di I/O deve fornire un nome per i client in modalità utente. Usando il nome, un'applicazione in modalità utente (o un altro componente di sistema) identifica il dispositivo da cui richiede L/O.
In Windows NT 4.0 e versioni precedenti del sistema operativo basato su NT i driver hanno denominato i relativi oggetti dispositivo e quindi sono stati configurati collegamenti simbolici nel Registro di sistema tra questi nomi e un nome logico Win32 visibile dall'utente.
A partire da Windows 2000, i driver non denominano gli oggetti dispositivo. Usano invece interfacce di dispositivo raggruppate per classi di interfaccia dispositivo. Una classe di interfaccia dispositivo è un modo per esportare funzionalità di dispositivo e driver in altri componenti di sistema, inclusi altri driver, nonché applicazioni in modalità utente. Un driver può registrare e abilitare un'istanza dell'interfaccia del dispositivo della classe di interfaccia dispositivo per ogni oggetto dispositivo a cui possono essere inviate richieste di I/O in modalità utente. Ogni classe di interfaccia dispositivo deve rappresentare una funzionalità concettuale che qualsiasi interfaccia del dispositivo in tale classe deve supportare o rappresentare, ad esempio un particolare contratto di I/O.
Ogni classe di interfaccia del dispositivo è associata a un GUID. Il sistema definisce i GUID per le classi di interfaccia dispositivo comuni nei file di intestazione specifici del dispositivo. I fornitori possono creare classi di interfaccia dispositivo aggiuntive.
Ad esempio, tre diversi tipi di dispositivi mouse potrebbero registrare interfacce di dispositivo che sono membri della stessa classe di interfaccia dispositivo, anche se una si connette tramite una porta USB, un secondo tramite una porta seriale e la terza tramite una porta a infrarossi. Ogni driver registra il dispositivo come membro della classe di interfaccia GUID_DEVINTERFACE_MOUSE. Questo GUID è definito nel file di intestazione Ntddmou.h.
I driver possono registrare e abilitare le interfacce di dispositivo per un dispositivo per cui controllano tutte le classi di interfaccia dispositivo per cui il dispositivo e il driver supportano la funzionalità. Ad esempio, un driver per un disco che può essere montato deve essere registrato sia per la relativa classe di interfaccia disco (GUID_DEVINTERFACE_DISK) che per la classe di dispositivo montabile (MOUNTDEV_MOUNTED_DEVICE_GUID).
Quando un driver registra un'istanza dell'interfaccia dispositivo di una classe di interfaccia dispositivo, il gestore di I/O associa il dispositivo e il GUID della classe di interfaccia del dispositivo a un nome di collegamento simbolico. Il driver deve abilitarel'interfaccia del dispositivo affinché tale collegamento simbolico sia utilizzabile per un driver o un'applicazione a cui inviare I/O. La registrazione del nome del collegamento viene mantenuta all'avvio del sistema, ma l'interfaccia del dispositivo deve essere abilitata dal driver in ogni enumerazione del dispositivo. Un'applicazione che usa una classe di interfaccia dispositivo specifica può eseguire query per le istanze delle interfacce di dispositivo in tale classe e ricevere un elenco di nomi di collegamento simbolici che rappresentano i dispositivi che supportano l'interfaccia. L'applicazione può quindi usare il nome del collegamento simbolico come destinazione per le richieste di I/O.
Non confondere le interfacce del dispositivo con le interfacce che i driver possono esportare in risposta a una richiesta di IRP_MN_QUERY_INTERFACE . L'IRP viene utilizzato per trasferire i punti di ingresso di routine tra i driver in modalità kernel-mode.