次の方法で共有


ハードウェアID

ハードウェア ID は、Windows がデバイスを ドライバー パッケージに照合するために使用するベンダー定義の識別文字列です。 ハードウェア ID は、デバイスを識別し、それを宣言するすべてのドライバー パッケージが、ある程度の機能のためにその ID を持つデバイスで動作できることを示します。 ほとんどの場合、デバイスには複数のハードウェア ID が関連付けられています。 通常、ハードウェア ID の一覧は、デバイスに最も適した順に並べ替えられます。 たとえば、デバイスの概念的なハードウェア ID の一覧は次のようになります。

<Product X made by company Y with firmware revision Z>
<Product X made by company Y that is a device of type W>

実際のハードウェア ID は、ハードウェア ID の形式要件に従う文字列を使用してこれらの概念を表します。

デバイスのハードウェア ID の作成

ハードウェア ID は、デバイスの 列挙子 (バス ドライバー) によってプラグ アンド プレイ マネージャー (PnP) に報告されます。 通常、バス ドライバーの作成者が PnP に報告するデバイスの新しいハードウェア ID を作成する必要がある場合は、次のいずれかの汎用形式を使用します。

<enumerator>\<enumerator-specific-device-ID>

この形式は、単一の列挙子によってプラグ アンド プレイ (PnP) マネージャーに報告される個々の PnP デバイスで最も一般的です。

\*<generic-device-ID>

アスタリスクは、ISAPNP や BIOS など、複数の列挙子がデバイスをサポートしていることを示します。

<device-class-specific-ID>

詳細については、「汎用識別子の」を参照してください。

独自の名前付け規則が確立された既存のデバイス クラスでは、カスタム形式が使用される場合があります。 ハードウェア ID 形式の詳細については、このようなバスのハードウェア仕様を参照してください。

NULL ターミネータを除くハードウェア ID の文字数は、MAX_DEVICE_ID_LEN未満にする必要があります。 この制約は、すべてのフィールドの長さと、ハードウェア ID の \\ フィールド区切り記号の合計に適用されます。 詳細については、「IRP_MN_QUERY_ID操作」セクションを参照してください。

ルート列挙デバイスのハードウェア ID

ルート列挙デバイスは、ハードウェア ID を指定できる API を使用して作成できる点で特別です。 ROOT\SYSTEM などの一般的な名前空間を共有するハードウェア ID を持つルート列挙デバイスが競合し、Windows の更新時に Device Manager で黄色のエラー アイコンが表示される可能性があります。

ルート列挙デバイスを持つドライバーごとに一意の名前空間を使用することで、このエラーを回避できます。 USB またはシステム デバイスの場合は、ROOT\USB または ROOT\SYSTEM" を使用する代わりに、ROOT\[COMPANYNAME]\[DEVICENAME]を使用します。 次に、インストールする前に、devnode が既に存在するかどうかを確認します。

デバイスのハードウェア ID の一覧を取得する

特定のデバイスのハードウェア ID の一覧を見つけるには、次の手順に従います。

  1. デバイス マネージャーを開きます。
  2. ツリーでデバイスを見つけます。
  3. デバイスを右クリックし、[プロパティ]選択します。
  4. [詳細] タブを選択します。
  5. [プロパティ] ドロップダウンで、[ハードウェア ID] または [互換性のある ID] を選択します。

ハードウェア ID の一覧は、デバイスの DEVPKEY_Device_HardwareIds プロパティを取得することで、プログラムによって取得することもできます。 たとえば、そのプロパティは、IoGetDevicePropertyDataSetupDiGetDevicePropertyCM_Get_DevNode_Propertyなどの API を使用して取得できます。

このルーチンが取得するハードウェア ID の一覧は、REG_MULTI_SZ 値です。 ハードウェア一覧の最大文字数は、各ハードウェア ID の後の NULL 終端文字と最後の NULL 終端文字を含め、REGSTR_VAL_MAX_HCID_LEN です。 ハードウェア ID の一覧に含まれる ID の最大数は 64 です。

ハードウェア ID の例

PnP デバイスの 汎用識別子 の例を次に示します。

root\*PNP0F08

PCI デバイスの 識別子の例を次に示します。

PCI\VEN_1000&DEV_0001&SUBSYS_00000000&REV_02