如何在内核模式下使用计时器,以便在Windows XP及更高版本中大约每秒调用驱动程序中的指定函数?我应该能够在函数中使用所有函数(特别是ZwQuerySystemInformation)。我不需要高分辨率计时器或毫秒精度或类似的东西,我只需要一种方法来安排一个函数在内核模式下每秒运行一次,它必须在所有32位系统windows xp及更高版本上运行。 / p>
答案 0 :(得分:5)
通过KeInitializeTimer创建内核计时器 使用KeSetTimerEx设置计时器,并使用1秒的周期 在你的驱动程序中创建一个线程 在线程中,调用KeWaitForSingleObject等待计时器,并在返回时调用您的函数 重复。
答案 1 :(得分:2)
您可以在线程的循环中使用KeDelayExecutionThread。
答案 2 :(得分:2)
当计时器到期时,您还可以使用dpc对象在调度级别获取回调,而不是浪费线程。只需将其作为KeSetTimerEx的dpc参数传递。