Recupero delle relazioni dei dispositivi

In Windows Vista e versioni successive di Windows, il modello di proprietà del dispositivo unificato include le proprietà delle relazioni dei dispositivi. Il modello di proprietà del dispositivo unificato usa le chiavi delle proprietà per rappresentare queste proprietà. L'elenco delle relazioni rappresentate nel modello di proprietà del dispositivo unificato sono:

Windows Server 2003, Windows XP e Windows 2000 non supportano le chiavi delle proprietà del modello di proprietà unificata. È tuttavia possibile recuperare le informazioni corrispondenti chiamando le funzioni di gestione configurazione Plug and Play (PnP). Per mantenere la compatibilità con le versioni precedenti di Windows, Windows Vista e versioni successive supportano anche la chiamata alle funzioni di gestione configurazione PnP per recuperare le proprietà delle relazioni dei dispositivi. È tuttavia consigliabile usare le chiavi delle proprietà del modello di proprietà del dispositivo unificato per accedere alle proprietà delle relazioni del dispositivo. Per informazioni su come usare le chiavi delle proprietà per accedere alle proprietà del driver di dispositivo, vedere Accesso alle proprietà dell'istanza del dispositivo (Windows Vista e versioni successive).

Per informazioni su come accedere alle proprietà delle relazioni del dispositivo in Windows Server 2003, Windows XP e Windows 2000, vedere gli argomenti seguenti:

Recupero di relazioni di esezione, relazioni di rimozione e relazioni di potere e relazioni di bus

Recupero dell'elemento padre di un'istanza del dispositivo

Recupero degli elementi figlio di un'istanza di dispositivo

Recupero dei fratelli di un'istanza di dispositivo

Recupero di relazioni di esezione, relazioni di rimozione e relazioni di potere e relazioni di bus

Per recuperare le informazioni sulle relazioni dei dispositivi in Windows Server 2003, Windows XP e Windows 2000, chiamare CM_Get_Device_ID_List e fornire i valori dei parametri seguenti:

  • Impostare pszFilter su un puntatore a una stringa con terminazione NULL che specifica l'identificatore dell'istanza del dispositivo per cui recuperare le informazioni sulle relazioni.

  • Impostare Buffer su un puntatore a un buffer che riceve un elenco di identificatori di istanza del dispositivo con terminazione NULL. L'elenco viene terminato da un carattere NULL aggiuntivo. È possibile ottenere le dimensioni del buffer necessarie chiamando la funzione CM_Get_Device_ID_List_Size .

  • Impostare BufferLen sulle dimensioni, in caratteri , del buffer buffer.

  • Impostare ulFlags su uno dei flag seguenti per recuperare le informazioni sulle relazioni corrispondenti:

    • CM_GETIDLIST_FILTER_EJECTIONRELATIONS

      Il flag di CM_GETIDLIST_FILTER_EJECTIONRELATIONS recupera le relazioni di espulsione, ovvero le stesse informazioni fornite dalla proprietà del dispositivo DEVPKEY_Device_EjectionRelations in Windows Vista e versioni successive.

    • CM_GETIDLIST_FILTER_REMOVALRELATIONS

      Il flag CM_GETIDLIST_FILTER_REMOVALRELATIONS recupera le relazioni di rimozione, ovvero le stesse informazioni fornite dalla proprietà del dispositivo DEVPKEY_Device_RemovalRelations in Windows Vista e versioni successive.

    • CM_GETIDLIST_FILTER_POWERRELATIONS

      Il flag CM_GETIDLIST_FILTER_POWERRELATIONS recupera le relazioni di alimentazione, ovvero le stesse informazioni fornite dalla proprietà del dispositivo DEVPKEY_Device_PowerRelations in Windows Vista e versioni successive.

    • CM_GETIDLIST_FILTER_BUSRELATIONS

      Il flag CM_GETIDLIST_FILTER_BUSRELATIONS recupera le relazioni del bus, ovvero le stesse informazioni fornite dalla proprietà del dispositivo DEVPKEY_Device_BusRelations in Windows Vista e versioni successive.

Se la chiamata a CM_Get_Device_ID_List ha esito positivo, CM_Get_Device_ID_List recupera le informazioni sulle relazioni richieste e restituisce CR_SUCCESS. In caso contrario, CM_Get_Device_ID_List restituisce uno dei codici di errore con prefisso "CR_" definito in Cfgmgr32.h.

Recupero dell'elemento padre di un'istanza del dispositivo

Per recuperare l'identificatore dell'istanza del dispositivo di un dispositivo padre in Windows Server 2003, Windows XP e Windows 2000, seguire questa procedura:

  1. Chiamare la funzione CM_Get_Parent per recuperare un handle di istanza del dispositivo nel dispositivo padre di un'istanza del dispositivo.

  2. Chiamare CM_Get_Device_ID per recuperare l'identificatore dell'istanza del dispositivo associato all'handle dell'istanza del dispositivo al dispositivo padre recuperato dalla chiamata precedente a CM_Get_Parent.

Queste informazioni recuperate tramite questa procedura sono uguali a quella rappresentata dalla proprietà DEVPKEY_Device_Parent nel modello di proprietà del dispositivo unificato di Windows Vista e versioni successive.

Recupero degli elementi figlio di un'istanza di dispositivo

Per recuperare gli identificatori di istanza del dispositivo dei dispositivi figlio di un'istanza di dispositivo in Windows Server 2003, Windows XP e Windows 2000, seguire questa procedura:

  1. Chiamare la funzione CM_Get_Child per recuperare un handle di istanza del dispositivo al primo dispositivo figlio associato a un'istanza del dispositivo.

  2. Chiamare CM_Get_Sibling quante volte è necessario enumerare tutti i dispositivi di pari livello del primo dispositivo figlio recuperato dalla chiamata a CM_Get_Child.

  3. Chiamare CM_Get_Device_ID per recuperare gli identificatori di istanza del dispositivo associati agli handle dell'istanza del dispositivo restituiti dalle chiamate a CM_Get_Child e CM_Get_Sibling.

Queste informazioni recuperate tramite questa procedura sono uguali a quella rappresentata dalla proprietà DEVPKEY_Device_Children nel modello di proprietà del dispositivo unificato di Windows Vista e versioni successive.

Recupero dei fratelli di un'istanza di dispositivo

Per recuperare gli identificatori di istanza del dispositivo dei dispositivi di istanza di dispositivo Abc in Windows Server 2003, Windows XP e Windows 2000, seguire questa procedura:

  1. Chiamare la funzione CM_Get_Parent per recuperare un handle di istanza del dispositivo nel dispositivo padre dell'istanza di dispositivo Abc.

  2. Chiamare la funzione CM_Get_Child per recuperare un handle di istanza del dispositivo nel primo dispositivo figlio del dispositivo padre dell'istanza di dispositivo Abc.

  3. Chiamare CM_Get_Sibling quante volte è necessario per enumerare tutti i dispositivi di pari livello del primo dispositivo figlio del dispositivo padre. Questa enumerazione restituirà anche un handle all'istanza del dispositivo Abc.

  4. Chiamare CM_Get_Device_ID per recuperare gli identificatori di istanza del dispositivo associati agli handle dell'istanza del dispositivo restituiti dalle chiamate precedenti a CM_Get_Sibling. Rimuovere l'handle nell'istanza del dispositivo Abc dall'elenco di dispositivi di pari livello del primo dispositivo figlio del dispositivo padre.

Le informazioni recuperate usando questa procedura sono uguali a quella rappresentata dalla proprietà DEVPKEY_Device_Siblings nel modello di proprietà del dispositivo unificato di Windows Vista e versioni successive. Se una chiamata di funzione CM_Xxx elencata in questa sezione ha esito positivo, la funzione CM_Xxx recupera le informazioni richieste e restituisce CR_SUCCESS. In caso contrario, la funzione CM_Xxx restituisce uno dei codici di errore con prefisso "CR_" definito in Cfgmgr32.h.