zlr1975113
驱动牛犊
驱动牛犊
  • 注册日期2008-04-21
  • 最后登录2019-12-05
  • 粉丝1
  • 关注0
  • 积分13分
  • 威望45点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:35回复:0

win7中如何阻止系统睡眠

楼主#
更多 发布于:2019-11-15 15:36
很久以前给XP写过一个过滤驱动,能够实现阻止系统休眠,方法就是拒绝IRP_MN_QUERY_POWER,代码如下:
NTSTATUS DispatchPower(PDEVICE_OBJECT pDevObj, PIRP pIrp)
{
    ......
    if(fcn == IRP_MN_QUERY_POWER)
    {
         PoStartNextPowerIrp(pIrp);
        pIrp->IoStatus.Status = STATUS_INVALID_DEVICE_STATE;
        IoCompleteRequest(pIrp, IO_NO_INCREMENT);
        return STATUS_INVALID_DEVICE_STATE;
    }
    //其他次功能代码,把这个IRP传递到下层驱动
    PoStartNextPowerIrp(pIrp);
    IoSkipCurrentIrpStackLocation(pIrp);
    return PoCallDriver(g_pLowerDevice, pIrp);
}
现在需要在WIN7下实现这个功能,把代码用WDK7编译成32位,在32位WIN7下实验(为了在开发阶段避开驱动签名等问题,暂时用的32位),发现其他都正常,就是这个阻止睡眠不能实现。DispatchPower()还是被调用了,但就是不起作用。请问熟悉WIN7驱动的朋友,是WIN7的电源管理有什么不同吗?
游客

返回顶部