Share via


디바이스 인터페이스 클래스 개요

사용자 모드 코드가 I/O 요청을 지시할 수 있는 물리적, 논리적 또는 가상 디바이스의 모든 드라이버는 사용자 모드 클라이언트의 이름을 제공해야 합니다. 이름을 사용하여 사용자 모드 애플리케이션(또는 다른 시스템 구성 요소)은 I/O를 요청하는 디바이스를 식별합니다.

Windows NT 4.0 및 이전 버전의 NT 기반 운영 체제에서 드라이버는 디바이스 개체의 이름을 지정한 다음, 레지스트리에서 이러한 이름과 사용자가 볼 수 있는 Win32 논리 이름 사이에 기호 링크를 설정합니다.

Windows 2000부터 드라이버는 디바이스 개체의 이름을 지정하지 않습니다. 대신 디바이스 인터페이스 클래스별로 그룹화된 디바이스 인터페이스를 사용합니다. 디바이스 인터페이스 클래스는 디바이스 및 드라이버 기능을 다른 드라이버와 사용자 모드 애플리케이션을 비롯한 다른 시스템 구성 요소로 내보내는 방법입니다. 드라이버는 사용자 모드 I/O 요청을 보낼 수 있는 각 디바이스 개체에 대해 디바이스 인터페이스 클래스의 instance 디바이스 인터페이스를 등록하고 사용하도록 설정할 수 있습니다. 각 디바이스 인터페이스 클래스 는 해당 클래스의 모든 디바이스 인터페이스 가 특정 I/O 계약과 같이 지원하거나 나타내야 하는 개념적 기능을 나타내야 합니다.

각 디바이스 인터페이스 클래스는 GUID와 연결됩니다. 시스템은 디바이스별 헤더 파일에서 일반적인 디바이스 인터페이스 클래스에 대한 GUID를 정의합니다. 공급업체는 추가 디바이스 인터페이스 클래스를 만들 수 있습니다.

예를 들어 세 가지 유형의 마우스 디바이스는 USB 포트를 통해 연결하고, 두 번째는 직렬 포트를 통해 연결하고, 세 번째는 적외선 포트를 통해 연결하더라도 동일한 디바이스 인터페이스 클래스의 멤버인 디바이스 인터페이스 를 등록할 수 있습니다. 각 드라이버는 디바이스를 인터페이스 클래스 GUID_DEVINTERFACE_MOUSE 멤버로 등록합니다. 이 GUID는 헤더 파일 Ntddmou.h에 정의되어 있습니다.

드라이버는 디바이스 및 드라이버 가 기능을 지원하는 많은 디바이스 인터페이스 클래스 에 대해 제어하는 디바이스에 디바이스 인터페이스를 등록하고 사용하도록 설정할 수 있습니다. 예를 들어 탑재할 수 있는 디스크용 드라이버는 디스크 인터페이스 클래스(GUID_DEVINTERFACE_DISK)와 탑재 가능한 디바이스 클래스(MOUNTDEV_MOUNTED_DEVICE_GUID) 모두에 등록해야 합니다.

드라이버가 디바이스 인터페이스 클래스의 instance 디바이스 인터페이스를 등록하는 경우 I/O 관리자는 디바이스 및 디바이스 인터페이스 클래스 GUID를 기호 링크 이름과 연결합니다. 드라이버 또는 애플리케이션이 I/O를 보낼 수 있도록 해당 기호 링크를 사용하려면 드라이버에서 디바이스 인터페이스사용하도록 설정해야 합니다. 연결 이름 등록은 시스템 시작에서 유지되지만 디바이스의 모든 열거형에서 드라이버가 디바이스 인터페이스를 사용하도록 설정해야 합니다. 특정 디바이스 인터페이스 클래스 를 사용하는 애플리케이션은 해당 클래스의 디바이스 인터페이스 인스턴스를 쿼리하고 인터페이스를 지원하는 디바이스를 나타내는 기호화된 링크 이름 목록을 받을 수 있습니다. 그런 다음, 애플리케이션은 I/O 요청의 대상으로 기호 링크 이름을 사용할 수 있습니다.

IRP_MN_QUERY_INTERFACE 요청에 대한 응답으로 드라이버가 내보낼 수 있는 인터페이스와 디바이스 인터페이스를 혼동하지 마세요. 해당 IRP는 커널 모드 드라이버 간에 루틴 진입점을 전달하는 데 사용됩니다.