提供 IoTimer 上下文信息
传递给 IoInitializeTimer 的上下文指针标识了其他驱动程序例程以及 IoTimer 例程本身可以维护有关计时操作的状态的上下文区域。 每当 I/O 管理器调用 IoTimer 例程时,都会传递上下文指针。
由于 IoTimer 例程在 IRQL = DISPATCH_LEVEL 运行,因此其上下文区域必须位于驻留的系统空间内存中。 大多数具有 IoTimer 例程的驱动程序使用 关联的设备对象的设备扩展 作为 上下文可访问区域,但如果驱动程序使用 控制器对象 或驱动程序分配的非分页池,上下文可以改为位于控制器扩展中。
遵循 IoTimer 例程上下文区域的以下准则:
如果 IoTimer 例程与驱动程序的 ISR 共享其上下文区域,则必须使用 KeSynchronizeExecution 调用以多处理器安全方式访问上下文区域的 SynchCritSection 例程。 有关详细信息,请参阅 “使用关键部分”。
如果 IoTimer 例程不与 ISR 共享其上下文区域,但与另一个驱动程序例程共享,则驱动程序必须使用初始化的执行旋转锁保护共享上下文区域,以便以多处理器安全的方式访问上下文信息。 有关详细信息,请参阅 旋转锁。