提供 IoTimer 上下文信息

传递给 IoInitializeTimer 的Context 指针标识其他驱动程序例程和 IoTimer 例程本身可以维护有关计时操作的状态的上下文区域。 I/O 管理器在调用 IoTimer 例程时传递上下文指针。

由于 IoTimer 例程在 IRQL = DISPATCH_LEVEL 处运行,因此其上下文区域必须位于驻留的系统空间内存中。 具有 IoTimer 例程的大多数驱动程序使用关联设备对象的 设备扩展 作为 上下文可访问区域,但如果驱动程序使用控制器对象或驱动程序分配的非分页池,则上下文可以改为位于 控制器 扩展中。

请遵循IoTimer例程上下文区域的以下准则:

  • 如果 IoTimer 例程与驱动程序的 ISR 共享其上下文区域,则必须使用 KeSynchronizeExecution 调用 SynchCritSection 例程,该例程以多处理器安全方式访问上下文区域。 有关详细信息,请参阅 使用关键部分

  • 如果 IoTimer 例程不与 ISR 共享其上下文区域,但与其他驱动程序例程共享,则驱动程序必须使用初始化的执行旋转锁保护共享上下文区域,以便以多处理器安全方式访问上下文信息。 有关详细信息,请参阅 旋转锁