디바이스 드라이버
- Windows Server 2008
디바이스 드라이버는 로드 가능한 커널모드 모듈로 I/O 관리자와 관련 하드웨어 사이를 인터페이스로 연결한다. 디바이스 드라이버는 다음 컨텍스트 중 하나로 커널모드에서 동작한다.
- I/O 함수를 호출한 유저 스레드 컨텍스트
- 커널모드 시스템 스레드 컨텍스트
- 인터럽트의 결과
디바이스 드라이버는 하드웨어를 직접 조작하지 않고 하드웨어 인터페이스에 접속하기 위한 HAL 내의 함수를 호출 한다. 디바이스 드라이버는 다음과 같은 유형이 있다.
- 하드웨어 디바이스 드라이버 : 물리적 디바이스나 네트워크로부터 입력을 읽어 들이거나 출력을 쓰기 위해 하드웨어를 조작(HAL 사용)한다.
- 파일 시스템 드라이버 : 파일 지향 I/O 요청을 받아들이고 특정 장치로 I/O 요청을 보내는 윈도우 드라이버
- 파일 시스템 필터 드라이버 : 플랫폼 디스크 미러링과 암호화, I/O 가로채기, I/O를 다음 계층으로 전달하기 전에 어떤 가치를 더하는 작업을 수행하는 작업을 진행
- 네트워크 리디렉터와 서버 : 파일 시스템 I/O 요청을 네트워크상의 머신으로 전송하거나 요청을 수신하는 파일 시스템 드라이버
- 프로토콜 드라이버 : TCP/IP와 NetBEUI, IPX/SPX 같은 네트워크 프로토콜을 구현
- 커널 스트리밍 필터 드라이버 : 오디오와 비디오 레코딩이나 디스플레이 같은 데이터 스트림상에서의 시그널 처리를 수행하기 위해 연결
사용자가 작성한 커널코드를 시스템에 추가하기 위한 유일한 방법은 디바이스 드라이버를 설치하는 것이므로 프로그래머는 내부 운영체제 함수나 데이터 구조체에 접근하기 위해 디바이스 드라이버를 작성한다.
[윈도우 드라이버 모델(WDM)]
- 버스 드라이버 : 버스 컨트롤러나 어댑터, 브리지, 자식 디바이스를 가진 여타 어떤 디바이스에 서비스를 제공한다.
- 펑션 드라이버 : 메인 디바이스 드라이버로 디바이스에 대한 동작 인터페이스를 제공
- 필터 드라이버 : 디바이스에 기능을 추가하거나 다른 드라이버로부터의 I/O 요청이나 응답을 수정하기 위해 사용
WDM 드라이버 환경에서는 단일 드라이버가 디바이스의 모든 면을 제어하지 않는다. 펑션 드라이버가 디바이스를 조작하는 동안 버스 드라이버는 버스상의 디바이스를 PnP 관리자에 보고할 수도 있다. 저수준 필터 드라이버는 디바이스 하드웨어의 행위를 수정한다.
[윈도우 드라이버 파운데이션]
윈도우 드라이버 파운데이션은 커널모드 드라이버 프레임워크(KMDF)와 유저모드 드라이버 프레임워크(UMDF)라는 두 가지 프레임워크를 제공해 윈도우 드라이버 개발을 단순하게 한다. Windows Server2000 SP4 이후는 KMDF, Windows XP 이후에는 UMDF 사용이 가능하다.
KMDF는 WDM에 대한 단순한 인터페이스를 제공한다. KMDF 드라이버는 자신들이 등록할 수 있는 이벤트에 응답하고 자신들이 관리하는 하드웨어 한정적이지 않은 작업을 수행하기 위해 KMDF 라이브러리를 호출할 수 있다.
UMDF는 비디오 카메라와 MP3 플레이어 와 같은 클래스의 드라이버가 유저모드 드라이버로 구현될 수 있게 한다. UMDF는 본질적으로 유저모드 서비스에서 각 유저모드 드라이버를 실행한다. 그리고 하드웨어에 대한 실제 액세스를 제공하는 커널모드 래퍼 드라이버와 통신하기 위해 ALPC를 사용한다.
[설치된 디바이스 드라이버 살펴보기]
[윈도우] + [R] 또는 [시작] – [실행]을 클릭한다. msinfo32를 실행한다. 시스템 정보에서 [소프트웨어 환경] – [시스템 드라이버]를 선택 한다.
레지스터에 정의 되어 있는 디바이스 드라이버 목록, 유형, 상태를 나타낸다.
'Windows , IIS' 카테고리의 다른 글
트랩 디스패칭과 인터럽트 디스패칭 그리고 하드웨어 인터럽트 처리 (0) | 2015.07.16 |
---|---|
시스템 프로세스 (0) | 2015.07.16 |
하드웨어 추상화 계층(HAL) (0) | 2015.07.16 |
커널 (0) | 2015.07.16 |
Ntdll.dll, 익스큐티브 (0) | 2015.07.16 |