[驱动程序WDM] 从应用程序到驱动程序

打开Windows的设备管理器,可以看到计算机里面安装的所有设备。这些设备有的是真实设备,例如网卡。有些是逻辑设备,例如磁盘。有些则是虚拟设备,例如虚拟光驱。面对千差万别的实现不同功能的设备,windows设计了一套巧妙的统一接口来操作这些设备,windows把对所有设备的操作都抽象成例如打开、读取、写入、关闭等的动作,就像操作文件一样。这样就可以用操作文件的方法操作所有的设备。

上层的接口统一了,又如何区分不同的设备呢?

 [驱动程序WDM] 从应用程序到驱动程序_第1张图片

windows操作系统分成用户模式和内核模式。WIN32 API的调用运行在用户模式,因此一般的应用程序运行在用户模式。系统的内核代码,例如IO管理器运行在内核模式。

当用户模式调用WIN32 API操作设备时,WIN32 API产生一个软中断,中断处理中调用用户模式操作相对应的内核操作,内核操作根据设备名调用相应的驱动程序。真正对设备的操作是从驱动程序开始的,驱动程序通过硬件抽象层提供的相关接口操作实际请求的设备。因此,驱动程序是被动执行的,不是主动执行的。

这样就解决了统一接口如何操作形态不同的设备。

 

内核模式和用户模式的区分是为了系统的安全,用户模式和内核模式之间不能简单的通过函数调用实现,采用软中断这种手段来实现。

驱动程序是由IO管理器等内核管理器调用执行的。

 

 

你可能感兴趣的:([驱动程序WDM] 从应用程序到驱动程序)