하드웨어 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(플러그 앤 플레이 Manager)에 보고됩니다. 일반적으로 버스 드라이버 작성자가 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를 업데이트할 때 장치 관리자 노란색 뱅 오류 아이콘이 발생할 수 있습니다.

루트 열거형 디바이스가 있는 각 드라이버에 대해 고유한 네임스페이스를 사용하여 이를 방지할 수 있습니다. 를 사용하거나 사용하는 ROOT\USBROOT\[COMPANYNAME]\[DEVICENAME]대신 USB 또는 ROOT\SYSTEM" 시스템 디바이스의 경우 그런 다음 설치하기 전에 검사 devnode가 이미 있는지 확인합니다.

디바이스에 대한 하드웨어 ID 목록 가져오기

지정된 디바이스에 대한 하드웨어 ID 목록을 찾으려면 다음 단계를 수행합니다.

  1. 디바이스 관리자를 엽니다.

  2. 트리에서 디바이스를 찾습니다.

  3. 디바이스를 마우스 오른쪽에 선택하고 속성을 선택합니다.

  4. 세부 정보 탭을 선택합니다.

  5. 속성 드롭다운에서 하드웨어 ID 또는 호환 ID를 선택합니다.

디바이스에서 DEVPKEY_Device_HardwareIds 속성을 검색하여 하드웨어 ID 목록을 프로그래밍 방식으로 가져올 수도 있습니다. 예를 들어 IoGetDevicePropertyData, SetupDiGetDeviceProperty 또는 CM_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