驱动程序是操作系统和硬件通讯的桥梁,同时,驱动程序可以实现很多特殊功能,比如,虚拟光驱(虚拟设备),内核级hook,文件系统透明加密(过滤驱动),修改Windows内核等等
并非所有驱动程序都必须由设备的设计方编写。如果设备根据已发布的硬件标准来设计。这时驱动程序可以由 Microsoft 编写,设备设计者无须提供驱动程序。
并非所有的驱动程序都与硬件关联。某些驱动程序与任何硬件设备根本不关联。 例如,如果需要访问内核,或者实现虚拟设备,过滤设备等等,需要通过编写驱动程序实现。提供一个用户模式下运行且提供用户界面的应用程序,还需要在内核模式下运行且可以访问核心操作系统数据的驱动程序。这个驱动程序可以称为“软件驱动程序”。软件驱动程序与硬件设备不关联。还有个例子是一些屏幕录像软件通过驱动程序直接读取屏幕,而不是从应用层调用API截图,实现硬件加速。
在正式开始介绍驱动开发之前,我们需要先来了解一下基本的概念。
1。驱动程序的运行级别
以内核模式驱动程序为例,用户模式驱动是后来才有的。
其实intel 80x86提供了四个运行级别,R0,R1,R2和R3,现代主流操作系统,Windows自然也不例外,只用了R0和R3两个运行级别,分别为“内核模式”和“用户模式”。应用程序运行在用户模式,驱动程序运行在内核模式。
这也就是说,驱动程序在运行的那一刻,就是天道!驱动程序中的指令,就是天道法则!(打个比方),所以说驱动程序运行时