Aprovisionamiento de información de contexto de IoTimer
El puntero de contexto pasado a IoInitializeTimer identifica un área de contexto donde otras rutinas de controlador y la propia rutina ioTimer pueden mantener el estado sobre las operaciones con tiempo. 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 un área accesible para contexto, pero el contexto puede estar 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 de IoTimer:
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 una manera 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.