Programming/Kernel / Driver2008. 12. 3. 11:58

WINDOWS XP 운영체제.

--------------------------------------------------------------------

어플리케이션     ->

                              WIN32 API 호출

WIN32서브시스템<-                                                                          유저모드

--------------------------------------------------------------------

                        ->                                                                         커널모드

                              시스템 서비스 인터페이스

                        <-

I/O MANAGE(디바이스 드라이버) -> HAL 호출

                            HAL(하드웨어 추상화 계층)

                                       -하드웨어-

---------------------------------------------------------------------



*WINDOWS 98/ME 하고 WINDOS 2000/XP 는 내부 동작이 전혀다름. 따라서 디바이스 개발도 다름.


*FILE SYSTEM DRIVER(파일시스템드라이버) : 명명된 파일(NAMED FILE)이 포함된 계층적 디렉토리 구조의 개념을 가진

표준 PC파일 시스템 모델을 로컬 하드디스크나 네트워크 연결에 대해 구현한다. 커널 모드 드라이버이다.


*LEGACY DEVICE DRIVER(레거시 디바이스 드라이버)  : 다른 드라이버의 도움 없이 하드웨어 디바이스를 직접적으로 컨트롤 하는 드라이버이다. 이 븐류에는 XP와 호환되는 NT 드라이버가 포함된다.


*WDM 드라이버 (윈도우즈 드라이버 모델)의 하부 드라이버 .


CLASS DRIVER - MICROSOFT에서 작성. 건드릴 필요없음.


MINI DRIVER - CLASS DRIVER와 함께 동작. 디바이스를 책임지고 있지만 클래스 드라이버의 서브루틴을 이용하며

클래스 드라이버는 하드웨어 관리를 맡고 있지만 많은 종속적 디바이스를 처리하기위해 MINIDRIVER를 역호출하게된다.

사용예-

(USB가 아닌 휴먼입력장치(HUMAN INPUT DEVICE:HID). 마으스, 키보드, 조이스틱, 게임 휠.

 스캐너와 카메라 같은 WINDOWS 이미지 수집 (WINDOWS IMAGE QCQUISITION:WIA) 디바이스.

 오디오,DVD,비디오 디바이스와 같은 스트리밍 디바이스와 멀티미디어 데이터 스트림

 비디오카드. 프린터. 배터리

 USB와 1394등 전통적이지 않은 버스를 사용하는 네트워크 인터페이스 디바이스. 이러한 디바이스에 대해서는 NDIS(NETWORK DRIVER INTERFACE SPECIFICATION)미니포트 드라이버를 만들어야한다. DDK 문서에서는 이를 "WDM LOWER EDGE"로 작성하라 권하고 있다. 이런 드라이버는 운영체제간에 호환성을 가지기가 어려우므로, 플랫폼 의존성을 해결하기 위해서는 작은 차이점을 가진 몇 가지 버전으로 만들도록 처음부터 계획해야한다. )



FILTER DRIVER - 경우에따라 마이크로 소프트가 제공하는 범용 드라이버가 완전한 요구사항과 맞아떨어지지 않을경우 필터드라이버를 작성해서 범용 드라이버의 작업을 수정하는것.



단일 WDM FUNCTION DRIVER - 이 드라이버는 기본적으로 독립적인 개체이고, 하드웨어를 제어하는 모든 세세한 부분을 처리.

사용예-

(스마트카드 리더, 디지털-아날로그 컨버터, 소유권확인태그 등등)


*SCSI(SMALL COMPUTER SYSTEM INTERFACE) 어댑터 : "SCSI MINIPORT" 드라이버를 사용하며, 다른 표준 커널 지원 함수를 전혀 사용하지 않는다. 이드라이버는 대신 SCSI-PORT.SYS 나 SCSIPORT.VXD에 의해 EXPORT된 특별한 API를 사용.


*네트워크 인터페이스 카드는 "NDIS MINIPORT 드라이버"를 사용. NDIS.SYS나 NDIS.VXD에의해 EXPORT된 특별한 API를 사용

Posted by skensita