windows 驱动程序学习笔记

文档:https://msdn.microsoft.com/zh-cn/library/windows/hardware/ff554690(v=vs.85).aspx

 

1.用户模式和内核模式:

https://msdn.microsoft.com/zh-cn/library/windows/hardware/ff554836(v=vs.85).aspx

根据处理器上运行的代码的类型,处理器在两个模式之间切换。应用程序在用户模式下运行,核心操作系统组件在内核模式下运行。多个驱动程序在内核模式下运行时,某些驱动程序可能在用户模式下运行。

用户模式的进程有专有空间,还会受到限制。在用户模式下运行的处理器无法访问为该操作系统保留的虚拟地址。

内核模式的驱动程序共享单个虚拟地址空间。这表示内核模式驱动程序未从其他驱动程序和操作系统自身独立开来。如果内核模式驱动程序意外写入错误的虚拟地址,则属于操作系统或其他驱动程序的数据可能会受到损坏。如果内核模式驱动程序损坏,则整个操作系统会损坏。

 

2.编写软件驱动程序的目的

软件驱动程序始终在内核模式下运行。编写软件驱动程序的主要原因是获取对仅在内核模式下可用的受保护数据的访问权限。但是设备驱动程序不会始终需要访问内核模式数据和资源。因此某些设备驱动程序在用户模式下运行。

 

3.软件驱动程序

我们的扩大定义相当准确,但仍不完整,原因是某些驱动程序与任何硬件设备根本不关联。 例如,假设你需要编写可以访问核心操作系统数据结构的工具,这些结构仅可以由内核模式下运行的代码进行访问。可以通过将工具拆分成两个组件来执行该操作。第一个组件在用户模式下运行且提供用户界面。第二个组件在内核模式下运行且可以访问核心操作系统数据。在用户模式下运行的组件称为应用程序,在内核模式下运行的组件称为“软件驱动程序”。软件驱动程序与硬件设备不关联。

 

4.软件驱动程序模型

 KMDF 和内核模式 Windows NT 驱动程序模型

ddk7.1:

 http://blog.csdn.net/blog_index/article/details/8951741

posted @ 2017-07-18 17:22  shinymood  阅读(228)  评论(0编辑  收藏  举报