HID 클라이언트 드라이버
시스템에서 제공하는 HID 미니드라이버가 디바이스의 포트 또는 버스를 지원하지 않는 경우 공급업체에서 제공하는 미니드라이버가 필요합니다.
다음 그림에서는 일반 HIDClass 디바이스(선택 사항 및 필수 공급업체 제공 구성 요소를 사용할 수 있음)에 대한 드라이버 스택을 보여 줍니다.
Windows는 다음과 같이 드라이버 스택을 빌드합니다.
- 전송 스택은 연결된 각 HID 디바이스에 대해 PDO(물리적 디바이스 개체)를 만들고 적절한 HID 전송 드라이버를 로드하여 HID 클래스 드라이버를 로드합니다.
- HID 클래스 드라이버는 TLC 에 대한 PDO를 만듭니다. 여러 TLC가 있는 복잡한 디바이스의 경우 HID 클래스 드라이버는 각 TLC에 대해 PDO를 만들고 TLC와 연결된 하드웨어 ID에 각 디바이스 개체를 나타내는 식별자가 포함되어 있는지 확인합니다.
- 공급업체에서 제공하는 함수 또는 필터 드라이버는 HID 컬렉션에 대한 FDO 또는 필터 DO를 만듭니다.
- 또는 공급업체에서 제공하는 애플리케이션이 SetupDI* API를 사용하여 디바이스를 열고 디바이스를 식별한 다음 HID 지원 루틴을 열어 디바이스와 통신할 수 있습니다. 이러한 디바이스는 RAW 모드로 열려 있다고 합니다.
시스템에서 제공하는 Minidriver 작업이 디바이스를 지원하지 않는 경우 공급업체에서 제공하는 HID 미니드라이버가 필요합니다. 다음 두 가지 방법으로 이 미니드라이버를 구현할 수 있습니다.
- HID 클라이언트 드라이버
- 애플리케이션이 HID에 직접 액세스
공급업체가 드라이버(미니드라이버 이외의)를 제공하는 경우 해당 드라이버는 다음과 같습니다.
- Windows 드라이버의 최소 요구 사항을 준수해야 합니다. 이상적으로는 UMDF(사용자 모드 드라이버 프레임워크) 또는 KMDF(커널 모드 드라이버 프레임워크)를 기반으로 해야 합니다. 덜 이상적인 솔루션은 Windows 드라이버 모델에 설명된 대로 WDM 함수 드라이버를 만드는 것입니다.
- 일반적으로 공급업체에서 정의한 디바이스 인터페이스를 지원합니다. 디바이스 인터페이스 클래스를 참조하세요. 상위 수준 드라이버 또는 사용자 모드 애플리케이션은 사용자 지정 인터페이스를 사용하여 공급업체 드라이버가 작동하는 디바이스에 액세스합니다. 사용자 지정 인터페이스는 기능을 추가하거나 HID 클래스 드라이버에 대한 인터페이스를 간소화할 수 있습니다.
드라이버가 함수 드라이버 또는 필터 드라이버가 아닌 경우 플러그 앤 플레이 알림을 사용하여 HID 컬렉션을 찾을 수 있습니다. 컬렉션을 찾은 후 드라이버는 컬렉션을 열고 함수 또는 필터 드라이버와 동일한 방식으로 작동합니다.
중요 정보:
- 공급업체에서 제공하는 함수 드라이버가 HID 컬렉션에 대해 FDO 또는 필터 DO를 만드는 경우 파일 개체별 데이터를 저장하는 데 FILE_OBJECT FsContext 필드를 사용하면 안 됩니다. FsContext 필드는 HID 클래스 드라이버용으로 예약되어 있습니다. 스택의 다른 드라이버가 파일 개체별 컨텍스트 데이터를 저장해야 하는 경우 FsContext2 필드를 대신 사용해야 합니다.
- PDO에 연결된 디바이스가 여러 개 있는 경우 FsContext2 필드를 사용할 수 있는 디바이스를 결정하는 기본 제공 메커니즘이 없습니다.