다음을 통해 공유


디바이스 인스턴스 속성 액세스

Windows Vista 이상 버전의 Windows에서 애플리케이션 및 설치 관리자는 다음 함수를 호출하여 통합 속성 모델의 일부인 디바이스 instance 속성에 액세스할 수 있습니다.

참고

SetupApi는 Windows의 모든 버전에서 지원되지 않습니다. 가능하면CfgMgr32.dll통해 사용할 수 있는 것과 같은 하위 계층 API 를 사용해야 합니다. 팁은 SetupApi에서 CfgMgr32로 포팅 을 참조하세요.

Windows Server 2003, Windows XP 및 Windows 2000에서 디바이스 속성에 액세스하는 방법에 대한 자세한 내용은 SetupAPI 및 Configuration Manager 사용하여 디바이스 속성 액세스를 참조하세요.

속성 검색

CM_Get_DevNode_Property 또는 SetupDiGetDeviceProperty와 같은 속성 API를 사용하여 디바이스 instance 대해 설정된 디바이스 속성을 검색할 수 있습니다. 예를 들어 DEVPROP_TYPE_UINT32 형식으로 예상되는 속성을 검색하는 샘플은 다음과 같습니다.

DEVPROPTYPE PropertyType = DEVPROP_TYPE_EMPTY;
ULONG PropertySize = 0;
ULONG SomeValue = 0;

PropertySize = sizeof(SomeValue);
cr = CM_Get_DevNode_Property(DevInst,
                             &DEVPKEY_CustomProperty,
                             &PropertyType,
                             (PBYTE)&SomeValue,
                             &PropertySize,
                             0);

if (cr == CR_NO_SUCH_VALUE) {
    printf("Property was not found\n");
} else if (cr != CR_SUCCESS) {
    printf("Error 0x%08x retrieving property.\n", cr);
} else if ((PropertyType != DEVPROP_TYPE_UINT32) || (PropertySize != sizeof(SomeValue))) {
    printf("Property data was not of the expected type or size\n");
} else {
    printf("Property value: 0x%08x\n", SomeValue);
}

속성 설정

CM_Set_DevNode_Property 또는 SetupDiSetDeviceProperty와 같은 속성 API를 사용하여 디바이스 instance 디바이스 속성을 설정할 수 있습니다. 예를 들어 DEVPROP_TYPE_UINT32 형식의 속성을 설정하는 샘플은 다음과 같습니다.

ULONG SomeValue = 5;
cr = CM_Set_DevNode_Property(DevInst,
                             &DEVPKEY_CustomProperty,
                             DEVPROP_TYPE_UINT32,
                             (PBYTE)&SomeValue,
                             sizeof(SomeValue),
                             0);

if (cr != CR_SUCCESS) {
    printf("Error 0x%08x setting property.\n", cr);
}

사용 가능한 속성 목록 가져오기

CM_Get_DevNode_Property_Keys 또는 SetupDiGetDevicePropertyKeys와 같은 속성 API를 사용하여 디바이스 instance 대해 현재 설정된 디바이스 속성을 식별하는 디바이스 속성 키의 배열을 검색할 수 있습니다. 디바이스에서 설정된 속성의 전체 집합을 확인하는 데 사용할 수 있습니다. 그러나 이러한 함수를 사용하면 특히 이러한 함수가 디바이스 instance 설정된 모든 속성의 값을 검색할 수 있습니다. 모든 속성 목록과 해당 값의 검색은 비용이 많이 드는 작업이 될 수 있기 때문에 드물게 사용해야 합니다.