윈도우 드라이버 모델
정의
윈도우 드라이버 모델(Windows Driver Model, 약칭 WDM)은 마이크로소프트가 1996년 Windows 95 및 Windows NT 4.0용으로 도입한 장치 드라이버 설계 프레임워크이다. 이 모델은 하드웨어 제어를 위한 커널 모드 드라이버와 사용자 모드와의 인터페이스를 표준화하여, 다양한 Windows 운영 체제 버전 간에 드라이버 호환성을 확보하도록 설계되었다.
배경 및 역사
- 도입 시기: Windows 95와 Windows NT 4.0이 동시에 출시되면서, 각각의 운영 체제에 별도 드라이버가 필요했던 상황을 통합하기 위해 WDM이 발표되었다.
- 목표: 개발자가 하나의 드라이버 바이너리만 작성하면, 해당 드라이버가 Windows 95, Windows 98, Windows 2000, Windows XP 등 여러 버전에서 동작하도록 하는 것이 주된 목표였다.
- 후속 모델: 이후 Windows Vista와 Windows 7부터는 Windows Driver Frameworks (WDF) 가 도입되었으며, 이는 Kernel‑Mode Driver Framework (KMDF)와 User‑Mode Driver Framework (UMDF)를 포함한다. WDM은 여전히 하위 호환성을 유지하기 위해 지원되고 있지만, 새로운 드라이버는 주로 KMDF/UMDF 기반으로 개발된다.
핵심 구조
- 드라이버 객체(Driver Object)
DriverEntry함수에서 초기화가 수행되며, 시스템이 드라이버를 로드할 때 최초 진입점이다.
- 디바이스 객체(Device Object)
- 각 물리적 또는 논리적 장치를 나타내며, I/O 요청 패킷(I/O Request Packet, IRP)의 대상이 된다.
- IRP(입출력 요청 패킷)
- I/O 요청을 캡슐화한 구조체이며, 드라이버는 IRP를 해석·처리하고 결과를 반환한다.
- 디스패치 루틴(Dispatch Routines)
IRP_MJ_CREATE,IRP_MJ_READ,IRP_MJ_WRITE등 다양한 I/O 메이저 함수에 대응하는 콜백 함수이다.
- 전원 관리
IRP_MJ_POWER를 통해 전원 상태 전이(대기, 절전, 복귀 등)를 처리한다.
- 플러그 앤 플레이(PnP)
IRP_MJ_PNP를 이용해 장치 삽입·제거, 리소스 할당, 인터럽트 관리 등을 수행한다.
주요 특징
- 운영 체제 독립성: 동일한 드라이버 바이너리로 Windows 9x와 Windows NT 계열을 지원한다.
- 플러그 앤 플레이 및 전원 관리 통합: WDM은 PnP와 전원 관리를 드라이버 설계에 필수 요소로 포함한다.
- IRP 기반 통신: 모든 I/O 동작이 IRP를 통해 전달되며, 이는 드라이버와 커널 사이의 표준화된 인터페이스를 제공한다.
- 보안·안정성: 커널 모드 코드가 시스템 전체에 영향을 미치므로, 드라이버는 서명 요구와 같은 보안 메커니즘을 준수해야 한다.
현재 사용 상황
- 최신 Windows 버전에서는 대부분의 새 드라이버가 KMDF/UMDF를 기반으로 개발된다. 그러나 기존 레거시 하드웨어용 드라이버나 특정 저수준 장치(예: 일부 파일 시스템 필터, 네트워크 프로토콜 스택)는 여전히 WDM 인터페이스를 사용한다.
- Microsoft는 WDM 드라이버에 대해 보안 업데이트와 호환성 패치를 지속적으로 제공한다.
관련 문서 및 표준
- Microsoft Windows Driver Kit (WDK): WDM을 포함한 드라이버 개발에 필요한 헤더·라이브러리·샘플 코드를 제공한다.
- Windows Driver Documentation: Microsoft Docs 사이트에서 WDM의 아키텍처, IRP 흐름, 전원·PnP 모델 등에 대한 공식 설명을 확인할 수 있다.
요약
윈도우 드라이버 모델은 Windows 운영 체제 전반에 걸친 드라이버 호환성을 보장하기 위해 설계된 표준 프레임워크이며, IRP 기반 입출력, 플러그 앤 플레이·전원 관리 통합, 운영 체제 독립성을 주요 특징으로 한다. 현대 Windows 환경에서는 KMDF·UMDF가 주류를 이루지만, 레거시 및 특수 목적 드라이버는 여전히 WDM을 기반으로 유지·운용되고 있다.