Windows 드라이버 모델
Windows Driver Model컴퓨팅에서 Windows 드라이버 모델(WDM)은 Windows NT 드라이버 모델뿐만 아니라 Windows 95 및 Windows 3.1 등의 이전 버전의 Windows에서 사용되던 VxD를 대체하기 위해 Windows 98 및 Windows 2000에서 도입된 디바이스 드라이버용 프레임워크입니다.
개요
WDM 드라이버는 스택 내에 레이어화되어 I/O Request Packets(IRP; I/O 요구 패킷)를 통해 서로 통신합니다.Microsoft Windows Driver Model은 요건을 표준화하고 기술해야 하는 코드 수를 줄임으로써 Windows 9x 및 Windows NT 제품 라인용 통합 드라이버 모델입니다.WDM 드라이버는 Windows 95(WDM 모델을 사이드 로드하는 OSR2 업데이트 이전), Windows NT 4.0 및 Windows 3.1 등의 Windows 98 또는 Windows 2000 이전 운영 체제에서는 실행되지 않습니다.WDM에 준거하는 것으로, 드라이버는 x86 베이스의 컴퓨터상에서 Windows 98, Windows 98 Second Edition, Windows Me, Windows 2000, Windows XP, Windows Server 2003, 및 Windows Vista(하위 호환성을 위해서)간에 바이너리 호환성과 소스 호환성을 실현할 수 있습니다.WDM 드라이버는 WDM 드라이버가 처음 작성된 버전보다 새로운 버전의 Windows에서 실행할 수 있도록 전방 호환성을 갖도록 설계되어 있습니다.그러나 그렇게 되면 드라이버는 새로운 버전에서 도입된 새로운 기능을 이용할 수 없게 됩니다.WDM은 일반적으로 하위 호환성이 없습니다.즉, WDM 드라이버는 이전 버전의 Windows에서 실행이 보장되지 않습니다.예를 들어 Windows XP는 Windows 2000용으로 작성된 드라이버를 사용할 수 있지만 Windows XP에서 도입된 새로운 WDM 기능은 사용하지 않습니다.다만, Windows XP 용으로 작성된 드라이버는, Windows 2000 에 인스톨 되는 경우와 인스톨 되지 않는 경우가 있습니다.
WDM은 Windows 2000 커널 모드 드라이버의 중간 계층에 존재하며 Windows 용 드라이버의 기능과 쓰기 용이성을 높이기 위해 도입되었습니다.WDM은 주로 Windows 98과 Windows 2000 사이에서 바이너리 및 소스 호환성을 갖도록 설계되어 있습니다만, 이것이 항상 바람직한 것은 아니기 때문에, 어느 operating system 전용의 드라이버를 개발할 수 있습니다.
디바이스 커널 모드 드라이버
Microsoft 는, 디바이스용의 Windows 드라이버 모델(WDM)을 사용하고, Windows operating system 고유의 커널 모드 드라이버에의 어프로치를 실장합니다.WDM은 디바이스 드라이버를 위한 계층형 아키텍처를 구현하며 컴퓨터의 모든 디바이스는 드라이버 스택에 의해 처리됩니다.다만, 그 스택내의 모든 드라이버는, 하드웨어에 의존하지 않는 기능을, 그 위아래의 드라이버로부터 격리할 수 있습니다.따라서 스택 내의 드라이버는 서로 직접 대화할 필요가 없습니다.WDM 에서는, Network Driver Interface Specification(NDIS; 네트워크 드라이버 인터페이스 사양)이라고 불리는, 디스플레이나 네트워크 카드등의 다양한 디바이스의 아키텍처와 디바이스 순서를 정의합니다.NDIS 아키텍처에서 계층화된 네트워크 드라이버에는 하드웨어를 관리하는 하위 수준 드라이버와 네트워크 데이터 전송을 구현하는 상위 수준 드라이버가 포함됩니다(예: Transmission Control Protocol(TCP)).[1]
WDM 에서는 3종류의 디바이스 드라이버가 정의되고 있습니다만, 특정 디바이스의 모든 드라이버 스택에 모든 타입의 디바이스 드라이버가 포함되어 있는 것은 아닙니다.WDM 디바이스 드라이버에는,[2] 다음의 3 종류가 있습니다.
버스 드라이버:메인보드상의 모든 버스에는 버스 드라이버가 1개씩 존재하며, 버스 드라이버는 해당 버스에 연결된 모든 장치를 식별하고 플러그 앤 플레이 이벤트에 응답합니다.Microsoft는 PCI, PnPISA, SCSI, USB, FireWire 등의 운영체제의 [3]일부로 버스 드라이버를 제공합니다.
기능 드라이버: 디바이스의 주요 드라이버로, 읽기 및 쓰기 조작을 처리함으로써 디바이스의 동작 인터페이스를 제공합니다.기능 드라이버는 디바이스 벤더에 의해 작성되며 하드웨어와의 상호작용을 위해 Windows [4]운영체제에 존재하는 특정 버스 드라이버에 의존합니다.
필터 드라이버:이 드라이버는 옵션이며 입력 및 출력 요청과 같은 장치의 동작을 수정할 수 있습니다.이러한 드라이버는, 하위 레벨 및 [5]상위 레벨의 필터 드라이버로서 실장할 수 있습니다.
객체 지향 드라이버 스택
함수 드라이버와 버스 드라이버는 드라이버/미니드리버 쌍으로 구현되는 경우가 많습니다.이것은 실제로는 클래스 또는 미니클래스 또는 포트 또는 미니포트 [6]쌍입니다.
버스에 접속되어 있는 디바이스의 버스 드라이버는, 클래스 드라이버로서 실장되어 하드웨어에 의존하지 않습니다.특정 유형의 디바이스의 조작을 서포트합니다.Windows operating system에는 키보드용 kbdclass.sys 드라이버 등 다수의 클래스 드라이버가 포함되어 있습니다.한편 미니클래스 드라이버는 디바이스 벤더에 의해 제공되며 특정 [7]클래스의 특정 디바이스에 대해서만 디바이스 고유의 조작을 지원합니다.
포트 드라이버는 주변기기 하드웨어 인터페이스의 일반적인 입출력(I/O) 조작을 지원합니다.포토 드라이버의 코어 기능은, operating system에 의해서 의무화되어 Windows operating system에는 다양한 포토 드라이버가 짜넣어져 있습니다.예를 들어 8042 마이크로컨트롤러용 i8042prt.sys 포트 드라이버는 PS/2 키보드를 메인보드 주변기기 버스에 연결합니다.미니포트 드라이버는 미니클래스 드라이버와 마찬가지로 하드웨어 벤더에 의해 제공되며 메인보드 [8][9]포트에 연결된 주변기기 하드웨어의 디바이스 고유의 조작만을 지원합니다.
디바이스의 I/O 요구를 처리하는 각 드라이버에는 대응하는 오브젝트가 있어 메인 메모리에 로드됩니다.디바이스 오브젝트는 연관된 디바이스 클래스에서 Windows 운영시스템에 의해 생성됩니다.디바이스 오브젝트에는 드라이버에 대한 포인터를 저장하는 DEVICE_OBJECT 유형의 구조가 포함되어 있습니다.실행 시 이러한 포인터는 운전자의 디스패치 루틴 및 멤버 기능을 찾는 데 사용됩니다.WDM 드라이버 스택에서는 필터 드라이버 디바이스 오브젝트(상부 필터)는 I/O 매니저로부터 디바이스의 I/O Request Packet(IRP; I/O 요구 패킷)을 수신합니다.상부 필터 드라이버가 요구에 응할 수 없는 경우는, 드라이버 스택의 한 단계 아래쪽에 있는 드라이버의 오브젝트를 찾습니다.IRP는 함수 IoCallDrive()를 호출하여 드라이버 스택으로 전달되며 기능 디바이스 오브젝트라고도 불리는 기능 드라이버 디바이스 오브젝트에 의해 처리됩니다.Function Driver Device 객체는 IRP를 다른 필터 장치 객체인 하부 필터에 전달할 수 있습니다.그 후 IRP가 버스 드라이버로 전달되어 물리 디바이스 오브젝트로 동작합니다.버스 드라이버 오브젝트는 드라이버 스택의 맨 아래에 있으며 Windows 운영체제 커널의 일부이며 Windows 운영체제를 다양한 프로세서, 다른 메모리 관리 유닛 아키텍처 및 다른 I/O 버스 아키텍처를 가진 다양한 컴퓨터 시스템에서 실행할 수 있는 하드웨어 추상화 레이어와 상호 작용합니다.IRP [10]실행은 스택 내의 드라이버 오브젝트 중 하나가 I/O 매니저에게 요청과 함께 결과 및 상태 [11]플래그를 반환하면 종료됩니다.
다양한 Windows 운영 체제용 장치 드라이버
WDM 프레임워크는 운영체제와 커널 내부의 드라이버 간의 통신을 단순화하기 위해 마이크로소프트에 의해 개발되었습니다.Windows OS 에서는, 드라이버는 Dynamic Link Libraries 로서 실장됩니다.DLL 또는.SYS 파일WDM 준거 드라이버는 설계, 초기화, 플러그 앤 플레이, 전원 관리 및 메모리 할당 규칙을 따라야 합니다.실제로 WDM 드라이버 프로그래머는 새로운 객체 지향 드라이버를 구축할 때 큰 코드를 재사용합니다.즉,[12] WDM 스택의 드라이버에는 사양에 기재되어 있지 않은 나머지 기능이 포함되어 있는 경우가 있습니다.Microsoft 의 품질 테스트에 합격한 드라이버는, Microsoft 가 디지털 서명하고 있습니다.Microsoft 하드웨어 호환성 테스트 및 드라이버 개발 키트에는 신뢰성과 스트레스 [13]테스트가 포함되어 있습니다.
특정 하드웨어 컴포넌트용으로 설계되지 않은 디바이스 드라이버로 인해 다른 디바이스가 동작할 수 있습니다.이는 하드웨어 디바이스 클래스의 기본 기능이 유사하기 때문입니다.예를 들어, 비디오 카드 클래스의 기능에 의해, Microsoft Basic Display Adapter 드라이버는 다양한 비디오 카드로 동작합니다.다만, 디바이스에 잘못된 드라이버를 인스톨 하면, 디바이스의 모든 기능을 사용할 수 없게 되어, 퍼포먼스가 저하해, Windows operating system이 불안정하게 되는 일이 있습니다.하드웨어 디바이스 벤더는 성능 향상, 기능 추가 또는 버그 수정을 위해 특정 Windows 운영체제용으로 업데이트된 디바이스 드라이버를 출시할 수 있습니다.디바이스가 예상대로 동작하지 않는 경우는, 벤더의 Web 사이트에서 최신의 디바이스 드라이버를 다운로드해 [14]인스톨 할 필요가 있습니다.
디바이스 드라이버는, 특정의 Windows operating system 버전용으로 설계되어 있어 이전 버전의 Windows 디바이스 드라이버가 올바르게 동작하지 않거나, 다른 버전에서는 전혀 동작하지 않는 경우가 있습니다.대부분의 디바이스 드라이버는 커널 모드로 동작하기 때문에 이전 버전의 운영체제용 드라이버를 설치하면 Windows 운영체제가 불안정해질 수 있습니다.따라서 시스템을 더 높은 버전의 윈도우즈 운영 체제로 마이그레이션하려면 모든 하드웨어 구성 요소에 대해 새 장치 드라이버가 설치되어 있어야 합니다.Windows 10 용으로 최신의 디바이스 드라이버를 검색해 인스톨 하면,[15] 이행 프로세스가 복잡해집니다.
일반적인 디바이스 드라이버 호환성 문제에는 32비트 Windows 운영체제에는 32비트 디바이스 드라이버가 필요하고 64비트 Windows 운영체제에는 64비트 디바이스 드라이버가 필요합니다.64비트 장치 드라이버는 커널 모드에서 실행되며 컴퓨터 하드웨어에 제한 없이 액세스할 수 있으므로 마이크로소프트가 서명해야 합니다.Windows 10 이전의 operating system에서는, 벤더가 호환성 테스트를 실시한 것을 전제로, 벤더가 64비트 드라이버에 직접 서명할 수 있었습니다.다만, Windows 10 의 64 비트 드라이버는, Microsoft 의 서명이 필요합니다.따라서 디바이스 벤더는 테스트와 승인을 위해 드라이버를 Microsoft에 제출해야 합니다.드라이버 인스톨 패키지에는 .inf 디렉토리에 있는 모든 파일이 포함되어 있어 패키지의 모든 파일을 인스톨 할 필요가 있습니다.인스톨 하지 않으면, 디바이스 드라이버의 인스톨에 실패할 가능성이 있습니다.Windows 10 이전의 operating system 버전에서는, 드라이버의 인스톨에 필요한 모든 파일이 패키지에 포함되어 있는 것은 아닙니다.이것은, 이 요건이 일관되게 적용되는 것이 아니기 때문입니다.디바이스 드라이버의 인스톨러에 따라서는, 유저 인터페이스의 GUI 가 탑재되어 있어, 유저 설정의 입력이 필요한 경우가 많습니다.유저 인터페이스가 없다고 해서, 디바이스 드라이버의 인스톨이 성공하지 않는 것은 아닙니다.또, Windows 10 디바이스 드라이버에는 유저 인터페이스를 포함할 수 없습니다.NDIS(Network Driver Interface Specification) 10.x 는 Windows 10 운영 체제에서 네트워크 디바이스에 사용됩니다.Windows XP 용 네트워크 디바이스 드라이버는 NDIS 5.x 를 사용하고, 이후의 Windows operating system에서 동작하는 경우가 있습니다만, 퍼포먼스를 위해서 네트워크 디바이스 드라이버는 NDIS 6.0 이후를 [16]실장할 필요가 있습니다.마찬가지로 WDM은 Windows Vista 이상용 드라이버 모델입니다.이것은 그래픽 드라이버에 사용되는 XPDM을 대체하는 것입니다.
디바이스 매니저
디바이스 매니저는 Microsoft Windows OS의 제어판 애플릿입니다.사용자는 컴퓨터에 연결된 하드웨어를 보고 제어할 수 있습니다.사용자는 하드웨어 디바이스 속성을 표시 및 변경할 수 있으며 디바이스 [17]드라이버를 관리하기 위한 주요 도구이기도 합니다.
비판
Windows 드라이버 모델은 이전에 사용되었던 VxD 및 Windows NT 드라이버 모델에 비해 크게 개선되었지만, 드라이버 소프트웨어 [18]개발자들에 의해 다음과 같은 이유로 비판을 받아 왔습니다.
- 전원 관리 이벤트 및 플러그 앤 플레이와의 상호 작용은 어렵습니다.이로 인해, 드라이버 코드의 버그로 인해, Windows 머신이 sleep 모드를 올바르게 개시 또는 종료할 수 없는 상황이 발생할 가능성이 있습니다.
- I/O 취소는 [19]수정이 어렵습니다.
- 모든 운전자에 대해 복잡한 보일러 플레이트 지원 코드가 필요합니다.
- 순수 사용자 모드 드라이버는 쓸 수 없습니다.
또한 마이크로소프트가 제공한 문서 및 샘플의 품질에 대한 많은 우려도 있었습니다.
이러한 문제로 인해 Microsoft는 WDM을 기반으로 KMDF(Kernel-Mode Driver Framework)와 UMDF(User-Mode Driver Framework)를 포함하는 Windows Driver Frameworks(WDF; 이전 Windows Driver Foundation)라고 하는 새로운 프레임워크 세트를 출시했습니다.Windows Vista는 순수 WDM과 새로운 WDF를 모두 지원합니다.KMDF는 Windows XP 및 Windows 2000에서도 다운로드할 수 있으며 UMDF는 Windows XP 이상에서도 사용할 수 있습니다.
「 」를 참조해 주세요.
- Windows 드라이버 프레임워크(WDF)
- 커널 모드 드라이버 프레임워크(KMDF)
- 사용자 모드 드라이버 프레임워크(UMDF)
- Windows 디스플레이 드라이버 모델(WDM)
레퍼런스
- ^ Marco Vieira; Joao Carlos Cunha, eds. (2013). Dependable Computing: 14th European Workshop, EWDC 2013, Coimbra, Portugal, May 15-16, 2013, Proceedings. Springer. p. 64. ISBN 9783642387890.
- ^ Marco Vieira; Joao Carlos Cunha, eds. (2013). Dependable Computing: 14th European Workshop, EWDC 2013, Coimbra, Portugal, May 15-16, 2013, Proceedings. Springer. p. 64. ISBN 9783642387890.
- ^ Marco Vieira; Joao Carlos Cunha, eds. (2013). Dependable Computing: 14th European Workshop, EWDC 2013, Coimbra, Portugal, May 15-16, 2013, Proceedings. Springer. p. 64. ISBN 9783642387890.
- ^ Marco Vieira; Joao Carlos Cunha, eds. (2013). Dependable Computing: 14th European Workshop, EWDC 2013, Coimbra, Portugal, May 15-16, 2013, Proceedings. Springer. p. 64. ISBN 9783642387890.
- ^ Marco Vieira; Joao Carlos Cunha, eds. (2013). Dependable Computing: 14th European Workshop, EWDC 2013, Coimbra, Portugal, May 15-16, 2013, Proceedings. Springer. p. 64. ISBN 9783642387890.
- ^ Bill Blunden (2009). The Rootkit Arsenal: Escape and Evasion. Jones & Bartlett Publishers. p. 460. ISBN 9781449661229.
- ^ Bill Blunden (2009). The Rootkit Arsenal: Escape and Evasion. Jones & Bartlett Publishers. p. 460. ISBN 9781449661229.
- ^ Bill Blunden (2009). The Rootkit Arsenal: Escape and Evasion. Jones & Bartlett Publishers. p. 460. ISBN 9781449661229.
- ^ "Introduction to the Windows Driver Foundation". Microsoft Developer Network. 2006-10-13. Retrieved 2010-12-06.
The device class-specific driver models are typically structured as a port driver written by Microsoft paired with a miniport driver written by an independent hardware vendor. The port driver does much of the work required for the device class, and the miniport driver supports device-specific characteristics.
- ^ Bill Blunden (2009). The Rootkit Arsenal: Escape and Evasion. Jones & Bartlett Publishers. pp. 460–461. ISBN 9781449661229.
- ^ Dave Penkler; Manfred Reitenspiess; Francis Tam, eds. (2006). Service Availability: Third International Service Availability Symposium, ISAS 2006, Helsinki, Finland, May 15-16, 2006, Revised Selected Papers. Springer Science & Business Media. p. 124. ISBN 9783540687245.
- ^ Dave Penkler; Manfred Reitenspiess; Francis Tam, eds. (2006). Service Availability: Third International Service Availability Symposium, ISAS 2006, Helsinki, Finland, May 15-16, 2006, Revised Selected Papers. Springer Science & Business Media. p. 124. ISBN 9783540687245.
- ^ Dave Penkler; Manfred Reitenspiess; Francis Tam, eds. (2006). Service Availability: Third International Service Availability Symposium, ISAS 2006, Helsinki, Finland, May 15-16, 2006, Revised Selected Papers. Springer Science & Business Media. p. 132. ISBN 9783540687245.
- ^ Byron Wright & Leon Plesniarski (2016). Microsoft Specialist Guide to Microsoft Windows 10 (Exam 70-697, Configuring Windows Devices). Cengage Learning. p. 96. ISBN 9781285868578.
{{cite book}}
: CS1 maint: 작성자 파라미터 사용(링크) - ^ Byron Wright & Leon Plesniarski (2016). Microsoft Specialist Guide to Microsoft Windows 10 (Exam 70-697, Configuring Windows Devices). Cengage Learning. p. 96. ISBN 9781285868578.
{{cite book}}
: CS1 maint: 작성자 파라미터 사용(링크) - ^ Byron Wright & Leon Plesniarski (2016). Microsoft Specialist Guide to Microsoft Windows 10 (Exam 70-697, Configuring Windows Devices). Cengage Learning. p. 96. ISBN 9781285868578.
{{cite book}}
: CS1 maint: 작성자 파라미터 사용(링크) - ^ Byron Wright & Leon Plesniarski (2016). Microsoft Specialist Guide to Microsoft Windows 10 (Exam 70-697, Configuring Windows Devices). Cengage Learning. p. 96. ISBN 9781285868578.
{{cite book}}
: CS1 maint: 작성자 파라미터 사용(링크) - ^ Oney, Walter (May 6, 2003). "Introducing Windows Driver Framework". Windows Driver Developer's Digest. Vol. 1, no. 3. Archived from the original on 2016-01-25.
- ^ "I/O Completion/Cancellation Guidelines". MSDN. Microsoft. May 5, 2003. Retrieved 2018-02-08.
- Finnel, Lynn(2000).MCSE Exam 70-215, Microsoft Windows 2000 Server.Microsoft Press.ISBN 1-57231-903-8.
- Oney, Walter (2003)Windows 드라이버 모델의 프로그래밍, Microsoft Press, ISBN 0-7356-1803-8.
외부 링크
- WDM Input Output Concepts - 이 문서에서는 Windows 드라이버 모델에 정의된 I/O 개념의 개요를 설명합니다.
- Windows 드라이버 API의 기본 - 이 문서에서는 WDM, ASIO, MME, DirectX 등의 사운드 카드 드라이버의 기본에 대해 설명합니다.
- 채널 9 비디오 - 주로 플러그 앤 플레이에 대해 마이크로소프트의 디바이스 관리 및 설치 팀과 인터뷰합니다.
- Wayback Machine에서의 Windows 커널 프로그래밍에 관한 강의 노트(2016년 3월 3일 아카이브) - Windows 드라이버의 기본 작성, 커널 모드 프로그래밍, 메모리 관리를 상술한 무료 강의 노트 단편