2

如何在内核模式下设置一个计时器,以便在 Windows XP 及更高版本上大约每秒调用一次驱动程序中的指定函数?我应该能够在函数中使用所有函数(尤其是 ZwQuerySystemInformation)。我不需要高分辨率计时器或毫秒精度或类似的东西,我只需要一种方法来安排一个函数在内核模式下大约每秒运行一次,并且它必须在所有 32 位系统 windows xp 和更高版本上运行。

4

3 回答 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 回答