KMDF 확장 및 드라이버 트리플
KMDF Extensions and Driver Triples(원본 Microsoft Learn 링크)
아래는 위 문서의 번역이다.
이 문서는 Kernel-Mode Driver Framework(KMDF)에 대한 클래스 기반 확장을 설명한다.
이 항목을 읽기 전에 미니 드라이버, 미니포트 드라이버 및 드라이버 쌍 및 일반 드라이버 쌍 모델로서의 KMDF에서 제시된 개념을 이해해야 한다.
일부 디바이스 클래스의 경우 Microsoft는 KMDF 드라이버가 수행해야 하는 처리량을 더욱 줄여주는 KMDF 확장을 제공한다. 클래스 기반 KMDF 확장을 사용하는 드라이버는 다음 세 가지 요소로 구성되며 이를 드라이버 트리플이라고 한다.
- 대부분의 드라이버에 공통적인 작업을 처리하는 Framework
- 특정 디바이스 클래스에 특화된 작업을 처리하는 클래스 기반 프레임워크 확장
- 특정 디바이스에 특화된 작업을 처리하는 KMDF 드라이버 드라이버 트리플에 포함된 세 가지 드라이버(KMDF 드라이버, 디바이스 클래스 KMDF 확장, Framework)는 결합되어 단일 WDM 드라이버를 구성한다.
드라이버 트리플(KMDF 드라이버, 디바이스 클래스 KMDF 확장, 프레임워크)의 세 드라이버는 결합되어 하나의 WDM 드라이버를 형성한다.
디바이스 클래스 KMDF 확장의 예로는 SPB(Simple Peripheral Bus) 디바이스 클래스용 KMDF 확장인 SpbCx.sys가 있다. SPB 클래스에는 I2C와 SPI와 같은 동기식 직렬 버스가 포함된다. I2C 버스 컨트롤러의 드라이버 트리플은 다음과 같이 구성될 것이다:
- 프레임워크는 대부분의 모든 드라이버에 공통적인 일반 작업을 처리한다.
- SpbCx.sys는 SPB 버스 클래스에 특화된 작업을 처리한다. 이는 모든 SPB 버스에 공통적인 작업들이다.
- KMDF 드라이버는 I2C 버스에 특화된 작업을 처리한다. 이 드라이버를 MyI2CBusDriver.sys라고 하자.

드라이버 트리플(MyI2CBusDriver.sys, SpbCx.sys, Wdf01000.sys)의 세 드라이버는 결합되어 I2C 버스 컨트롤러의 함수 드라이버 역할을 하는 단일 WDM 드라이버를 형성한다. Wdf01000.sys(프레임워크)는 이 드라이버의 디스패치 테이블을 소유하므로, 누군가 드라이버 트리플에 IRP를 보낼 때 그 IRP는 wdf01000.sys로 전달된다. wdf01000.sys가 IRP를 스스로 처리할 수 있으면 SpbCx.sys와 MyI2CBusDriver.sys는 관여하지 않는다. wdf01000.sys가 IRP를 스스로 처리할 수 없으면 SbpCx.sys의 이벤트 핸들러를 호출하여 도움을 받는다.
다음은 MyI2CBusDriver.sys가 구현할 수 있는 이벤트 핸들러의 예이다:
- EvtSpbControllerLock
- EvtSpbIoRead
- EvtSpbIoSequence
다음은 SpbCx.sys가 구현하는 이벤트 핸들러의 예이다:
- EvtIoRead
댓글남기기