powercfg返回不同的结果,具体取决于32位版本与64位版本

时间:2016-01-20 11:18:42

标签: c++ windows winapi wow64 powercfg

我尝试使用powercfg使用lpCommandLine使用以下命令作为"powercfg -waketimers" 参数从我的32位应用程序运行在我的32位应用程序上调用CreateProcess工具:

Command Line

它工作得很好,除了纯粹偶然的机会我发现它返回了一个不同的报告,而不是从Timer set by [PROCESS] Legacy Kernel Caller expires at 4:00:02 AM on 1/20/2016. Reason: Timer set by [PROCESS] Legacy Kernel Caller expires at 3:59:00 AM on 1/20/2016. Reason: 窗口运行相同的报告。

以下是我在32位进程中获得的内容:

Command Line

这就是我在Timer set by [SERVICE] \Device\HarddiskVolume4\Windows\System32\svchost.exe (SystemEventsBroker) expires at 4:00:02 AM on 1/20/2016. Reason: Windows will execute 'NT TASK\Microsoft\Windows\TaskScheduler\Regular Maintenance' scheduled task that requested waking the computer. Timer set by [SERVICE] \Device\HarddiskVolume4\Program Files (x86)\Common Files\Acronis\Schedule2\schedul2.exe (AcrSch2Svc) expires at 3:59:00 AM on 1/20/2016. 窗口中看到的内容:

"C:\\Windows\\SysWow64\\powercfg.exe -waketimers"

所以我很好奇,该工具的32位和64位版本应该返回不同的结果吗?因为我可以解决这个问题并从我的32位进程获得完整报告(上面的第二个版本)的唯一方法是检测它作为WOW64运行,然后使用以下路径进行强制64位重定向:

com.google.appengine.api.urlfetch.RequestPayloadTooLargeException: The request to https://www.googleapis.com/upload/storage/v1/b/XXXXXXXX exceeded the 10 MiB limit.

0 个答案:

没有答案