阅读:1430回复:13
相同的驱动2000下可以阻止系统进入等待状态,98下wdm想阻止计算机进入睡眠状态,发现不成功,结果用softice在dispatchpower处设断点,发现点击关闭系统中“使系统进入睡眠状态”后,根
急盼答复。在线等。
|
|
沙发#
发布于:2004-06-14 17:46
应用程序中可以处理这个消息 在Vxd里用SHELL_HookSystemBroadcast可以hook像WM_POWERBROADCAST之类的广播消息。 如果你返回false,这些消息就不会发到应用程序。 :cool: |
|
板凳#
发布于:2004-06-14 17:40
如果只是不想让机器进入节能模式,你不一定要驱动呀?APP可以的 嘿嘿,还是用driver放心些。用AP被人干掉怎么办? 什么? 用driver耗系统空间? 我才不管那么多呢。 :D :D :D [编辑 - 6/14/04 by RED_spring] |
|
地板#
发布于:2004-06-11 11:56
WM_POWERBROADCAST
The WM_POWERBROADCAST message is broadcast to an application to notify it of power-management events. A window receives this message through its WindowProc function. LRESULT CALLBACK WindowProc( HWND hwnd, // handle to window UINT uMsg, // WM_POWERBROADCAST WPARAM wParam, // power-management event LPARAM lParam // function-specific data ); Parameters hwnd Handle to window. uMsg WM_POWERBROADCAST message identifier. wParam Power-management event. This parameter can be one of the following events. Event Meaning PBT_APMBATTERYLOW Battery power is low. PBT_APMOEMEVENT OEM-defined event occurred. PBT_APMPOWERSTATUSCHANGE Power status has changed. PBT_APMQUERYSUSPEND Request for permission to suspend. PBT_APMQUERYSUSPENDFAILED Suspension request denied. PBT_APMRESUMEAUTOMATIC Operation resuming automatically after event. PBT_APMRESUMECRITICAL Operation resuming after critical suspension. PBT_APMRESUMESUSPEND Operation resuming after suspension. PBT_APMSUSPEND System is suspending operation. lParam Function-specific data. For most events, this parameter is reserved and not used. However, if wParam is one of the resume events (PBT_APMRESUME*), the lParam parameter can specify the PBTF_APMRESUMEFROMFAILURE flag. This flag indicates that a suspend operation failed after the PBT_APMSUSPEND event was broadcast. Return Values Return TRUE to grant a request. Return BROADCAST_QUERY_DENY to deny a request. Requirements Client: Included in Windows XP, Windows 2000 Professional, Windows NT Workstation 4.0, Windows Me, Windows 98, and Windows 95. Server: Included in Windows Server 2003, Windows 2000 Server, and Windows NT Server 4.0. Header: Declared in Winuser.h; include Windows.h. |
|
|
地下室#
发布于:2004-06-10 16:59
我在wdm里怎么就截获不到电源状态改变的查询呢?2000下可以
|
|
5楼#
发布于:2004-06-10 11:05
VxD 中可以处理CONFIG_APM_QUERY_Dx,当系统将要进入睡眠模式的时候,Configuration Manager将给VxD发送CONFIG_APM_QUERY_Dx (x是1,2,3)消息,如果driver不能进入睡眠模式可以返回失败,阻止系统进入睡眠模式。
|
|
|
6楼#
发布于:2004-06-10 10:53
电源设置当然可以,但我想解决的就是截获系统电源消息然后阻止 返回 BROADCAST_QUERY_DENY MSDN里面有详细的说明,搜索一下吧。 |
|
|
7楼#
发布于:2004-06-10 08:13
电源设置当然可以,但我想解决的就是截获系统电源消息然后阻止
如果在应用程序中处理wm_powerbroadcast,将怎么拒绝电源状态的改变呢 ? |
|
8楼#
发布于:2004-06-09 17:29
还有,你想象如果你把电源设置部分修改了会是怎样?回答当然是不会进入休眠了。
所以修改设置也是一个办法 |
|
|
9楼#
发布于:2004-06-09 17:17
应用程序中可以处理这个消息
WM_POWERBROADCAST |
|
|
10楼#
发布于:2004-06-09 17:00
to AllenZh:
app中怎么处理呢? |
|
11楼#
发布于:2004-06-09 16:47
如果只是不想让机器进入节能模式,你不一定要驱动呀?APP可以的
|
|
|
12楼#
发布于:2004-06-09 16:44
我其实就是想禁止电源节能就行了,不是要禁止用户操作,用操作模拟一下,想让系统发送电源的pnp命令而已。
|
|
13楼#
发布于:2004-06-09 16:15
这说明9x与2000在处理pnp方式上有所区别,对于wdm驱动这种区别不明显,但你的功能需要禁止用户进行休眠状态,这是非常规操作,因此你不能在pnp中去处理,我想你需要写vxd来实现,并且需要对电源管理部分进行拦截
|
|
|