设备管理器

设备管理器是在Windows CE下运行的一个进程,来跟踪加载的驱动和它们的接口。它由内核加载并持续运行。设备管理器可以在设备接口变得可用和不可用时通知用户。用户或者系统自身可以使得设备接口可用或不可用。另外,设备管理器通知内核设备接口支持文件操作,例如CreateFile,来操作那些导出流接口的设备。设备管理器向设备驱动发送电源通知回调并且提供电源管理服务。

设备管理器控制注册表的Active键。仅设备管理器可以对Active键进行读写操作。你可以通过设备驱动初始化函数的一个参数来对Active键进行间接操作。

设备管理器搜索HKEY_LOCAL_MACHINE/Drivers/RootKey来决定开始加载驱动的注册表键。RootKey的默认值是Drivers但通常等于Drivers/BuiltIn。设备管理器调用ActivateDeviceEx来加载由RootKey键的Dll子键值决定的驱动。Dll子键的默认值是BusEnum.dll,也称为总线枚举器。加载BusEnum.dll会引起所有设备驱动的加载。通过ActivateDeviceEx加载的设备可以从Active注册表键中获取它的激活句柄。

当设备管理器加载时,它也可以加载I/O资源管理器来从注册表中读取一个可用资源列表。

设备管理器跟踪驱动的接口并且支持基于GUIDglobally unique identifier)的驱动查找。IClass接口可以把接口GUID与驱动名字,设备名字或总线名字联系起来。例如,COM1:, $device/com1, or $bus/pci_0_3_0

驱动可以调用DMAdvertiseInterface广播接口(advertise interfaces)。DMAdvertiseInterface使得驱动在它们的列表中增加GUIDsDMAdvertiseInterface是被Devmgr.dll导出的,它同时也实现了设备管理器的大多数函数。只有设备驱动可以调用DMAdvertiseInterface因为只有设备管理器可以加载Devmgr.dll。如果当驱动卸载时,设备驱动不广播那些不可用的接口,设备管理器将自动清除接口广播信息。

设备管理器组成

设备管理器由Device.exe Devmgr.dll组成。Device.exe包含Devmgr.dllDevmgr.dll实现设备管理器的核心功能。因为设备管理器由两个独立的模块组成,设备驱动可以直接与设备管理器链接并且调用特定函数,例如DMAdvertiseInterface,而不用导致上层的系统调用。

下表为设备管理器的组成部分。

组成部分

描述

devcore

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

iorm

提供I/O资源管理器的功能。Iorm 是必须的部分,不能被移除。

pmif

nopmif

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

Nopmif 提供电源管理器的存根版本(stubbed version)的入口点。

你可能感兴趣的:(windows,dll)