본문 바로가기

Programming/Windows&C#

[Windows/WDM] 드라이버

728x90
반응형

WDM(Windows Driver Model)

예전의 windows, 95와 NT에선 드라이버 개발 방법이 완전히 달랐다. 그래서 차기작인 98과 2000에선 이러한 부분을 해결 할려고 했었고 그러기 위해서 NT의 기존 커널 드라이버에 '플러스앤플레이' 그능과 '전원 관리 기능'을추가하여 새롭게 만든 규격이 WDM이다.


MMU(Memory Management Unit)

물리 메모리와 가상 메모리의  변환 테이블이다. 즉 컴퓨터의 실제 메모리 주소를 물리 메모리 영역이라고 한다면 우리가 사용하는 메모리 주소를 가상 메모리 주소라고 할 수 있다.

MMU 주소 변환 테이블

· 가상 주소와 실제 주소가 대응하는 표를 가지고 있음.

· 지정된 주소가 표에 지정된 범위인지 조사한다.

· 범위 외라면 부정 접근 예외를 발생 시킨다.

· 범위 내라면 주소를 변환해 메모리에 접근한다.



KMDF와 UMDF는 비스타 이후에 새롭게 추가된것들이다.


KMDF(Kernel Mode Driver Framework) 

WDM 사양의 상위에 위치해 좀더 다양한 서비스가 추가된 드라이버 모델이다. 여기서 다양한 서비스란 모든 디바이스 드라이버에서 공통적으로 사용되는 코드 부분을 라이브러리로 제공한다는 것이다. 또한 KMDF의 경우에는 xp에서도 사용이 가능하다.


UMDF(User Mode Driver Framework) 

사용자 모드로 동작하는 디바이스 드라이브 모델이다. 다른 드라이브와 다르게 조금 특수한 모델인데 우선 위치가 사용자 모드에 속한다는 점에 주목해야한다. 사실 실제로 디바이스를 제어하는것은 커널에 위치한 'Kernel Driver for UMDF'라는 전용 드라이브가 수행한다. 이 드라이버는 해당 결과를  Reflector를 통해 UMDF에 전달한다. 이 과정에서 드라이버 관리자(Driver Manager)라는 소프트웨어가 사용자모드 UMDF와의 통신을 돕는다. 즉 실제 제어는 커널모드의 드라이버가 수행하는데, 그 드라이버에 지시를 내릴수 있는 사용자 모드의 소프트웨어가 UMDK이다.



●드라이버를 개발하기 위해 필요한 사항들

- 제어할 하드웨어에 관한 지식을 알아야 한다.

- 상위에 위치한 드라이버 관리 소프트웨어가 제공하는 사양을 이해해야 한다.

- 하위에 위피한 버스 드라이버가 제공하는 사양을 이해해야한다.

- 시스템 크래시가 발생하지 않게 사용자 모드보다 더 높은 품질의 소프트웨어를 작성해야 한다.


 

반응형