如何在内核模式下设置一个计时器,以便在 Windows XP 及更高版本上大约每秒调用一次驱动程序中的指定函数?我应该能够在函数中使用所有函数(尤其是 ZwQuerySystemInformation)。我不需要高分辨率计时器或毫秒精度或类似的东西,我只需要一种方法来安排一个函数在内核模式下大约每秒运行一次,并且它必须在所有 32 位系统 windows xp 和更高版本上运行。
问问题
3057 次
3 回答
5
通过KeInitializeTimer创建内核计时器。用KeSetTimerEx
设置定时器,周期为 1s。
在您的驱动程序中创建一个线程。
在线程中,调用KeWaitForSingleObject以等待计时器,并在返回时调用您的函数。
重复。
于 2010-10-27T23:51:11.273 回答
2
您可以在线程的循环中使用KeDelayExecutionThread 。
于 2010-10-28T07:29:48.213 回答
2
除了浪费线程之外,您还可以使用 dpc 对象在计时器到期时在调度级别获取回调。只需将它作为 KeSetTimerEx 的 dpc 参数传递。
于 2012-11-17T20:38:05.583 回答