본문 바로가기

programming/WDM

윈도우 드라이버 (WDM이 궁금해서..)

 

디바이스 드라이버는 로드 가능한(loadable) 커널 모듈들로서 I/O를
담당하는 O/S의 모듈(즉, I/O Manager)과 주변 하드웨어(H/W) 사이에 인터페이스를 책임진다.

 
O/S 또는 CPU가 제공하는 보호 모드 규정에 맞게 Resource를 Access를 해야한다.
User Application은 IO port를 직접 Access 할 수 없으며, Memory 영역도 제한 적으로 2G(0x7FFFFFF) 이하의 영역만을 사용해야 한다.
 
int val = _inp(0x61);
val |= 3;
_outp(0x61, val); // 보호모드 규정 위반

char *p;
p = (char *) 0x90000000;
*p = ‘a’; // 보호모드 규정 위반

 
 
디바이스 드라이버는 O/S 종속적이므로 먼저 O/S의 종류를 보면 크게 Windows 2000 계열Consumer Windows
계열
로 나누어 볼 수 있고 Windows 2000 계열에는 현재 Windows 2000과 Windows XP, Windows 2003를 포함
할 수 있다. 그리고 Consumer Windows 계열에는 Windows 95, Windows 98, Millennium Edition 을 포함 시킬
수 있다.

이러한 O/S의 분류에 따라 이들 O/S를 기반으로 실행되는 드라이버를 크게 두 타입 VxD 와 WDM로 볼 수 있다.
Consumer Windows 계열에서는 주로 VxD 타입의 드라이버를 사용하고 Windows 2000 계열에서는 WMD 타입의
드라이버를 사용한다.

그리고 참고로 Consumer Windows 계열중에서 Windows 98과 Millenninum Edition은 WDM 타입의 드라이버도
지원한다. 또한 Windows NT 4.0인 경우는 VxD와 WDM과 또 다른 형식인 Kernel Driver 타입을 사용한다. 사실
Kernel Driver 타입을 기반으로 하여 PnP(Plug and Play), Power Management, WMI(Windows Management Intrumentation)와같은 기능들이 추가적으로 더 지원되는 형식이 WDM 타입이다.

 
V : Virtual
x : Device
D : Driver

의 약자로, 가상장치관리자라고 해석할 수 있으며 이때, x는 Device의 한 종류로서 KeyBoard 또는
     Mouse같은 여러 주변 장치가 될 수 있다. 그리고 이 타입의 드라이버들은 앞에서도 언급하였지만 주로
     Consumer Windows계열 (Windows 95, Windows 98, Windows Millennium Edition)에서 사용하는
 드라이버 Type을일컫는다.
Windows Driver Model 의 약자로, 마이크로소프트에서 Driver 개발을 표준화시키고 호환성을 가지게 하기
위해 만든 드라이버 모델이다. WDM 타입의 드라이버를 제작하면 WDM 드라이버 모델을 지원하는 Wind-
ows 98, Windows Millennium Edition, Windows 2000, Windows XP, Windows 2003 에서 소스코드 레벨
에서 호환이 되므로 다른 O/S로의 포팅작업은 포팅하고자하는 O/S의 개발 환경에서 재 컴파일하는것만로도
이루어 질 수 있다.
Windows Driver Foundation의 약자로, WDM의 단점을 보완한 새로운 드라이버 개발 모델이다.
Windows 2000, Windows XP, Windows 2003을 포함하여 향후 출시될 codename Longhorn에서도
채택될 것으로 보인다.
WDM의 드라이버들은 그 역할에 따라 크게 3종류의 드라이버들로 분류할 수 있다.

첫째, Bus 드라이버로서 PCI, PCMCIA, USB등과 같은 Physical bus 또는 논리적 bus에
        존재하는 장치(devices)의 존재를 감지하고, PnP Manager에게 장치의 존재를
        알려주며, 해당 Bus의 Power 관리를 책임지는 역할을 수행한다.

둘째, Function 드라이버로서 해당 장치에 대한 I/O 요청을 수행하고, PnP,Power 관리도
        책임을 진다.

셋째, Filter 드라이버로서 일반적으로 Function 드라이버의 위(Upper Filter)또는
        아래(Lower Filter) 계층에 위치하여 H/W 또는 Function드라이버의 기능 보완
        역할을 수행한다.

출처:http://www.driveronline.org/driver/driver01.asp (디바이스드라이버 개발자 커뮤니티)