gpt4 book ai didi

windows - 如何判断哪个进程在 Windows 中设置了高计时器分辨率

转载 作者:可可西里 更新时间:2023-11-01 12:48:45 40 4
gpt4 key购买 nike

我的系统受到高计时器分辨率的困扰(NtQueryTimerResolution 返回 0.5ms)。

Maximum timer interval: 15.600 ms
Minimum timer interval: 0.500 ms
Current timer interval: 0.500 ms

某些进程必须调用值为 5000(0.5 毫秒)的 NtSetTimerResolution,但我如何确定是哪一个?我看到英特尔有一个名为 Battery Life Analyzer 的工具 显示每个进程的当前计时器分辨率,但该工具仅供英特尔合作伙伴使用。有没有其他工具或方法可以通过 WinDbg 查看它?注意:它似乎发生在启动时,因为设置断点不起作用(调试器启动时分辨率已经很高)。

最佳答案

我发现 Windows 7 在 _EPROCESS 内核结构中跟踪每个进程的计时器分辨率。

启用调试(使用 /debug 启动)可以使用 windbg(运行 windbg -kl)浏览 ExpTimerResolutionListHead 列表并提取计时器信息,如下所示:

lkd> !list "-e -x\"dt nt!_EPROCESS @$extret-@@(#FIELD_OFFSET(nt!_EPROCESS,TimerResolutionLink)) ImageFileName UniqueProcessId SmallestTimerResolution RequestedTimerResolution\"nt!ExpTimerResolutionListHead"

然而,在我的例子中,进程 ID 为 NULL(可能是因为驱动程序发出了请求),我仍然无法弄清楚它是哪个驱动程序。

关于windows - 如何判断哪个进程在 Windows 中设置了高计时器分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23471097/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com