디바이스 인스턴스 속성 액세스
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 설정된 모든 속성의 값을 검색할 수 있습니다. 모든 속성 목록과 해당 값의 검색은 비용이 많이 드는 작업이 될 수 있기 때문에 드물게 사용해야 합니다.