首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

设备电源管理的有关问题

2012-04-21 
设备电源管理的问题最近在实现一个流接口驱动的设备电源管理的接口:在相应的注册表里添加IClass[HKEY_LO

设备电源管理的问题
最近在实现一个流接口驱动的设备电源管理的接口:
在相应的注册表里添加"IClass"
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Test]
"Index"=dword:1
"Prefix"="TVT"
"Dll"="Test.dll"
"Order"=dword:10
"IClass"="{A32942B7-920C-486b-B0E6-92A702A99B35}"

然后在“TVT_IOControl()”里面实现:IOCTL_POWER_CAPABILITIES,IOCTL_POWER_QUERY,IOCTL_POWER_SET,IOCTL_POWER_GET接口;完成后测试各接口工作正常;

但是发现还有些问题:跟了一下系统启动过程中的debug message,发现“TVT_Open()”在“TVT_Init()”之后被莫名其妙的执行了两次,还“TVT_Close()”了一次;系统启动过程中并没有运行AP进行“CreateFile(L"TVT1:",.....)”之类的动作,那么“TVT_Open()”是如何(在系统启动过程中)被调用的呢? 


[解决办法]
系统启动之后,NK加载Device.dll(设备管理程序)
设备管理器调用ActiveDeviceEx加载BuiltIn下的驱动。
应该只会执行驱动的XXX_Init。
XXX_Open要应用层调用CreateFile才会得到执行吧。
难道DM也会去调用XXX_Open和XXX_Close。
其他地方的程序,都没有调用TVT?
[解决办法]
PM 通过 IOCTL_POWER 这些IOCTL操作 查询你的驱动,当然要Open你的驱动了,所以会有几次 XXX_Open的调用。

热点排行