デバイス間の関係を取得

Windows Vista以降のバージョンのWindowsでは、統合デバイス プロパティ モデルにデバイス関係プロパティが含まれています。 統合デバイス プロパティ モデルでは、 プロパティ キー を使用してこれらのプロパティを表します。 統合デバイス プロパティ モデルで表されるリレーションの一覧は次のとおりです。

Windows Server 2003、Windows XP、Windows 2000 では、統合プロパティ モデルのプロパティ キーはサポートされていません。 ただし、プラグ アンド プレイ (PnP) 構成マネージャー関数を呼び出すことによって、対応する情報を取得できます。 以前のバージョンのWindowsとの互換性を維持するために、Windows Vista以降のバージョンでは、PnP 構成マネージャー関数を呼び出してデバイス関係プロパティを取得することもサポートされています。 ただし、統合デバイス プロパティ モデルのプロパティ キーを使用して、デバイスの関係プロパティにアクセスする必要があります。プロパティ キーを使用してデバイス ドライバーのプロパティにアクセスする方法については、「デバイス インスタンスのプロパティへのアクセス (Windows Vista 以降)」を参照してください。

Windows Server 2003、Windows XP、Windows 2000 のデバイス関係プロパティにアクセスする方法については、次のトピックを参照してください。

放出関係、除去関係、および電力関係、およびバス関連の取得

デバイス インスタンスの親の取得

デバイス インスタンスの子の取得

デバイス インスタンスの兄弟の取得

取り出し関係、削除関係、および電力関係、ならびにバス接続関係の取得

Windows Server 2003、Windows XP、Windows 2000 でデバイス リレーション情報を取得するには、CM_Get_Device_ID_List を呼び出し、次のパラメーター値を指定します。

  • pszFilter を、リレーション情報を取得するデバイス インスタンス識別子を指定する NULL で終わる文字列へのポインターに設定します。

  • Buffer を、NULL で終了するデバイス インスタンス識別子の一覧を受け取るバッファーへのポインターに設定します。 リストは、追加のヌル文字で終了します。 必要なバッファー サイズを取得するには、CM_Get_Device_ID_List_Size 関数を呼び出すことで取得できます。

  • BufferLen を Buffer バッファーのサイズ (文字数) に設定します。

  • ulFlags を次のいずれかのフラグに設定して、対応するリレーション情報を取得します。

    • CM_GETIDLIST_FILTER_EJECTIONRELATIONS

      CM_GETIDLIST_FILTER_EJECTIONRELATIONS フラグは、取り出し関係を取得します。これは、Windows Vista 以降のバージョンのDEVPKEY_Device_EjectionRelationsデバイス プロパティによって提供される情報と同じです。

    • CM_GETIDLIST_FILTER_REMOVALRELATIONS

      CM_GETIDLIST_FILTER_REMOVALRELATIONS フラグは、取り外し関係を取得します。これは、Windows Vista 以降のバージョンの DEVPKEY_Device_RemovalRelations デバイス プロパティによって提供されるのと同じ情報です。

    • CM_GETIDLIST_FILTER_POWERRELATIONS

      CM_GETIDLIST_FILTER_POWERRELATIONS フラグは電源関係を取得します。これは、Windows Vista 以降のバージョンで提供される DEVPKEY_Device_PowerRelations デバイス プロパティによって提供される情報と同じです。

    • CM_GETIDLIST_FILTER_BUSRELATIONS

      CM_GETIDLIST_FILTER_BUSRELATIONS フラグはバス リレーションを取得します。これは、Windows Vista 以降のバージョンのDEVPKEY_Device_BusRelations デバイス プロパティによって提供される情報と同じです。

CM_Get_Device_ID_Listの呼び出しが成功した場合、CM_Get_Device_ID_Listは要求されたリレーション情報を取得し、CR_SUCCESSを返します。 それ以外の場合、CM_Get_Device_ID_List は、Cfgmgr32.h で定義されている、プレフィックス "CR_" を持つエラー コードの 1 つを返します。

デバイス インスタンスの親の取得

Windows Server 2003、Windows XP、Windows 2000 の親デバイスのデバイス インスタンス識別子を取得するには、次の手順に従います。

  1. CM_Get_Parent関数を呼び出して、デバイス インスタンスの親デバイスに対するデバイス インスタンス ハンドルを取得します。

  2. CM_Get_Device_IDを呼び出して、前回のCM_Get_Parent呼び出しによって取得された親デバイスのデバイス インスタンス ハンドルに関連付けられているデバイス インスタンス識別子を取得します。

この手順を使用して取得されるこの情報は、Windows Vista 以降のバージョンの統合デバイス プロパティ モデルのDEVPKEY_Device_Parent プロパティで表される情報と同じです。

デバイス インスタンスの子の取得

Windows Server 2003、Windows XP、Windows 2000 でデバイス インスタンスの子デバイスのデバイス インスタンス識別子を取得するには、次の手順に従います。

  1. CM_Get_Child関数を呼び出して、デバイス インスタンスに関連付けられている最初の子デバイスに対するデバイス インスタンス ハンドルを取得します。

  2. CM_Get_Sibling呼び出しは、CM_Get_Childの呼び出しによって取得された最初の子デバイスのすべての兄弟デバイスを列挙するために必要な回数だけ呼び出します。

  3. CM_Get_Device_IDを呼び出して、CM_Get_ChildおよびCM_Get_Siblingの呼び出しによって返されたデバイス インスタンス ハンドルに関連付けられているデバイス インスタンス識別子を取得します。

この手順を使用して取得されるこの情報は、Windows Vista 以降のバージョンの統合デバイス プロパティ モデルのDEVPKEY_Device_Children プロパティで表される情報と同じです。

デバイス インスタンスの兄弟の取得

Windows Server 2003、Windows XP、Windows 2000 のデバイス インスタンス Abc の兄弟デバイスのデバイス インスタンス識別子を取得するには、次の手順に従います。

  1. CM_Get_Parent関数を呼び出して、デバイス インスタンス Abc の親デバイスに対するデバイス インスタンス ハンドルを取得します。

  2. CM_Get_Child関数を呼び出して、デバイス インスタンス Abc の親デバイスの最初の子デバイスに対するデバイス インスタンス ハンドルを取得します。

  3. 親デバイスの最初の子デバイスのすべての兄弟デバイスを列挙するために必要な回数だけ、CM_Get_Sibling を呼び出します。 この列挙は、デバイス インスタンス Abc へのハンドルも返します。

  4. CM_Get_Device_IDを呼び出して、CM_Get_Sibling の前回の呼び出しによって返されたデバイス インスタンス ハンドルに関連付けられているデバイス インスタンス識別子を取得します。 親デバイスの最初の子デバイスの兄弟デバイスの一覧から、デバイス インスタンス Abc へのハンドルを削除します。

この手順を使用して取得される情報は、Windows Vista 以降のバージョンの統合デバイス プロパティ モデルのDEVPKEY_Device_Siblings プロパティで表される情報と同じです。 このセクションに記載されている CM_Xxx 関数呼び出しが成功した場合、CM_Xxx 関数は要求された情報を取得し、CR_SUCCESSを返します。 それ以外の場合、 CM_Xxx 関数は、 Cfgmgr32.h で定義されているプレフィックス "CR_" を持つエラー コードの 1 つを返します。