윈도우 드라이버 모델
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
윈도우 드라이버 모델(WDM)은 마이크로소프트가 윈도우 98 및 윈도우 2000 운영체제에서 드라이버 호환성 문제를 해결하고 드라이버 개발을 표준화하기 위해 도입한 드라이버 아키텍처이다. WDM은 기능, 버스, 필터 드라이버로 구성되며, 윈도우 비스타 이후 WDM을 대체하는 윈도우 드라이버 파운데이션(WDF)이 출시되었지만 호환성을 유지하고 있다. WDM은 학습 곡선이 높고 전원 관리 및 I/O 취소에 어려움이 있다는 비판을 받았다. 보안을 위해 드라이버는 디지털 서명을 권장하며, 윈도우 8부터 64비트 커널 모드뿐만 아니라 사용자 모드 드라이버에도 서명이 필수적이다. 윈도우 운영 체제에서 장치 드라이버는 동적 링크 라이브러리 파일로 구현되며, 장치 관리자를 통해 하드웨어를 보고 제어할 수 있다.
더 읽어볼만한 페이지
- 장치 드라이버 - 윈도우 디스플레이 드라이버 모델
윈도우 비스타부터 도입된 윈도우 디스플레이 드라이버 모델(WDDM)은 성능 향상, 안정성, 새로운 기술 지원을 목표로 개발된 디스플레이 드라이버 아키텍처로, 가상화된 비디오 메모리, GPU 스케줄링, 프로세스 간 Direct3D 표면 공유, 향상된 오류 허용성 등의 특징을 가지며 데스크톱 윈도우 관리자(DWM)를 통한 합성 데스크톱 환경 구현에 필수적이다. - 장치 드라이버 - HPLIP
HPLIP는 HP에서 제공하는 리눅스용 프린터 및 스캐너 드라이버이자 툴 모음으로, GUI 환경 설정 및 명령줄 유틸리티를 통해 장치 구성, 인쇄, 스캔, 팩스 등의 작업을 지원하며, 자동 설치 프로그램과 hpiod 프로세스와 연동되어 작동한다. - 마이크로소프트 API - 윈도우 API
윈도우 API는 마이크로소프트 윈도우 운영 체제에서 응용 프로그램이 시스템 기능에 접근하도록 돕는 인터페이스 집합이며, 다양한 버전으로 발전해 왔고, 현재 Win32가 널리 사용되며, 유연성을 제공하지만 복잡하다는 단점을 보완하기 위해 다양한 래퍼 라이브러리가 개발되었다. - 마이크로소프트 API - WinFS
WinFS는 마이크로소프트가 개발한 파일 시스템으로, 검색 기능 내장 및 메타데이터 관리를 통해 데이터 관리 효율성을 높이는 것을 목표로 했으나 별도 제품으로 출시되지는 못하고 핵심 기능들이 윈도우 비스타 이후 기술에 통합되었다.
윈도우 드라이버 모델 | |
---|---|
일반 정보 | |
종류 | 장치 드라이버 |
개발 | 마이크로소프트 |
첫 출시 | 윈도우 98 |
최신 버전 | 1.2 (Windows 2000 이상) |
지원 운영 체제 | 윈도우 98 이상 |
라이선스 | 독점 소프트웨어 |
구성 요소 | |
커널 모드 드라이버 | 드라이버 자체 (실제 하드웨어와 상호 작용) |
사용자 모드 DLL | 응용 프로그램이 드라이버와 통신하는 데 사용 |
주요 특징 | |
하드웨어 추상화 | 하드웨어 특정 코드로부터 운영 체제를 분리 |
표준 인터페이스 | 드라이버 개발을 단순화 |
이식성 | 다양한 하드웨어 플랫폼 지원 |
버전 관리 | 드라이버 업데이트 및 관리를 용이하게 함 |
관련 기술 | |
다이렉트X | 그래픽 및 멀티미디어 장치 드라이버 |
WDM 오디오 | 오디오 장치 드라이버 |
윈도우 디스플레이 드라이버 모델 (WDDM) | 디스플레이 장치 드라이버 (Windows Vista 이상) |
역사 | |
이전 모델 | 윈도우 3.1x 드라이버 모델 |
개선 사항 | 더 나은 안정성, 성능, 하드웨어 지원 제공 |
추가 정보 | |
용도 | 다양한 하드웨어 장치 지원 (프린터, 스캐너, 네트워크 카드 등) |
중요성 | 하드웨어와 운영 체제 간의 원활한 통신 가능 |
2. 역사
WDM은 마이크로소프트가 윈도우 98과 윈도우 2000 운영체제에서 드라이버 호환성 문제를 해결하고, 드라이버 개발 과정을 표준화하기 위해 도입한 것이다. WDM 드라이버는 입출력 요청 패킷(IRP)을 통해 서로 통신하는 복잡한 계층 구조를 가지고 있다. 윈도우 95, 윈도우 NT 4.0 등 이전 버전의 윈도우에서는 WDM 드라이버가 작동하지 않는다.
WDM은 세 가지 유형의 장치 드라이버를 정의하지만, 특정 장치에 대한 모든 드라이버 스택이 모든 유형의 장치 드라이버를 포함하는 것은 아니다. WDM 장치 드라이버의 세 가지 유형은 다음과 같다.[1]
WDM을 준수하면 x86 기반 컴퓨터에서 윈도우 98, 윈도우 98 SE, 윈도우 미, 윈도우 2000, 윈도우 XP, 윈도우 서버 2003, 윈도우 비스타 (하위 호환성을 위함)에 걸쳐 이진 코드 호환성과 소스 호환성을 보장한다. WDM은 상위 호환성을 전제로 만들어졌으므로, WDM 드라이버는 드라이버가 처음 만들어진 시기보다 더 새로운 버전의 윈도우에서도 동작할 수 있지만, 새로운 버전의 운영 체제에 도입된 새로운 기능의 이점을 얻을 수는 없다. 하위 호환성은 일반적으로 제공되지 않아, WDM 드라이버가 더 오래된 버전의 윈도우에서 동작하는 것은 보장되지 않는다. 예를 들어, 윈도우 XP는 윈도우 2000용으로 작성된 드라이버를 사용할 수 있지만, 윈도우 XP에 도입된 새로운 WDM 기능은 이용할 수 없다.
윈도우 98 기반 운영 체제(윈도우 98, 윈도우 98 SE, 윈도우 미)는 WDM과 VxD 드라이버 표준을 모두 지원한다. 일반적으로 더 새로운 WDM 표준이 더 많은 기능을 제공하는데, 예를 들어 VxD 드라이버를 사용하는 TV 수신 카드는 384 x 288 화소 해상도로 영상을 캡처할 수 있지만, 같은 TV 수신 카드에 WDM 드라이버를 사용하면 768 x 576 화소 해상도로 캡처할 수 있다. 이는 WDM의 일부인 브로드캐스트 드라이버 아키텍처(BDA) 덕분이다.
3. WDM 드라이버의 종류
3. 1. 기능 드라이버
기능 드라이버는 장치의 주된 드라이버로, 보통 장치 제조업체에서 제공하며 장치의 운영 인터페이스를 제공하고 읽기/쓰기 작업을 처리한다. 기능 드라이버는 하나 이상의 장치를 지원할 수 있으며, 클래스 드라이버와 미니포트 드라이버로 더 세분화될 수 있다.
기능 드라이버와 버스 드라이버는 종종 드라이버/미니드라이버 쌍으로 구현되며, 실제로는 클래스 또는 미니클래스, 또는 포트 또는 미니포트 쌍이다.[2]
장치에 대한 I/O 요청을 처리하는 각 드라이버는 메인 메모리에 로드되는 해당 객체를 가진다. 장치 객체는 연결된 장치 클래스에서 윈도우 운영 체제에 의해 생성되며, 해당 드라이버에 대한 포인터를 저장하는 DEVICE_OBJECT 유형의 구조를 포함한다. 런타임에 이러한 포인터는 드라이버의 디스패치 루틴과 멤버 함수를 찾는 데 사용된다. WDM 드라이버 스택에서 상위 필터라고 하는 필터 드라이버 장치 객체는 I/O 관리자로부터 장치에 대한 I/O 요청 패킷 (IRP)을 받는다. 상위 필터 드라이버가 요청을 처리할 수 없는 경우, 드라이버 스택에서 한 단계 아래의 드라이버 객체를 찾는다. IRP는 IoCallDriver() 함수를 호출하여 드라이버 스택으로 전달되고 기능 드라이버 장치 객체(기능 장치 객체라고도 함)에 의해 처리된다. 기능 드라이버 장치 객체는 차례로 IRP를 하위 필터, 즉 다른 필터 장치 객체로 전달할 수 있다. 그런 다음 IRP는 물리적 장치 객체로 작동하는 버스 드라이버로 전달될 수 있다. 버스 드라이버 객체는 드라이버 스택의 맨 아래에 있으며, 하드웨어 추상화 계층과 상호 작용한다. 하드웨어 추상화 계층은 윈도우 운영 체제 커널의 일부이며, 윈도우 운영 체제가 다양한 프로세서, 서로 다른 메모리 관리 장치 아키텍처, 그리고 다양한 I/O 버스 아키텍처를 가진 다양한 컴퓨터 시스템에서 실행될 수 있도록 한다.[5] IRP의 실행은 스택의 드라이버 객체 중 하나가 결과와 상태 플래그와 함께 I/O 관리자에게 요청을 다시 반환할 때 완료된다.[6]
3. 1. 1. 클래스 드라이버
미니포트 드라이버나 기타 클래스 드라이버를 그 위에 구축할 수 있는 일종의 프레임워크 드라이버이다.[13] WDM 아키텍처의 서로 다른 계층 간 인터페이스를 제공한다. 서로 다른 클래스 계층에 속하는 드라이버 간의 공통 기능은 클래스 드라이버로 작성할 수 있으며, 이를 다른 클래스 드라이버나 미니포트 드라이버에서 활용한다. 클래스 드라이버의 최하층은 미니포트 드라이버와 인터페이스를 갖고, 최상층은 OS와 인터페이스를 갖는다. 클래스 드라이버는 필요에 따라 동적으로 로드/언로드할 수 있다. 하드웨어나 버스 고유의 기능이라기보다는 클래스 고유의 기능을 갖는 경우가 많으며, 경우에 따라서는 단순한 열거(enumeration)와 같은 기능만 갖는 경우도 있다.
3. 1. 2. 미니포트 드라이버
USB, 오디오, SCSI, 네트워크 어댑터와 같은 특정 장치를 위한 기능 드라이버이다. 이들은 일반적으로 윈도우 98에서 윈도우 2000에 이르기까지 소스 및 바이너리 호환성을 보장하지만, 특정 버스 클래스 드라이버를 통해 하드웨어 접근을 제어한다.[2]
3. 2. 버스 드라이버
버스 드라이버는 버스 컨트롤러, 어댑터, 브리지를 지원한다. 마이크로소프트는 PCI, PnPISA, SCSI, USB, IEEE1394와 같은 일반적인 버스를 위한 버스 드라이버를 제공한다.[1] 각 소프트웨어 제조업체는 필요하다면 자체 버스 드라이버를 만들 수 있다. 버스 드라이버는 컴퓨터에 같은 종류의 버스가 하나 이상 있을 경우 이들을 지원할 수 있다.
버스 드라이버는 메인보드의 모든 버스에 대해 하나씩 존재하며, 해당 버스에 연결된 모든 장치를 식별하고 플러그 앤 플레이 이벤트를 처리하는 주요 책임을 갖는다.[1] 마이크로소프트는 PCI, PnPISA, SCSI, USB, FireWire와 같은 버스 드라이버를 운영 체제의 일부로 제공한다.[1]
3. 3. 필터 드라이버
필터 드라이버는 장치의 동작을 수정하거나 값을 추가하는 선택적인 드라이버로, 비장치 드라이버의 역할을 할 수도 있다.[1] 필터 드라이버는 하나 이상의 장치를 지원할 수 있으며, 상위 수준 필터 드라이버는 기능 드라이버 위에, 하위 수준 필터 드라이버는 기능 드라이버와 버스 드라이버 사이에 위치한다.[1]
3. 3. 1. 장치 서비스
윈도우 서비스로 추가된 커널 수준 필터 드라이버의 일종으로, 응용 프로그램이 장치와 함께 작동할 수 있도록 지원한다.[1]
4. 객체 지향 드라이버 스택
기능 드라이버와 버스 드라이버는 종종 드라이버/미니드라이버 쌍으로 구현되는데, 실제로는 클래스 또는 미니클래스, 또는 포트 또는 미니포트 쌍이다.[2]
버스에 연결된 장치의 버스 드라이버는 클래스 드라이버로 구현되며 하드웨어에 독립적이다. 특정 유형의 장치 작업을 지원한다. 윈도우 운영 체제에는 키보드용 kbdclass.sys 드라이버와 같은 여러 클래스 드라이버가 포함되어 있다. 반면에 미니클래스 드라이버는 장치 공급업체에서 제공하며, 특정 클래스의 특정 장치에 대한 장치별 작업만 지원한다.[2]
포트 드라이버는 주변 하드웨어 인터페이스에 대한 일반적인 입출력(I/O) 작업을 지원한다. 포트 드라이버의 핵심 기능은 운영 체제에서 의무화하며, 윈도우 운영 체제는 다양한 포트 드라이버를 통합한다. 예를 들어, 8042 마이크로컨트롤러용 i8042prt.sys 포트 드라이버는 PS/2 키보드를 메인보드 주변 버스에 연결한다. 미니포트 드라이버는 미니클래스 드라이버와 마찬가지로 하드웨어 공급업체에서 제공하며 메인보드의 포트에 연결된 주변 하드웨어의 장치별 작업만 지원한다.[3][4]
장치에 대한 I/O 요청을 처리하는 각 드라이버는 해당 객체를 가지며, 이 객체는 메인 메모리에 로드된다. 장치 객체는 연결된 장치 클래스에서 윈도우 운영 체제에 의해 생성된다. 장치 객체는 해당 드라이버에 대한 포인터를 저장하는 DEVICE_OBJECT 유형의 구조를 포함한다. 런타임에 이러한 포인터는 드라이버의 디스패치 루틴과 멤버 함수를 찾는 데 사용된다. WDM 드라이버 스택에서 상위 필터라고 하는 필터 드라이버 장치 객체는 I/O 관리자로부터 장치에 대한 I/O 요청 패킷 (IRP)을 받는다. 상위 필터 드라이버가 요청을 처리할 수 없는 경우, 드라이버 스택에서 한 단계 아래의 드라이버 객체를 찾는다. IRP는 IoCallDriver() 함수를 호출하여 드라이버 스택으로 전달되고 기능 드라이버 장치 객체(기능 장치 객체라고도 함)에 의해 처리된다. 기능 드라이버 장치 객체는 차례로 IRP를 하위 필터, 즉 다른 필터 장치 객체로 전달할 수 있다. 그런 다음 IRP는 물리적 장치 객체로 작동하는 버스 드라이버로 전달될 수 있다. 버스 드라이버 객체는 드라이버 스택의 맨 아래에 있으며, 하드웨어 추상화 계층과 상호 작용한다. 하드웨어 추상화 계층은 윈도우 운영 체제 커널의 일부이며, 윈도우 운영 체제가 다양한 프로세서, 서로 다른 메모리 관리 장치 아키텍처, 그리고 다양한 I/O 버스 아키텍처를 가진 다양한 컴퓨터 시스템에서 실행될 수 있도록 한다.[5] IRP의 실행은 스택의 드라이버 객체 중 하나가 결과와 상태 플래그와 함께 I/O 관리자에게 요청을 다시 반환할 때 완료된다.[6]
5. 윈도우 운영 체제별 장치 드라이버
WDM 프레임워크는 운영 체제와 커널 내부의 드라이버 간 통신을 단순화하기 위해 마이크로소프트에서 개발되었다. 장치 드라이버는 특정 윈도우 운영 체제 버전을 위해 설계되었으며, 이전 버전의 윈도우용 드라이버는 다른 버전에서 제대로 작동하지 않거나 전혀 작동하지 않을 수 있다. 32비트 윈도우 운영 체제에는 32비트 드라이버가 필요하고, 64비트 윈도우 운영 체제에는 64비트 드라이버가 필요하다.[8]
WDM을 따르게 되면 x86 기반의 컴퓨터에서 윈도우 98, 윈도우 98 SE, 윈도우 미, 윈도우 2000, 윈도우 XP, 윈도우 서버 2003, 윈도우 비스타에 걸쳐 이진 코드 호환성과 소스 호환성을 보장한다. WDM은 상위 호환성을 전제로 만들어졌으므로 WDM 드라이버는 드라이버가 처음 만들어진 시기보다 더 새로운 윈도우 버전에서도 동작할 수 있지만, 새로운 버전의 운영 체제에 도입된 새로운 기능은 사용할 수 없다. WDM은 일반적으로 하위 호환성은 제공되지 않으므로, WDM 드라이버가 더 오래된 버전의 윈도우에서 동작하는 것을 보장하지 않는다. 예를 들어 윈도우 XP는 윈도우 2000용으로 작성된 드라이버를 사용할 수 있으나 윈도우 XP에 도입된 새로운 WDM 기능은 이용할 수 없다. 그러나 윈도우 XP용으로 쓰여진 드라이버는 윈도우 2000에서 사용할 수 있을 수도 있고 그렇지 않을 수도 있다.[8]
윈도우 98 계열 운영체제(98, 98SE, Me)는 WDM과 VxD 두 가지 표준을 모두 지원한다. 이들은 동일한 하드웨어에 대해 서로 다른 기능을 제공하지만, 윈도우 Me 출시 이후 세대의 하드웨어에서는 WDM 쪽이 기능이 더 풍부한 경우가 있었다.
6. 비판
WDM은 이전의 VxD 및 윈도우 NT 드라이버 모델에 비해 상당한 개선을 이루었지만, 드라이버 개발자들로부터 다음과 같은 비판을 받았다.[9]
- WDM은 배우기 매우 어렵다.
- 전원 관리 이벤트와 플러그 앤 플레이의 상호 작용이 쉽지 않다.
- 입출력 취소가 거의 불가능하다.
- 드라이버마다 수천 줄의 지원 코드가 필요하다.
- 순수 사용자 모드 드라이버 작성을 지원하지 않는다.
마이크로소프트가 제공한 문서의 품질과 샘플에 대한 수많은 문제도 거론되었다.
7. 드라이버 서명
윈도우 드라이버는 보안상의 이유로 정식 작성자를 확인할 수 있는 디지털 서명을 하여 출시하는 것이 권장된다. 디지털 서명 수단으로는 WHQL|WHQL영어 (Windows Hardware Quality Labs) 서명 또는 Authenticode|Authenticode영어 서명(자체 서명)이 존재한다. 윈도우 비스타 이후 32비트 버전 OS에서는 서명이 없는 드라이버를 설치할 때 경고가 표시되지만, 설치 및 작동은 가능하다. 반면, 64비트 버전 OS에서는 서명이 없는 커널 모드 드라이버를 작동시킬 수 없다.[15] 서명이 없는 드라이버를 설치 및 작동할 수 있는 테스트 모드도 준비되어 있지만, 이는 개발자용 내부 테스트 목적으로, 최종 사용자 환경에서는 권장되지 않는다.[16]
윈도우 8에서는 64비트 버전에서 커널 모드뿐만 아니라 사용자 모드 드라이버도 서명이 필수적이 되었다.[17]
윈도우 10에서는 2016년 1월 1일 SHA-1 인증서 폐지 정책에 따라, 커널 모드 드라이버는 32비트/64비트와 관계없이 마이크로소프트(Microsoft)에 의한 서명이 필수적이다. 사용자 모드 드라이버에 관해서는, 윈도우 8.1과 마찬가지로 Authenticode 서명을 이용할 수 있다.[18]
8. 장치 관리자
장치 관리자는 마이크로소프트 윈도우 운영 체제에서 사용되는 제어판 애플릿이다. 사용자가 컴퓨터에 연결된 하드웨어를 보고 제어할 수 있게 해준다. 하드웨어 장치 속성을 보고 수정할 수 있으며, 장치 드라이버를 관리하는 주요 도구이기도 하다.[8]
참조
[1]
서적
Dependable Computing: 14th European Workshop, EWDC 2013, Coimbra, Portugal, May 15-16, 2013, Proceedings
Springer
[2]
서적
The Rootkit Arsenal: Escape and Evasion
Jones & Bartlett Publishers
[3]
서적
The Rootkit Arsenal: Escape and Evasion
Jones & Bartlett Publishers
[4]
웹사이트
Introduction to the Windows Driver Foundation
http://www.microsoft[...]
Microsoft Developer Network
2006-10-13
[5]
서적
The Rootkit Arsenal: Escape and Evasion
Jones & Bartlett Publishers
[6]
서적
Service Availability: Third International Service Availability Symposium, ISAS 2006, Helsinki, Finland, May 15-16, 2006, Revised Selected Papers
Springer Science & Business Media
[7]
서적
Service Availability: Third International Service Availability Symposium, ISAS 2006, Helsinki, Finland, May 15-16, 2006, Revised Selected Papers
Springer Science & Business Media
[8]
서적
Microsoft Specialist Guide to Microsoft Windows 10 (Exam 70-697, Configuring Windows Devices)
Cengage Learning
[9]
간행물
Introducing Windows Driver Framework
http://www.wd-3.com/[...]
2003-05-06
[10]
웹사이트
I/O Completion/Cancellation Guidelines
https://msdn.microso[...]
Microsoft
2003-05-05
[11]
웹사이트
I/O 要求パケット (Windows Drivers)
https://msdn.microso[...]
[12]
문서
"Kernel-mode drivers that follow WDM rules are called ''WDM drivers''."
https://docs.microso[...]
Windows Hardware Developer
[13]
웹사이트
ASCII.jp:Windowsを動かすデバイスドライバの仕組み 前編 (1/4)|基礎から覚える 最新OSのアーキテクチャー
https://ascii.jp/ele[...]
[14]
웹사이트
Introducing Driver Frameworks for Windows May 6
http://www.wd-3.com/[...]
[15]
웹사이트
64bit Windows時代到来:第4回 64bit版デバイス・ドライバ (1/3) - @IT
https://atmarkit.itm[...]
[16]
웹사이트
ドライバーのデジタル署名の基礎 - Japan WDK Support Blog - Site Home - MSDN Blogs
http://blogs.msdn.co[...]
[17]
웹사이트
ドライバーのデジタル署名の留意点 - Japan WDK Support Blog - Site Home - MSDN Blogs
http://blogs.msdn.co[...]
[18]
웹사이트
Windows 10 と SHA-1 廃止ポリシーによるドライバー署名への影響について - Japan WDK Support Blog - Site Home - MSDN Blogs
http://blogs.msdn.co[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com