Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
In modalità utente, i dispositivi che appartengono alle classi di configurazione del dispositivo o alle classi di interfaccia dispositivo vengono gestiti usando gli elementi delle informazioni sul dispositivo e i set di informazioni sul dispositivo. Un set di informazioni sul dispositivo è costituito da elementi di informazioni sul dispositivo per tutti i dispositivi appartenenti a una classe di configurazione del dispositivo o a una classe di interfaccia dispositivo.
Ogni elemento di informazioni sul dispositivo contiene un handle per il devnode del dispositivo e un puntatore a una lista concatenata di tutte le interfacce dispositivo associate al dispositivo descritto da tale elemento. Se un set di informazioni sul dispositivo descrive i membri di una classe di installazione, l'elemento potrebbe non puntare ad alcuna interfaccia del dispositivo, poiché i membri della classe di installazione non sono necessariamente associati a un'interfaccia.
Il diagramma seguente mostra la struttura interna di un set di informazioni sul dispositivo.
Creazione di un set di informazioni sul dispositivo
Dopo aver creato un set di informazioni sul dispositivo con SetupDiCreateDeviceInfoList, è possibile creare e aggiungere elementi di informazioni sul dispositivo all'elenco uno alla volta usando SetupDiCreateDeviceInfo. In alternativa, è possibile chiamare SetupDiGetClassDevs per creare un set di informazioni sul dispositivo composto da tutti i dispositivi associati a una classe di configurazione del dispositivo o a una classe di interfaccia dispositivo specificata.
Enumerazione delle informazioni sul dispositivo
Dopo aver creato un set di informazioni sul dispositivo, è possibile enumerare sia i dispositivi che le interfacce del dispositivo appartenenti al set, ma sono necessarie operazioni diverse per ogni tipo di enumerazione. SetupDiEnumDeviceInfo enumera tutti i dispositivi che appartengono al set di informazioni che soddisfano determinati criteri. Ogni chiamata a SetupDiEnumDeviceInfo estrae una struttura SP_DEVINFO_DATA che corrisponde approssimativamente a un elemento di informazioni sul dispositivo. SP_DEVINFO_DATA contiene il GUID della classe a cui appartiene il dispositivo e un handle di istanza del dispositivo che punta al devnode del dispositivo. La differenza principale tra una struttura SP_DEVINFO_DATA e un elemento dispositivo completo è che SP_DEVINFO_DATA non contiene l'elenco collegato di interfacce associate al dispositivo. Pertanto, SetupDiEnumDeviceInfo non può essere usato per enumerare le interfacce nel set di informazioni sul dispositivo.
Per enumerare le interfacce del dispositivo in un set di informazioni sul dispositivo, chiamare SetupDiEnumDeviceInterfaces. Questa routine illustra tutti gli elementi delle informazioni sul dispositivo nel set di informazioni sul dispositivo, estrae le interfacce nell'elenco di interfacce di ogni elemento e restituisce un'interfaccia con ogni chiamata. Se al secondo parametro di SetupDiEnumDeviceInterfaces viene passata come input una struttura SP_DEVINFO_DATA, l'enumerazione è limitata solo alle interfacce associate al dispositivo indicato da SP_DEVINFO_DATA.
SetupDiEnumDeviceInterfaces restituisce una struttura SP_DEVICE_INTERFACE_DATA . SP_DEVICE_INTERFACE_DATA contiene il GUID della classe di interfaccia e altre informazioni sull'interfaccia, incluso un campo riservato con informazioni codificate che possono essere usate per ottenere il nome dell'interfaccia. Per ottenere il nome dell'interfaccia, è necessario un ulteriore passaggio: è necessario chiamare SetupDiGetDeviceInterfaceDetail . SetupDiGetDeviceInterfaceDetail restituisce una struttura di tipo SP_DEVICE_INTERFACE_DETAIL_DATA che contiene il percorso nell'albero degli oggetti di sistema che definisce l'interfaccia.