以前在XP使系统进入S1 S3 S4时可以使用BOOLEAN WINAPI WriteGlobalPwrPolicy(
  __in  PGLOBAL_POWER_POLICY pGlobalPowerPolicy
);将GLOBAL_POWER_POLICY.GLOBAL_MACHINE_POWER_POLICY.GLOBAL_MACHINE_POWER_POLICY中的
LidOpenWakeAc设置成typedef enum _SYSTEM_POWER_STATE {
  PowerSystemUnspecified   = 0,
  PowerSystemWorking       = 1,
  PowerSystemSleeping1     = 2,
  PowerSystemSleeping2     = 3,
  PowerSystemSleeping3     = 4,
  PowerSystemHibernate     = 5,
  PowerSystemShutdown      = 6,
  PowerSystemMaximum       = 7 
} SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE;PowerSystemSleeping1,PowerSystemSleeping3再调用BOOL WINAPI SetSystemPowerState(
  __in  BOOL fSuspend,
  __in  BOOL fForce
);就可以让系统进入S1 S3 S4等睡眠状态。现在在windows vista 和 windows 7下,这些函数微软都不建议使用了,那如何才能使系统进入S1,s3,s4睡眠状态呢。整个网络都快被我翻遍了。

解决方案 »

  1.   


    BOOLEAN WINAPI SetSuspendState(
      __in  BOOLEAN Hibernate,
      __in  BOOLEAN ForceCritical,
      __in  BOOLEAN DisableWakeEvent
    );
      

  2.   

    Starting with Windows Vista, use the PowerEnumerate function to enumerate power settings for a specified scheme and the power write functions to write individual settings. 
    DWORD WINAPI PowerEnumerate(
      __in_opt   HKEY RootPowerKey,
      __in_opt   const GUID* SchemeGuid,
      __in_opt   const GUID* SubGroupOfPowerSettingsGuid,
      __in       POWER_DATA_ACCESSOR AccessFlags,
      __in       ULONG Index,
      __out_opt  UCHAR* Buffer,
      __inout    DWORD* BufferSize
    );MSDN有云:Power Management Functions
      

  3.   

    我也用过SetSuspendState,不过SetSuspendState只能进入S3(睡眠),s4(休眠)状态,而S1(待机POS)却无法实现,不知道如何实现S1,楼上的兄弟能指导一下吗?
      

  4.   

    事实上我是想做出一个类似于PwrTest的软件
      

  5.   

    请教楼主:
             XP下你能实现 S1进入,然后自动唤醒吗?
    直接调用  SetSystemPowerState 也好像是实现S3/4呀,我发现我的板子只支持S1,
    我首先设置了 WaitableTimer,然后当我下S3的 指令下去的时候,我发现机器进入了S1,  却不会自动唤醒,不知道为何?
            在支持S3的机器上是可以自动S3/4的!~!~!