概述
Windows CE 5.0:驱动程序---设备管理器
设备管理器是在 Windows CE 操作系统下运行的进程,它跟踪已加载的驱动程序和它们的接口。它连续不断地运行并且从内核中启动。设备管理器可以在设备接口变得可用和不可用时通知用户。用户或系统本身可以使设备接口变得可用或不可用。另外,设备管理器通知内核设备接口支持文件操作(例如,CreateFile)访问公开流接口的设备。设备管理器向设备驱动程序发送电源通知回调并提供电源管理服务。有关详细信息,请参阅 Power Management。
设备管理器控制注册表中的 Active 项。只有设备管理器应当访问 Active 项以获取读取或写入访问权限。您可以通过设备驱动程序的初始化函数的参数间接访问 Active 项。
设备管理器搜索 HKEY_LOCAL_MACHINE/Drivers/RootKey 注册表项,以确定用于开始驱动程序加载过程的项。RootKey 的默认值是 Drivers,但是它通常等于 Drivers/BuiltIn。设备管理器调用 ActivateDeviceEx 以加载由 Dll 子项的值(它位于由 RootKey 值指定的项中)指定的驱动程序。Dll 子项的值默认情况下为 BusEnum.dll(也称为总线枚举器)。加载 BusEnum.dll 会使所有设备驱动程序加载。由 ActivateDeviceEx 加载的设备可以从它的 Active 注册表项中读取它的激活句柄。
当设备管理器加载时,它还加载 I/O 资源管理器,以便从注册表中读取可用资源的列表。有关 I/O 资源管理器的详细信息,请参阅 I/O Resource Manager。
设备管理器将总线名称与驱动程序相关联。未命名的设备也可以具有总线名称,因为即使应用程序可能无法访问驱动程序,驱动程序也可能被其他驱动程序或系统实体(例如,电源管理器)访问。总线名称可以具有与正规设备名称不同的 ACL。
设备管理器跟踪由驱动程序公布的接口,并且支持基于全局唯一标识符 (GUID) 搜索驱动程序。IClass 接口可以将接口 GUID 与驱动程序的旧式名称、$device 名称或 $bus 名称(例如,“COM1 :”、“$device/com1”或“$bus/pci_0_3_0”)相关联。
驱动程序可以通过调用 DMAdvertiseInterface 以编程方式公布接口。DMAdvertiseInterface 使驱动程序能够将更多可搜索的 GUID 添加到它们的关联列表中。DMAdvertiseInterface 由 Devmgr.dll 公开,后者还实现了大多数设备管理器功能。因为只有设备管理器可以加载 Devmgr.dll,所以只有设备驱动程序可以调用 DMAdvertiseInterface。如果设备驱动程序在卸载时没有公布它的接口的不可用性,则设备管理器会自动清除接口公布通知。
设备管理器组件
设备管理器由 Device.exe 和 Devmgr.dll 组成。Device.exe 包含 Devmgr.dll,后者实现了核心设备管理器功能。因为设备管理器由两个单独的模块组成,所以设备驱动程序可以直接与设备管理器链接并调用特定的函数(例如,DMAdvertiseInterface),而不会引起系统调用的开销。
下表显示了设备管理器的组件。
组件 | 说明 |
devcore | 提供核心设备管理器功能。 |
iorm | 提供 I/O 资源管理器功能。Iorm 是必需的组件且无法移除。 nopmif |
pmif | Pmif 提供了电源管理器 DLL 入口点的接口。 Nopmif 提供了电源管理器入口点的存根版本。 |
另请参阅
Device File Names | Device Manager Reference | Device Manager Registry Keys | I/O Resource Manager | Resolving Race Conditions in Device Drivers | Stream Interface Drivers
最后
以上就是眼睛大钻石为你收集整理的Windows CE 5.0:驱动程序---设备管理器的全部内容,希望文章能够帮你解决Windows CE 5.0:驱动程序---设备管理器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复