GetThreadTimes如何报告hibernate时间?

我目前正在使用GetThreadTimes告诉我在应用程序的事件循环中花了多少时间。

我想知道这会如何受到冬眠的影响。 是否报告了hibernate时间? 或者也许是系统时间? 所有版本的Windows上的行为是否相同?

注意我在这里问了Posix的相同问题。

不,没有报告hibernate时间

怎么可能?

当hibernate时,计算机实际上已经关闭 ,没有计时器正在滴答作响,也没有进行计数。
使用GetThreadTimes看到的时序是在系统计时器1的每个滴答(即中断)时计算的。

我做了一个小C程序来测试它。
它每1000毫秒记录一次计时,我运行它并使我的笔记本电脑hibernate(大约第9天)。
计数中没有显示间隙 ,正如预期的那样,每条线距离前一个大约1000毫秒。

计数没有差距

因此,hibernate时间不计入系统时间或用户时间。

我不知道这与所有旧版本的Windows一致,特别是那些具有不同hibernate意义的版本,但您可以期望这在所有重要版本中保持一致。

1 HPET,LAPIC计时器或旧的PIT,无论什么可用