大家好,我是小典,我来为大家解答以上问题。设备管理体系,设备管理很多人还不知道,现在让我们一起来看看吧!
1、设备管理器是在 Windows CE 操作系统下运行的进程,它跟踪已加载的驱动程序和它们的接口。它连续不断地运行并且从内核中启动。设备管理器可以在设备接口变得可用和不可用时通知用户。用户或系统本身可以使设备接口变得可用或不可用。另外,设备管理器通知内核设备接口支持文件操作(例如,CreateFile)访问公开流接口的设备。设备管理器向设备驱动程序发送电源通知回调并提供电源管理服务。有关详细信息,请参阅 Power Management。
2、设备管理器控制注册表中的 Active 项。只有设备管理器应当访问 Active 项以获取读取或写入访问权限。您可以通过设备驱动程序的初始化函数的参数间接访问 Active 项。
3、设备管理器搜索 HKEY_LOCAL_MACHINEDriversRootKey 注册表项,以确定用于开始驱动程序加载过程的项。RootKey 的默认值是 Drivers,但是它通常等于 DriversBuiltIn。设备管理器调用 ActivateDeviceEx 以加载由 Dll 子项的值(它位于由 RootKey 值指定的项中)指定的驱动程序。Dll 子项的值默认情况下为 BusEnum.dll(也称为总线枚举器)。加载 BusEnum.dll 会使所有设备驱动程序加载。由 ActivateDeviceEx 加载的设备可以从它的 Active 注册表项中读取它的激活句柄。
4、当设备管理器加载时,它还加载 I/O 资源管理器,以便从注册表中读取可用资源的列表。有关 I/O 资源管理器的详细信息,请参阅 I/O Resource Manager。
5、设备管理器将总线名称与驱动程序相关联。未命名的设备也可以具有总线名称,因为即使应用程序可能无法访问驱动程序,驱动程序也可能被其他驱动程序或系统实体(例如,电源管理器)访问。总线名称可以具有与正规设备名称不同的 ACL。
6、设备管理器跟踪由驱动程序公布的接口,并且支持基于全局唯一标识符 (GUID) 搜索驱动程序。IClass 接口可以将接口 GUID 与驱动程序的旧式名称、$device 名称或 $bus 名称(例如,“COM1 :”、“$devicecom1”或“$buspci_0_3_0”)相关联。
7、驱动程序可以通过调用 DMAdvertiseInterface 以编程方式公布接口。DMAdvertiseInterface 使驱动程序能够将更多可搜索的 GUID 添加到它们的关联列表中。DMAdvertiseInterface 由 Devmgr.dll 公开,后者还实现了大多数设备管理器功能。因为只有设备管理器可以加载 Devmgr.dll,所以只有设备驱动程序可以调用 DMAdvertiseInterface。如果设备驱动程序在卸载时没有公布它的接口的不可用性,则设备管理器会自动清除接口公布通知。
8、设备管理器组件
9、设备管理器由 Device.exe 和 Devmgr.dll 组成。Device.exe 包含 Devmgr.dll,后者实现了核心设备管理器功能。因为设备管理器由两个单独的模块组成,所以设备驱动程序可以直接与设备管理器链接并调用特定的函数(例如,DMAdvertiseInterface),而不会引起系统调用的开销。
10、下表显示了设备管理器的组件。
11、组件 说明
12、devcore
13、 提供核心设备管理器功能。
14、iorm
15、 提供 I/O 资源管理器功能。Iorm 是必需的组件且无法移除。
16、nopmif
17、pmif
18、 Pmif 提供了电源管理器 DLL 入口点的接口。
19、Nopmif 提供了电源管理器入口点的存根版本。
20、另请参阅
21、Device File Names | Device Manager Reference | Device Manager Registry Keys | I/O Resource Manager | Resolving Race Conditions in Device Drivers | Stream Interface Drivers
本文到此讲解完毕了,希望对大家有帮助。