< 책 소개 >
윈도우 드라이버 개발자라면 누구나 WDF를 사용해 빠르게 접근해 단기간에 고품질의 드라이버를 개발할 수 있다.
- Nar Ganapathy, 아키텍트, 마이크로소프트의 윈도우 팀
수 년 동안 소프트웨어 개발자들이 마이크로소프트 윈도우 운영체제에서 동작하는 드라이버를 구현하는 것은 매우 도전적인 일이었다. 최근까지도 윈도우 드라이버 모델(WDM, Windows Driver Model)은 배우기가 힘들어 비교적 적은 그룹의 전문화된 개발자들만이 제한된 드라이버를 개발할 뿐이었다.
WDF는 안정된 윈도우 드라이버를 더 쉽게 구현하고 더 쉽게 배울 수 있는 드라이버 모델을 제공한다. WDF는 WDM을 대부분 대체하고 개발자가 운영체제의 복잡성보다는 제어해야 할 하드웨어의 요구 사항에만 집중하게 설계됐다. WDF는 이전에 커널 모드의 드라이버를 필요로 했던 주요 장치에 대해 유저 모드에서 동작하는 드라이버를 만들 수 있는 기능을 지원함으로써 시스템의 안정성을 향상시킨다.
WDF 프로그래밍 모델을 이용하면 대부분의 이벤트 처리는 WDF가 담당함으로써 개발자는 간단하지만 기능을 갖춘 드라이버를 단기간에 구현할 수 있다. 개발자는 이때부터 드라이버가 처리할 이벤트를 조금씩 늘려가면서 드라이버의 완전한 기능을 갖출 수 있다.
이 책은 윈도우 드라이버 개발에 관심 있거나 이전에 드라이버를 개발해 본 경험이 없는 소프트웨어 프로그래머에게 WDF를 소개하기 위해 설계됐다. 또한 WDF 구조를 설계하고 프레임워크를 만들고 프로그래머를 가이드할 예제 드라이버를 개발한 마이크로소프트 WDF 개발 팀의 파트너십 아래 작성됐다. WDF 구조와 프로그래밍 모델이라는 수준 높은 토론에서 시작하지만 이 책의 대부분은 예제를 통해 윈도우 드라이버 개발에 필요한 WDF 프레임워크를 소개할 수 있도록 실용적으로 고안됐다.
★ 이 책에서 다루는 내용 ★
● WDF을 사용한 커널 모드나 유저 모드 드라이버 개발
● 최소의 코드로써 플러그앤플레이와 전원 관리 지원이 가능한 드라이버 개발
● 견고한 I/O 핸들링 코드 구현
● 동기화와 병행성의 효과적인 관리
● 프로토콜과 시리얼 버스 기반의 디바이스에 대한 유저 모드 드라이버 개발
● USB 디바이스를 신속하게 개발하기 위한 프레임워크의 USB 기능 사용하기
● DMA 디바이스를 위한 커널 모드 드라이버 설계와 구현
● 소스 코드 분석과 정적 검증 툴을 이용한 드라이버 평가
● 드라이버 테스트와 디버그, 설치에 적용할 최고의 프랙티스 기법
★ 이 책의 대상 ★
윈도우 드라이버 구현에 흥미가 있으며, C 또는 C++ 언어를 사용하는 프로그래밍에 기초가 있는 개발자를 대상으로 한다.
■ WDF를 사용해 드라이버 구현 방법을 배우는 데 관심이 있는 드라이버 개발자: 경험이 있는 드라이버 개발자라면 새로운 모델에 쉽게 적응할 것이다. 하지만 WDF 유저 모드 드라이버는 COM 기반이라서 필요한 COM 프로그래밍에 대한 기본적인 소개를 한다.
■ 드라이버 개발을 시작하고자 하는 애플리케이션 개발자: WDF는 이전의 드라이버 모델(WDM)보다 쉽게 배울 수 있지만 애플리케이션은 드라이버, 특히 커널 모드 드라이버와는 많은 측면에서 매우 다르다. 윈도우 드라이버의 구조와 동작의 이해를 돕기 위해 기본적인 배경 정보를 제공한다. 이 배경 정보는 드라이버 개발에 대해 언급할 때 계속 사용된다.
■ 드라이버와 장치가 어떻게 연동하는지를 이해하고자 하는 하드웨어 엔지니어: WDF의 빠른 프로토타이핑(prototyping) 기능과 쉽게 배울 수 있는 기능을 통해 초기 하드웨어에서 구동할 드라이버를 만들어야 하는 엔지니어는 WDF 모델이 매우 유용하다는 것을 알 수 있을 것이다.
WDF에서 유저 모드 드라이버를 개발하려면 C++를 이해해야 하지만 커널 모드 드라이버는 항상 C로 작성된다. 두 언어 중에 하나라도 능숙하지 않다면 이 언어와 관련된 책을 참조해야 한다. C와 C++를 숙지하고 윈도우 프로그래밍에 익숙해졌다면 이 책은 WDF 드라이버를 시작하는 데 필요한 개념, 가이드라인, 프로그래밍 예제, 팁을 제공한다.
★ 이 책의 구성 ★
1부: 1부에서는 툴과 리소스, 윈도우 운영체제의 기본, 드라이버 개념, WDF 개론을 소개한다.
2부: WDF의 두 프레임워크는 매우 유사하지만 동일하지는 않다. 각 프레임워크는 장단점을 가진다. 2부에서는 프레임워크를 자세히 살펴볼 것이다.
3부: WDF 프레임워크의 구조와 구성 요소를 확실하게 이해했으므로 개발하는 동안 시간과 열정이 훨씬 많이 소비되는 윈도우 드라이버의 세부 사항을 살펴보자. 3부에서는 중요한 개념과 실제 상황에 대해 개괄적으로 소개한다.
4부: 사실상 커널 모드 드라이버는 윈도우 운영체제의 일부분이므로 유저 모드 드라이버와 관계없는 추가적인 복잡한 내용을 다루어야 한다. KMDF는 하드웨어 인터럽트와 다이렉트 메모리 액세스 같은 미묘한 사항을 다룰 필요도 있다. UMDF 드라이버의 경우 COM 오브젝트를 사용하고 구현하는 방법을 이해해야 한다. 4부에서는 이 주제를 심도 있게 살펴본다.
5부: 드라이버는 드라이버 개발을 위해 고안된 기술과 툴로써 빌드되고 테스트, 디버깅, 설치된다. 표준 툴뿐만 아니라 WDF는 견고한 WDF 드라이버를 쉽게 만들 수 있는 검증, 테스팅, 디버깅용 툴을 포함하고 있다.