UMDF 드라이버 작성의 이점
이 항목에서는 커널 모드 드라이버 대신 UMDF(User-Mode Driver Framework) 드라이버를 작성할 때의 이점에 대해 설명합니다.
UMDF 드라이버를 작성할 때 다음과 같은 이점을 얻을 수 있습니다.
UMDF 드라이버는 실행되는 프로세스의 주소 공간에만 액세스할 수 있으므로 운영 체제 안정성을 향상합니다.
UMDF 드라이버는 LocalService 계정으로 실행되므로 사용자의 데이터 또는 시스템 파일에 대한 액세스가 제한됩니다.
사용자 모드 드라이버는 커널 모드 드라이버보다 훨씬 간단한 환경에서 작동합니다. 예를 들어 커널 모드 드라이버는 IRQL, 페이지 오류 및 스레드 컨텍스트를 고려해야 합니다. 그러나 사용자 모드에서는 이러한 문제가 없습니다. 사용자 모드 드라이버는 항상 요청 프로세스와 다른 스레드에서 실행되며 항상 페이지 오류를 수행할 수 있습니다.
UMDF 버전 2는 대부분의 영역에서 KMDF와 기능 패리티를 제공합니다. 전체 비교는 UMDF 2 기능과 KMDF 비교를 참조하세요.
UMDF 버전 2는 KMDF와 UMDF 간의 변환을 용이하게 합니다. KMDF 드라이버를 UMDF 2 드라이버로 변환하는 방법(그 반대의 경우도 마찬가지)을 참조하세요.
사용자 모드 디버거를 사용하거나 커널 모드 디버거인 UMDF 버전 2부터 시작하여 UMDF 드라이버를 디버그할 수 있습니다.
KMDF 및 UMDF 버전 2부터 Wdfkd.dll 디버거 확장 명령을 사용할 수 있습니다. 자세한 내용은 디버거 확장을 참조하세요.
전체 WDF 모델의 기본 목표는 지능형 기본값을 제공하여 디바이스 하드웨어에 집중하고 대부분의 드라이버에 공통적인 작업을 수행하기 위해 코드를 작성하지 않도록 하는 것입니다.
이 목표를 달성하기 위해 프레임워크는 드라이버와 "옵트인" 방식으로 작동하도록 설계되었습니다. UMDF 드라이버를 작성할 때 디바이스에 영향을 주는 이벤트에 대해서만 콜백 루틴을 제공합니다. 예를 들어 일부 디바이스는 켜져 있고 꺼지기 직전에 개입해야 합니다. 이러한 디바이스의 드라이버는 프레임워크가 해당 시간에 호출하는 콜백 함수를 구현할 수 있습니다.
드라이버에는 디바이스에 디바이스별 지원이 필요한 이벤트만 처리하는 코드가 포함되어 있습니다. 다른 모든 이벤트는 프레임워크 기본값으로 처리할 수 있습니다.
또한 드라이버는 디바이스가 저전력 상태인 동안 프레임워크가 요청 디스패치를 중지하고 디바이스가 작동 상태로 돌아온 후 디스패치를 다시 시작하도록 I/O 요청 큐를 구성할 수 있습니다. 마찬가지로 디바이스가 저전력 상태인 동안 I/O 요청이 도착하면 프레임워크가 자동으로 디바이스를 켤 수 있습니다.