SetupDiGetClassDevsW 함수(setupapi.h)
통사론
WINSETUPAPI HDEVINFO SetupDiGetClassDevsW(
[in, optional] const GUID *ClassGuid,
[in, optional] PCWSTR Enumerator,
[in, optional] HWND hwndParent,
[in] DWORD Flags
);
매개 변수
[in, optional] ClassGuid
디바이스 설정 클래스 또는 디바이스 인터페이스 클래스대한 GUID에 대한 포인터입니다. 이 포인터는 선택 사항이며 NULL
[in, optional] Enumerator
다음을 지정하는 NULL로 끝나는 문자열에 대한 포인터입니다.
- PnP(플러그 앤 플레이) 열거자ID입니다. 이 ID는 값의 GUID(Globally Unique Identifier) 또는 기호 이름일 수 있습니다. 예를 들어 "PCI"를 사용하여 PCI PnP 값을 지정할 수 있습니다. PnP 값에 대한 기호 이름의 다른 예로는 "USB", "PCMCIA" 및 "SCSI"가 있습니다.
- PnP 디바이스 인스턴스 ID. PnP 디바이스 인스턴스 ID를 지정할 때 flags 매개 변수에서 DIGCF_DEVICEINTERFACE 설정해야 합니다.
열거자 값을 설정하는 방법에 대한 자세한 내용은 다음 설명 섹션을 참조하세요.
[in, optional] hwndParent
디바이스 정보 집합에 디바이스 인스턴스를 설치하는 것과 관련된 사용자 인터페이스에 사용할 최상위 창에 대한 핸들입니다. 이 핸들은 선택 사항이며 NULL
[in] Flags
디바이스 정보 집합에 추가되는 디바이스 정보 요소를 필터링하는 제어 옵션을 지정하는 DWORD 형식의 변수입니다. 이 매개 변수는 다음 플래그 중 비트 OR이 0 이상일 수 있습니다. 이러한 플래그를 결합하는 방법에 대한 자세한 내용은 다음 설명 섹션을 참조하세요.
DIGCF_ALLCLASSES
모든 디바이스 설정 클래스 또는 모든 디바이스 인터페이스 클래스에 대해 설치된 디바이스 목록을 반환합니다.
DIGCF_DEVICEINTERFACE
지정된 디바이스 인터페이스 클래스에 대한 디바이스 인터페이스를 지원하는 디바이스를 반환합니다. 열거자 매개 변수가 디바이스 인스턴스 ID지정하는 경우 Flags 매개 변수에서 이 플래그를 설정해야 합니다.
DIGCF_DEFAULT
지정된 디바이스 인터페이스 클래스에 대해 시스템 기본 디바이스 인터페이스와 연결된 디바이스만 반환합니다(설정된 경우).
DIGCF_PRESENT
현재 시스템에 있는 디바이스만 반환합니다.
DIGCF_PROFILE
현재 하드웨어 프로필의 일부인 디바이스만 반환합니다.
반환 값
작업이 성공하면
발언
SetupDiGetClassDevs 호출자는 SetupDiDestroyDeviceInfoList호출하여 더 이상 필요하지 않은 경우 반환된 디바이스 정보 집합을 삭제해야 합니다.
SetupDiGetClassDevsEx 호출하여 원격 컴퓨터에서 클래스에 대한 디바이스를 검색합니다.
디바이스 설정 클래스 제어 옵션
다음 필터링 옵션을 사용하여 SetupDiGetClassDevs 모든 디바이스 설정 클래스에 대한 디바이스를 반환하는지 또는 지정된 디바이스 설정 클래스에 대해서만 디바이스를 반환하는지 여부를 제어합니다.-
모든 디바이스 설정 클래스에 대한 디바이스를 반환하려면 DIGCF_ALLCLASSES 플래그를 설정하고
ClassGuid 매개 변수를 NULL설정합니다. - 특정 디바이스 설정 클래스에 대해서만 디바이스를 반환하려면 DIGCF_ALLCLASSES 설정하지 않고 ClassGuid 사용하여 디바이스 설정 클래스의 GUID를 제공합니다.
- 시스템에 있는 디바이스만 반환하려면 DIGCF_PRESENT 플래그를 설정합니다.
- 현재 하드웨어 프로필의 일부인 디바이스만 반환하려면 DIGCF_PROFILE 플래그를 설정합니다.
-
특정 PnP
열거자 대해서만 디바이스를 반환하려면열거자 매개 변수를 사용하여 열거자GUID 또는 기호 이름을 제공합니다. 열거자 NULL경우 SetupDiGetClassDevs 모든 PnP 열거자에 대한 디바이스를 반환합니다.
디바이스 인터페이스 클래스 제어 옵션
다음 필터링 옵션을 사용하여 SetupDiGetClassDevs 디바이스 인터페이스 클래스를 지원하는 디바이스를 반환하는지 또는 지정된 디바이스 인터페이스 클래스를 지원하는 디바이스만 반환하는지 여부를 제어합니다.-
모든 클래스의 디바이스 인터페이스를 지원하는 디바이스를 반환하려면 DIGCF_DEVICEINTERFACE 플래그를 설정하고, DIGCF_ALLCLASSES 플래그를 설정하고,
ClassGuid NULL설정합니다. 이 함수는 디바이스 정보 집합에 해당 디바이스를 나타내는 디바이스 정보 요소를 추가한 다음 디바이스 정보 요소에 디바이스에서 지원하는 모든 디바이스 인터페이스를 포함하는 디바이스 인터페이스 목록을 추가합니다. - 지정된 클래스의 디바이스 인터페이스를 지원하는 디바이스만 반환하려면 DIGCF_DEVICEINTERFACE 플래그를 설정하고 ClassGuid 매개 변수를 사용하여 디바이스 인터페이스 클래스의 클래스 GUID를 제공합니다. 이 함수는 디바이스 정보 집합에 해당 디바이스를 나타내는 디바이스 정보 요소를 추가한 다음 지정된 클래스의 디바이스 인터페이스를 해당 디바이스 정보 요소의 디바이스 인터페이스 목록에 추가합니다.
- 시스템 기본 인터페이스를 지원하는 디바이스만 반환하려면 지정된 디바이스 인터페이스 클래스에 대해 DIGCF_DEVICEINTERFACE 플래그를 설정하고, DIGCF_DEFAULT 플래그를 설정하고, ClassGuid 사용하여 디바이스 인터페이스 클래스의 클래스 GUID를 제공합니다. 이 함수는 디바이스 정보 집합에 해당 디바이스를 나타내는 디바이스 정보 요소를 추가한 다음 해당 디바이스 정보 요소에 대한 디바이스 인터페이스 목록에 시스템 기본 인터페이스를 추가합니다.
-
지정되지 않은 디바이스 인터페이스 클래스에 대한 시스템 기본 인터페이스를 지원하는 디바이스를 반환하려면 DIGCF_DEVICEINTERFACE 플래그를 설정하고, DIGCF_ALLCLASSES 플래그를 설정하고, DIGCF_DEFAULT 플래그를 설정하고,
ClassGuid NULL설정합니다. 이 함수는 디바이스 정보 집합에 해당 디바이스를 나타내는 디바이스 정보 요소를 추가한 다음 해당 디바이스 정보 요소에 대한 디바이스 인터페이스 목록에 시스템 기본 인터페이스를 추가합니다.
- 시스템에 있는 디바이스만 반환하려면 DIGCF_PRESENT 플래그를 설정합니다.
- 현재 하드웨어 프로필의 일부인 디바이스만 반환하려면 DIGCF_PROFILE 플래그를 설정합니다.
-
특정 디바이스만 반환하려면 DIGCF_DEVICEINTERFACE 플래그를 설정하고
열거자 매개 변수를 사용하여 디바이스 가능한 모든 디바이스를 포함하려면디바이스 인스턴스 ID 제공합니다.열거자 NULL설정합니다.
예제
다음은 SetupDiGetClassDevs 함수를 사용하는 방법에 대한 몇 가지 예입니다.
예제 1: 현재 존재하지 않는 디바이스를 포함하여 시스템의 모든 디바이스 목록을 빌드합니다.
Handle = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_ALLCLASSES);
예제 2: 시스템에 있는 모든 디바이스의 목록을 빌드합니다.
Handle = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT);
예제 3: 네트워크 어댑터 디바이스 설정 클래스시스템에 있는 모든 디바이스 목록을 빌드합니다.
Handle = SetupDiGetClassDevs(&GUID_DEVCLASS_NET, NULL, NULL, DIGCF_PRESENT);
예제 4: 스토리지 볼륨 디바이스 인터페이스 클래스인터페이스를 사용하도록 설정한 시스템에 있는 모든 디바이스 목록을 빌드합니다.
Handle = SetupDiGetClassDevs(&GUID_DEVINTERFACE_VOLUME, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
예제 5: 시스템에 있지만 알려진 디바이스 설정 클래스(Windows Vista 이상 버전의 Windows)에 속하지 않는 모든 디바이스 목록을 빌드합니다.
DeviceInfoSet = SetupDiGetClassDevs(
NULL,
NULL,
NULL,
DIGCF_ALLCLASSES | DIGCF_PRESENT);
ZeroMemory(&DeviceInfoData, sizeof(SP_DEVINFO_DATA));
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
DeviceIndex = 0;
while (SetupDiEnumDeviceInfo(
DeviceInfoSet,
DeviceIndex,
&DeviceInfoData)) {
DeviceIndex++;
if (!SetupDiGetDeviceProperty(
DeviceInfoSet,
&DeviceInfoData,
&DEVPKEY_Device_Class,
&PropType,
(PBYTE)&DevGuid,
sizeof(GUID),
&Size,
0) || PropType != DEVPROP_TYPE_GUID) {
Error = GetLastError();
if (Error == ERROR_NOT_FOUND) {
\\
\\ This device has an unknown device setup class.
\\
}
}
}
if (DeviceInfoSet) {
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
}
메모
setupapi.h 헤더는 SETUPDiGetClassDevs를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Microsoft Windows 2000 이상 버전의 Windows에서 사용할 수 있습니다. |
대상 플랫폼 | DesktopFor universal, CM_Get_Device_ID_ListFor 유니버설 호출, CM_Get_Device_Interface_List 호출 |
헤더 | setupapi.h(SetupAPI.h 포함) |
라이브러리 | SetupAPI.lib |
DLL | SetupAPI.dll |
API 집합 | ext-ms-win-setupapi-classinstallers-l1-1-0(Windows 8에서 도입) |
참고 항목
디바이스 인스턴스 ID
SetupDiEnumDeviceInterfaces