“powercfg -energy”命令如何检测当时运行的每个单独程序的请求计时器分辨率?
我想一种方法是注入到每个正在运行的进程中,并在该进程内部为每个增加的分辨率(值 1-15)在这些分辨率的循环中调用timeEndPeriod ,并检查当前分辨率的timeEndPeriod调用是否返回TIMERR_NOCANDO或TIMERR_NOERROR (注意:这些返回值不是对应的假和真)。如果它返回TIMERR_NOERROR则断定程序正在使用该频率,然后再次调用timeBeginPeriod. 但是这种方法看起来很麻烦。此外,它有点侵入性,因为它修改了进程的状态,并且还假设 powercfg 能够注入所有进程。
是否有一些记录或未记录的系统 API 可以为外部进程请求该信息?至少我想知道它是如何工作的,即使那个 API 仍然是一个秘密......
一个相关的(但不是主要的)问题是,如果我对单个应用程序的请求不感兴趣,如何获得系统中当前有效的最大计时器分辨率(最小间隔)?我想也许 GetSystemTimeAdjustment() 的 lpTimeIncrement 对此有所帮助,但我不太确定。请确认我或提出替代方法。