首页 > wince 6.0 设备管理器架构(Device Manager Architecture)

wince 6.0 设备管理器架构(Device Manager Architecture)

设备管理器架构

----Windows Embedded CE 6.0 R3

 

原文:http://msdn.microsoft.com/en-us/library/ee484004(v=WinEmbedded.60).aspx

 

设备管理器运行在Windows Embedded CE操作系统下,跟踪加载的驱动及其接口。它从内核中启动,并持续运行。当设备接口变的可用或不可用时,设备管理器能够通知用户。用户,或者系统本身可以让设备接口变的可用或不可用。对于那些暴露了流接口(stream interface)的设备接口,设备管理器会通知内核该设备接口支持CreateFile之类的文件操作来访问设备。设备管理器向设备驱动发送电源通知回调,并提供电源管理服务。更多信息,请参考Power Management。

 

设备管理器控制注册表中的Active项。只有设备管理器才应该对Active项进行读/写访问。通过设备驱动的初始化函数中的一个参数,可以间接访问Active项。

 

设备驱动搜索HKEY_LOCAL_MACHINE/Drivers/RootKey注册表项,以确定开始设备加载过程的项。RootKey的默认值为Drivers,但是其值通常为Drivers/BuiltIn。设备管理器调用函数ActivateDeviceEx,以加载在RootKey的值指定的项中找到的Dll子项表示的驱动。Dll子项的默认值为BusEnum.dll,又被称为总线枚举器。加载BusEnum.dll将会导致所有的设备驱动被加载。通过ActivateDeviceEx加载的设备,可以从其Active注册表项中读取其activation handle。

 

设备管理器将总线名称与设备进行关联。未命名设备也可以拥有一个总线名称,因为就算应用程序不能访问该驱动,其他驱动或者系统实体,例如电源管理器,也可以访问该驱动。总线名称可以拥有一个与规则的设备名称不同的ACL。

 

驱动通过调用DMAdvertiseInterface能够以编程的方式发布接口。函数DMAdvertiseInterface使驱动能够添加更多的可搜索GUID到它们的关联列表。DMAdvertiseInterface由Devmgr.dll提供。Devmgr.dl实现了大部分的设备管理功能。只有设备驱动能调用DMAdvertiseInterface,因为只有设备管理器能加载Devmgr.dl。如果一个驱动在卸载的时候没有发布其接口不可用,设备管理器会自动清除接口发布通知。

 

设备管理器组件

 

设备管理器由nk.exe, device.dll和devmgr.dll三个组件构成。Nk.exe加载device.dll,device.dll是一个加载devmgr.dll的薄壳。devmgr.dll实现了设备管理器的核心功能。

 

因为设备管理器由两个独立的模块组成。设备驱动可以直接连接设备管理器,并调用其功能,如DMAdvertiseInterface,而不用产生系统调用的开销。

 

ComponentDescription

devcore

提供设备管理器的核心功能。

iorm

提供I/O资源管理功能。 Iorm 是必需的组件,并且不能被删除。

pmif

nopmif

Pmif提供了电源管理DLL入口点的接口。

Nopmif电源管理入口点的存根版本。

 

 

更多相关:

  • 主要是在bluestore的实例上执行低级管理操作的使用程序,是ceph bluestore的管理工具 命令 help显示帮助信息fsck [--deep]对bluestore元数据进行一致性检查。如果指定了–deep,还要读取所有对象数据并验证校验和repair运行一致性检查 并修复我们可以发生的任何错误bluefs-ex...

  • iOS获取设备唯一标识的各种方法?IDFA、IDFV、UDID分别是什么含义?iOS获取设备ID总结IDFA解释 关于UUID的理解 : 英文名称是:Universally Unique Identifier,翻译过来就是通用唯一标识符。 UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提...

  • Running Your Application 原文演示了怎样在真机和模拟器上运行你的App。 原文链接:http://developer.android.com/training/basics/firstapp/running-app.html 译文链接:http://android.toolib.net/training/bas...

  • 转:http://blog.csdn.net/zhouzhuan2008/article/details/11053877   目录 MTD总概述MTD数据结构 MTD相关层实现 MTD,Memory Technology Device即内存技术设备 字符设备和块设备的区别在于前者只能被顺序读写,后者可以随机访问;同时,两者读写数...

  • 经常我们在测试接口的返回报文的时候,可能是存在于不同网页的跳转过程中,但是浏览器默认的设置是只要一跳转页面,上一个页面的请求记录就没了,是不是很烦人,有时候我们还有以迅雷不及掩耳盗铃之势把浏览器的接口监听按钮暂停掉,或者截屏,非常的难受,于是这样设置一下,切换页面的跳转情况下,接口记录依旧会保存了  ...

  • 《团队合作大坑合集》_←你挚爱的强哥→的博客-CSDN博客1、百分号无限循环小数2、小数四舍五入计算错误3、写死了年份导致跨年无法选择最新年份4、悄悄修改内外网访问限制导致外网接口不能访问5、定位索引城市的地理坐标,定位到了同名的其他城市6、更新包的时候没传完就关电脑7、前后端绑定字段不统一,字段类型不统一...https://s-z...

  • 文章目录1. 基本的多态实现2. 空接口与断言3. Go接口的最佳实践...

  • lambada 表达式实质上是一个匿名方法,但该方法并非独立执行,而是用于实现由函数式接口定义的唯一抽象方法使用 lambda 表达式时,会创建实现了函数式接口的一个匿名类实例可以将 lambda 表达式视为一个对象,可以将其作为参数传递1. 函数式接口 函数式接口是仅含一个抽象方法的接口,但可以指定 Object 定义的任何公有...

  • 接口是双方约定的一种合作协议。接口实现者不需要关心接口会被怎样使用,调用者也不需要关心接口的实现细节。 接口是一种类型,也是一种抽象结构,不会暴露所含数据的格式、类型及结构。   声明: 接口类型是由一组方法签名定义的集合 type 接口类型名 interface{ 方法名1( 参数列表1 ) 返回值列表1 方法名2( 参数列表2 )...