Share via


デバイスの関係の取得

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 で終わる文字列へのポインターに設定します。

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

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

  • 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_ChildCM_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 つを返します。