关闭

Windows CE 5.0:驱动程序---设备管理器

标签: windowsmanagerdllreferenceinterfacestream
2139人阅读 评论(0) 收藏 举报
分类:

Windows CE 5.0:驱动程序---设备管理器

 

发布日期: 11/1/2004 | 更新日期: 11/1/2004

设备管理器是在 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

 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:39414次
    • 积分:574
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:15篇
    • 译文:10篇
    • 评论:2条