Proporcionar información de contexto de IoTimer

El puntero de contexto pasado a IoInitializeTimer identifica un área de contexto en la que otras rutinas del controlador y la propia rutina ioTimer pueden mantener el estado sobre las operaciones cronometr. El administrador de E/S pasa el puntero de contexto cada vez que llama a la rutina IoTimer .

Dado que una rutina de IoTimer se ejecuta en IRQL = DISPATCH_LEVEL, su área de contexto debe estar en memoria de espacio del sistema residente. La mayoría de los controladores que tienen rutinas de IoTimer usan la extensión de dispositivo del objeto de dispositivo asociado como área accesible para contexto, pero el contexto puede estar en su lugar en una extensión de controlador si el controlador usa un objeto de controlador o en un grupo no paginado asignado por el controlador.

Siga estas instrucciones para elárea de contexto de una rutina deIoTimer:

  • Si la rutina IoTimer comparte su área de contexto con el ISR del controlador, debe usar KeSynchronizeExecution para llamar a una rutina SynchCritSection que tenga acceso al área de contexto de forma segura para varios procesadores. Para obtener más información, consulte Uso de secciones críticas.

  • Si la rutina IoTimer no comparte su área de contexto con un ISR, pero la comparte con otra rutina de controlador, el controlador debe proteger el área de contexto compartida con un bloqueo de giro ejecutivo inicializado, con el fin de acceder a la información de contexto de una manera segura para varios procesadores. Para obtener más información, consulte Bloqueos de número.