KeXxxTimer例程, KTIMER对象, 和DPC
自Windows 2000开始, 一系列KeXxxTimer 例程可用于管理计时器。这些例程使用基于KTIMER结构的定时器对象。
为了创建一个计时器对象,一个驱动程序首先申请一个KTIMER结构体的存储空间。然后驱动程序调用例如KeInitializeTimer或KeInitializeTimerEx的一个例程去初始化这个结构。一个定时器可仅用于计时一次,亦可在给定的时间间隔后重复计时。KeSetTimer总是设置一个仅计时一次的定时器,KeSetTimerEx接受一个可选的超时参数,它指定一个重复发生超时的定时器间隔。
一个可选的CustomTimerDpc例程(延迟过程调用的类型之一)可以与一个通知定时器或者一个同步定时器相关联,当指定的时间超时后这个例程被调用。更多相关信息见Using Timer Objects。
一个定时器可以是一个通知定时器或者是一个同步定时器。
·
当一个通知定时器被设置为信号态时,所有在它之上等待的线程被触发。定时器的状态保持为信号态,直到它被显式重置。
·
·
当一个同步定时器超时,它的状态被设置为信号态直到一个等待线程被释放。此时定时器(自动)被重置为非信号态。
·
KeInitializeTimer 总是创建一个通知定时器。 KeInitializeTimerEx 接受一个Type参数, 它可以被设定为NotificationTimer或者SynchronizationTimer。
以下主题提供更多有关定时器对象和DPC的信息:
Registering and Queuing a CustomTimerDpc Routine