硬體識別碼

硬體識別碼是廠商定義的識別碼字串,Windows 用來比對裝置與 驅動程式套件。 硬體識別碼會識別裝置,並指出宣告它的任何驅動程式套件都可以與具有某種程度的功能識別碼的裝置搭配使用。 在大部分情況下,裝置有多個與其相關聯的硬體識別碼。 一般而言,硬體識別碼的清單會從最不適合裝置排序。 例如,裝置的概念硬體識別碼清單可能如下所示:

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

其中實際的硬體識別碼會使用遵循硬體識別碼格式需求的字串來代表這些概念。

建立裝置的硬體識別碼

裝置的列舉值 (其匯流排驅動程式) ,向隨插即用管理員 (PnP) 回報硬體識別碼。 一般而言,當匯流排驅動程式的作者需要為裝置建立新的硬體識別碼時,它會向 PnP 回報,它會使用下列其中一種泛型格式:

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

這是單一列舉值向 隨插即用 (PnP) 管理員回報的個別 PnP 裝置最常見的格式。

\*<generic-device-ID>

星號表示多個列舉值支援裝置,例如 ISAPNP 和 BIOS。

<device-class-specific-ID>

如需詳細資訊,請參閱 泛型識別碼

已建立自己命名慣例的現有裝置類別可能會使用自訂格式。 如需其硬體識別碼格式的相關資訊,請參閱這類匯流排的硬體規格。

硬體識別碼的字元數,不包括 Null 結束字元,必須小於 MAX_DEVICE_ID_LEN 。 此條件約束適用于硬體識別碼中所有欄位的長度和任何 \\ 欄位分隔符號的總和。 如需詳細資訊,請參閱IRP_MN_QUERY_IDOperations一節。

根列舉裝置的硬體識別碼

根列舉裝置很特殊,因此可以使用可提供硬體識別碼的 API 來建立它們。 具有共用泛型命名空間 ROOT\SYSTEM 之硬體識別碼的根列舉裝置可能會發生衝突,並在更新 Windows 時,在裝置管理員中產生黃色畫面錯誤圖示。

您可以針對具有根列舉裝置的每個驅動程式,使用唯一的命名空間來避免這種情況。 針對 USB 或系統裝置,而不是使用 ROOT\USBROOT\[COMPANYNAME]\[DEVICENAME] 或使用 ROOT\SYSTEM" 。 然後,在安裝之前,請檢查 devnode 是否已存在。

取得裝置的硬體識別碼清單

若要尋找指定裝置的硬體識別碼清單,請遵循下列步驟:

  1. 開啟 [裝置管理員]。

  2. 在樹狀結構中尋找裝置。

  3. 以滑鼠右鍵按一下裝置,然後選取 [ 屬性]。

  4. 選取 [詳細資料] 索引標籤。

  5. 在 [ 屬性 ] 下拉式清單中,選取 [硬體 識別碼] 或 [ 相容識別碼]。

您也可以藉由擷取裝置上的 DEVPKEY_Device_HardwareIds 屬性,以程式設計方式取得硬體識別碼清單。 例如,可以使用 IoGetDevicePropertyDataSetupDiGetDevicePropertyCM_Get_DevNode_Property等 API 來擷取該屬性。

此常式擷取的硬體識別碼清單是 REG_MULTI_SZ 值。 硬體清單中的字元數目上限,包括每個硬體識別碼和最終 Null 結束字元之後的 Null 結束字元為 REGSTR_VAL_MAX_HCID_LEN 。 硬體識別碼清單中的可能識別碼數目上限為 64。

硬體識別碼的範例

以下是 PnP 裝置的 泛型識別碼 範例:

root\*PNP0F08

以下是 PCI 裝置識別碼的範例:

PCI\VEN_1000&DEV_0001&SUBSYS_00000000&REV_02