설치된 디바이스 인터페이스 열거

레지스트리 키에 직접 액세스하여 시스템의 디바이스 인터페이스를 열거해서는 안 됩니다. 레지스트리 키와 마찬가지로 키의 위치, 이름 또는 형식은 다른 버전의 Windows 간에 변경될 수 있습니다.

다음 지침을 사용하여 디바이스 인터페이스를 안전하게 열거합니다.

사용자 모드 애플리케이션은 다음 단계를 수행해야 합니다.

  • 구성 관리자 함수 사용:

    CM_Get_Device_Interface_List 사용하여 지정된 InterfaceClassGuid에서 디바이스 인터페이스 목록을 검색합니다. 필요에 따라 pDeviceID 매개 변수를 특정 디바이스 instance 식별자로 설정하여 특정 디바이스에서 노출하는 디바이스 인터페이스로만 목록을 제한할 수 있습니다.

    시스템에 있는(사용) 디바이스 인터페이스만 포함하려면 ulFlags 매개 변수에 CM_GET_DEVICE_INTERFACE_LIST_PRESENT 플래그를 설정합니다.

  • SetupApi 함수 사용:

    1. Flags 매개 변수에 설정된 DIGCF_DEVICEINTERFACE 플래그와 함께 SetupDiGetClassDevs 또는 SetupDiGetClassDevsEx를 사용하여 지정된 디바이스 인터페이스 클래스에 대한 디바이스 인터페이스를 검색합니다. 필요에 따라 Enumerator 매개 변수를 특정 디바이스 instance 식별자로 설정하여 특정 디바이스에서 노출하는 디바이스 인터페이스로만 목록을 제한할 수 있습니다.

      시스템에 있는(사용) 디바이스 인터페이스만 포함하려면 Flags 매개 변수에서 DIGCF_PRESENT 플래그를 설정합니다.

    2. SetupDiEnumDeviceInterfaces를 사용하여 위의 호출에서 반환된 인터페이스를 열거합니다.

커널 모드 드라이버는 IoGetDeviceInterfaces 를 사용하여 지정된 InterfaceClassGuid에서 디바이스 인터페이스 목록을 검색해야 합니다. 필요에 따라 PhysicalDeviceObject 매개 변수를 설정하여 특정 디바이스에서 노출하는 디바이스 인터페이스로만 목록을 제한할 수 있습니다.