Abrufen von Beziehungen zwischen Geräten

In Windows Vista und späteren Versionen von Windows enthält das einheitliche Geräteeigenschaftsmodell Gerätebeziehungen-Eigenschaften. Das einheitliche Geräteeigenschaftenmodell verwendet Eigenschaftsschlüssel, um diese Eigenschaften darzustellen. Die Liste der Beziehungen, die im einheitlichen Geräteeigenschaftenmodell dargestellt werden, sind:

Windows Server 2003, Windows XP und Windows 2000 unterstützen die Eigenschaftsschlüssel des einheitlichen Eigenschaftenmodells nicht. Sie können die entsprechenden Informationen jedoch abrufen, indem Sie Plug & Play (PnP)-Konfigurations-Manager-Funktionen aufrufen. Um die Kompatibilität mit früheren Windows Versionen aufrechtzuerhalten, unterstützen Windows Vista und spätere Versionen auch das Aufrufen von PnP-Konfigurations-Manager-Funktionen zum Abrufen von Gerätebeziehungeneigenschaften. Sie sollten jedoch die Eigenschaftenschlüssel des einheitlichen Geräteeigenschaftenmodells verwenden, um auf die Gerätebeziehungseigenschaften zuzugreifen. Informationen zur Verwendung von Eigenschaftenschlüsseln für den Zugriff auf Gerätetreibereigenschaften finden Sie unter "Zugreifen auf Geräteinstanzeigenschaften" (Windows Vista and Later).

Informationen dazu, wie Sie auf die Eigenschaften der Gerätebeziehungen für Windows Server 2003, Windows XP und Windows 2000 zugreifen, finden Sie in den folgenden Themen:

Abrufen von Ejection-, Removal-, Power- und Bus-Relationen

Abrufen des übergeordneten Elements einer Geräteinstanz

Abrufen der untergeordneten Elemente einer Geräteinstanz

Abrufen der gleichgeordneten Instanzen einer Geräteinstanz

Abrufen von Ejection Relations, Removal Relations und Power Relations sowie Busbeziehungen

Um Informationen zu Gerätebeziehungen unter Windows Server 2003, Windows XP und Windows 2000 abzurufen, rufen Sie CM_Get_Device_ID_List auf und geben Sie die folgenden Parameterwerte an:

  • Legen Sie pszFilter auf einen Zeiger auf eine MIT NULL beendete Zeichenfolge fest, die den Geräteinstanzbezeichner angibt, für den Beziehungsinformationen abgerufen werden sollen.

  • Setzen Sie Buffer auf einen Zeiger auf einen Puffer, der eine Liste von NULL-beendeten Geräteinstanzbezeichnern empfängt. Die Liste wird durch ein zusätzliches NULL-Zeichen beendet. Sie können die erforderliche Puffergröße abrufen, indem Sie die CM_Get_Device_ID_List_Size-Funktion aufrufen.

  • Legen Sie BufferLen auf die Größe des Buffer-Puffers in Zeichen fest.

  • Legen Sie ulFlags auf eines der folgenden Flags fest, um die entsprechenden Beziehungsinformationen abzurufen:

    • CM_GETIDLIST_FILTER_EJECTIONRELATIONS

      Das CM_GETIDLIST_FILTER_EJECTIONRELATIONS-Flag ruft Auswurfbeziehungen ab, bei denen es sich um die gleichen Informationen handelt, die von der DEVPKEY_Device_EjectionRelations-Geräteeigenschaft in Windows Vista und höheren Versionen bereitgestellt werden.

    • CM_GETIDLIST_FILTER_REMOVALRELATIONS

      Das CM_GETIDLIST_FILTER_REMOVALRELATIONS Flag ruft Entfernungsbeziehungen ab, bei denen es sich um die gleichen Informationen handelt, die von der DEVPKEY_Device_RemovalRelations Geräteeigenschaft in Windows Vista und höheren Versionen bereitgestellt werden.

    • CM_GETIDLIST_FILTER_POWERRELATIONS

      Das CM_GETIDLIST_FILTER_POWERRELATIONS-Flag ruft Energiebeziehungen ab, d. h. die gleichen Informationen, die von der DEVPKEY_Device_PowerRelations-Geräteeigenschaft in Windows Vista und höheren Versionen bereitgestellt werden.

    • CM_GETIDLIST_FILTER_BUSRELATIONS

      Das CM_GETIDLIST_FILTER_BUSRELATIONS Flag ruft Busbeziehungen ab, bei denen es sich um die gleichen Informationen handelt, die von der DEVPKEY_Device_BusRelations Geräteeigenschaft in Windows Vista und höheren Versionen bereitgestellt werden.

Wenn der Aufruf von CM_Get_Device_ID_List erfolgreich ist, ruft CM_Get_Device_ID_List die angeforderten Beziehungsinformationen ab und gibt CR_SUCCESS zurück. Andernfalls gibt CM_Get_Device_ID_List eine der Fehlercodes mit dem Präfix "CR_" zurück, die in Cfgmgr32.h definiert sind.

Abrufen des übergeordneten Elements einer Geräteinstanz

Führen Sie die folgenden Schritte aus, um den Geräteinstanzbezeichner eines übergeordneten Geräts auf Windows Server 2003, Windows XP und Windows 2000 abzurufen:

  1. Rufen Sie die CM_Get_Parent-Funktion auf, um ein Geräteinstanzhandle für das übergeordnete Gerät einer Geräteinstanz abzurufen.

  2. Rufen Sie CM_Get_Device_ID auf, um den Geräteinstanzbezeichner abzurufen, der dem Geräteinstanzhandle des übergeordneten Geräts zugeordnet ist, das durch den vorherigen Aufruf von CM_Get_Parent abgerufen wurde.

Diese Informationen, die mithilfe dieses Verfahrens abgerufen werden, sind identisch mit der DEVPKEY_Device_Parent-Eigenschaft im einheitlichen Geräteeigenschaftenmodell von Windows Vista und späteren Versionen.

Abrufen der untergeordneten Elemente einer Geräteinstanz

Führen Sie die folgenden Schritte aus, um die Geräteinstanz-IDs der untergeordneten Geräte einer Geräteinstanz auf Windows Server 2003, Windows XP und Windows 2000 abzurufen:

  1. Rufen Sie die CM_Get_Child-Funktion auf, um ein Geräteinstanzhandle für das erste untergeordnete Gerät abzurufen, das einer Geräteinstanz zugeordnet ist.

  2. Rufen Sie CM_Get_Sibling so oft auf, wie es erforderlich ist, um alle gleichgeordneten Geräte des ersten untergeordneten Geräts aufzulisten, das vom Aufruf von CM_Get_Child abgerufen wurde.

  3. Rufen Sie CM_Get_Device_ID auf, um die Geräteinstanz-IDs abzurufen, die den Geräteinstanzhandles zugeordnet sind, die von den Aufrufen von CM_Get_Child und CM_Get_Sibling zurückgegeben wurden.

Diese Informationen, die mithilfe dieses Verfahrens abgerufen werden, entsprechen den durch die DEVPKEY_Device_Children-Eigenschaft im einheitlichen Geräteeigenschaftenmodell von Windows Vista und höheren Versionen dargestellten Informationen.

Abrufen der Geschwisterelemente einer Geräteinstanz

Führen Sie die folgenden Schritte aus, um die Geräteinstanz-IDs der gleichgeordneten Geräte der Geräteinstanz Abc auf Windows Server 2003, Windows XP und Windows 2000 abzurufen:

  1. Rufen Sie die CM_Get_Parent-Funktion auf, um ein Geräteinstanzhandle für das übergeordnete Gerät der Geräteinstanz Abc abzurufen.

  2. Rufen Sie die CM_Get_Child-Funktion auf, um ein Geräteinstanzhandle für das erste untergeordnete Gerät des übergeordneten Geräts der Geräteinstanz Abc abzurufen.

  3. Rufen Sie CM_Get_Sibling so oft wie nötig auf, um alle gleichgeordneten Geräte des ersten untergeordneten Geräts des übergeordneten Geräts auflisten zu können. Diese Enumeration gibt auch ein Handle für die Geräteinstanz Abc zurück.

  4. Rufen Sie CM_Get_Device_ID auf, um die Geräteinstanz-IDs abzurufen, die den Geräteinstanzhandles zugeordnet sind, die von den vorherigen Aufrufen an CM_Get_Sibling zurückgegeben wurden. Entfernen Sie das Handle zur Geräteinstanz Abc aus der Liste der gleichgeordneten Geräte des ersten untergeordneten Geräts des übergeordneten Geräts.

Die mithilfe dieses Verfahrens abgerufenen Informationen sind identisch mit der DEVPKEY_Device_Siblings-Eigenschaft im einheitlichen Geräteeigenschaftenmodell von Windows Vista und höheren Versionen. Wenn ein in diesem Abschnitt aufgeführter CM_Xxx-Funktionsaufruf erfolgreich ist, liefert die CM_Xxx-Funktion die angeforderten Informationen und gibt CR_SUCCESS zurück. Andernfalls gibt die CM_Xxx-Funktion eine der Fehlercodes mit dem Präfix "CR_" zurück, die in Cfgmgr32.h definiert sind.