dw Timeout = g_BLInf o. m_dw ACTim eout * 1000;
}
else {
dw Timeout = g_BLInf o. m_dw Bat t eryT imeout * 1000;
}
}
3.1.3 Pow erM anag er/ ActivityTimer / UserActivity
等待用户输入事件,如果用户有按键动作,则无论电源插上与否背光驱动都打开,否则,等待超时事件的发生, 将背光驱动关闭。
if ( dw Result = = WAIT_OBJECT _0+ 1 | | dwResult = = WAIT _OBJECT _0 + BL_BUT TONEVT )
{
if ( IsACOn( ) ) {
if ( g_BLIn fo. m_bAC Au t o) {
BL_On( TRUE) ; }
}
else {
if ( g_BLIn fo. m_bBat t eryAut o) {
BL_On( TRUE) ; }
}
}
else if ( dw Result = = WAIT_T IMEOUT ) {
BL_On( FALSE) ;
}
注册表的超时值决定了背光灯的工作时间。在注册表中进行如下超时值的设置:
[ H KEY_CURRE NT_USER/ Cont rolPanel / Backlight ]
"AC Timeout "= dword: 3c / / 十六进制, 十进制为60
"Bat t eryT imeout "= dw ord: 1e / / 十六进制, 十进制为30
3.2 创建支持电源管理的背光驱动
要想获得电源管理的功能支持, 首先要使电源管理器可以识别背光驱动程序。为此, 背光驱动需要向设备管理器声明一个特殊的代表电源管理的设备类型的GUID.具体操作是在Active 注册表键的IClass 表项中增加一个GUID.在Platform.reg 文件中添加如下:
"IClass "= "{ A32942B7- 920C- 486b - B0E6 - 92A702A99B35} "; Pow er- manageable generi c
3.3 在背光驱动中添加对I/O 控制代码( IOCTL) 的支持