Proporcionar información de contexto de CustomTimerDpc
El puntero DeferredContext pasado a KeInitializeDpc apunta a un área de contexto donde otras rutinas de controlador y la propia rutina CustomTimerDpc pueden mantener el estado. El kernel pasa el puntero DeferredContext en cada llamada a la rutina DPC.
A diferencia de una rutina de IoTimer , customTimerDpc no tiene asociaciones concretas con un objeto de dispositivo creado por el controlador. Sin embargo, un controlador puede asociar una rutina CustomTimerDpc a un objeto de dispositivo creado por el controlador mediante la inclusión de un puntero al objeto de dispositivo en su área de contexto.
El área de contexto debe estar en memoria residente asignada por el controlador. Normalmente, este área de contexto está en una extensión de dispositivo, pero también puede estar en un grupo no paginado. Si el controlador usa un objeto de controlador, puede estar en una extensión del controlador. El contenido del área de contexto está determinado por el controlador.
Si una rutina CustomTimerDpc comparte información de contexto con el ISR del controlador, la rutina CustomTimerDpc debe usar KeSynchronizeExecution para llamar a una rutina SynchCritSection que tenga acceso al contexto compartido. Para obtener más información, consulte Uso de secciones críticas.
Si CustomTimerDpc comparte la información de contexto con otras rutinas de controlador que no son ISR, el área de DeferredContext debe estar protegida por un bloqueo de giro ejecutivo. Para obtener más información, consulte Bloqueos de número.