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

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

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

 

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

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

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

 

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

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值