5845|17

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于背光不能自动关闭的问题 [复制链接]

     我在控制面板中设置了 1分钟自动关闭背光, 但是始终没有关闭背光。背光驱动支持电源管理,支持
IOCTL_POWER_CAPABILITIES,IOCTL_POWER_QUERY,IOCTL_POWER_SET,IOCTL_POWER_GET。系统启动时 BKL_IOControl 函数会收到一个 IOCTL 请求,然后就再也收不到任何 IOCTL 请求了。所以导致背光驱动收不到系统发出的关闭背光的通知。
     背光驱动的注册表配置如下:     
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Backlight]
    "Prefix"="BKL"
    "Dll"="backlight.dll"   
    "Index"=dword:1
    "Order"=dword:25
    "Level"=dword:A   
    "PowerMask"=dword:1F             ;support d0, d1, d2, d3, d4
    "IClass"=multi_sz:"{A32942B7-920C-486b-B0E6-92A702A99B35}"
    系统超时配置的注册表配置如下:
[HKEY_CURRENT_USER\ControlPanel\Backlight]
    "BatteryTimeout"=dword:3c
    "BacklightOnTap"=dword:1
    "ACTimeout"=dword:258
    "ACBacklightOnTap"=dword:1

BKL_IOControl 函数入口处我加了一句调试信息,除了重启时打印了一次外,然后就再没有打印了。

最新回复

解决了吗?我现在遇见同样情况。  详情 回复 发表于 2010-3-24 18:27
点赞 关注

回复
举报

81

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
那个代码多看看,通过事件来设置的.看那些地方等了那些事件状态改变.
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
代码里面没有以前用的那种全局事件了,都是通过 IOCTL 走 PM 管理的接口。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 xajhuang 的回复:
代码里面没有以前用的那种全局事件了,都是通过 IOCTL 走 PM 管理的接口。


我没有采用这个,我直接采用线程等待不到事件就关闭背光了。嘿嘿
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

5
 
关注
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

6
 
MARK,即将要做了
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

7
 
我也要做了,关注一下
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
如果用户手动调用SETDEVICEPOWER没有还原的话,PM不会对设备进行电源管理
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(中级)

9
 
如果如lz所说的,软件上查不出什么问题了。可以建议查下背光电路上是否有实际的硬件动作。
比如说你想过一段时间背光关闭相关的电路至少会有些动作。可以检查下。

个人建议仅供参考

Mercury
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

10
 
以前我是直接通过上层的ap通过kerneliocontrol调用oal里的代码来实现对背光等级的控制,所以对你的情况不是很了解。
我猜测是:
>> 统启动时 BKL_IOControl 函数会收到一个 IOCTL 请求
这里作为一只流驱动,当然要去查询驱动所支持的设备电源状态
>> 然后就再也收不到任何 IOCTL 请求了
是不是需要在背光驱动和GWES的某些东西联系起来,才能够实现控制面板中的配置的 1分钟自动关闭背光
否则的话,你的背光驱动只能够接收一般的流驱动所能够接收的状态转换,因为你没有sleep等系统状态的转换,所以也就没有你背光驱动的设备电源状态的转换
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

11
 
估计是你查询IOCTL_POWER_CAPABILITIES 没有做好,也就是系统不知你的设备支持的电源模式,
第一次调用了,是因为查IOCTL_POWER_CAPABILITIES,启动时都会有一次。建议把BKL_IOControl的命令都打印出来,好找原因,还有一个问题是,你的电源GUID是哪类设备的?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 3 楼 gooogleman 的回复:
引用 2 楼 xajhuang 的回复:
代码里面没有以前用的那种全局事件了,都是通过 IOCTL 走 PM 管理的接口。


我没有采用这个,我直接采用线程等待不到事件就关闭背光了。嘿嘿

差不多是这样的,每次useractive事件后点亮背光,设置等待useractive事件N秒,超时后关闭背光。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

13
 
自己写个应用程序调用BKL_IOControl试试
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 7 楼 suwyhoho 的回复:
如果用户手动调用SETDEVICEPOWER没有还原的话,PM不会对设备进行电源管理


这个原因估计大点,我今天也碰到了.
有个地方调用 SetDevicePower 后,没还原的话,就再不会调用 BKL_IOControl 进行电源管理了
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

15
 
默认的背光驱动 好像不支持 控制面板中设置了 1分钟自动关闭背光 的设置。
你需要在背光驱动的线程添加一个事件,该事件超时时间是 控制面板的设置时间, 如果超时,则调用背光关闭函数,
如果有 点击和键盘事件,则打开背光。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

16
 
关注中!!!
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

17
 
嘿嘿,还没有研究到
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

18
 
解决了吗?我现在遇见同样情况。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表