Предоставление сведений о контексте CustomTimerDpc
Указатель DeferredContext , переданный в KeInitializeDpc , указывает на область контекста, в которой другие подпрограммы драйвера и сама подпрограмма CustomTimerDpc могут поддерживать состояние. Ядро передает указатель DeferredContext в каждом вызове подпрограммы DPC.
В отличие от процедуры IoTimer , CustomTimerDpc не имеет особых связей с объектом устройства, созданным драйвером. Однако драйвер может связать подпрограмму CustomTimerDpc с созданным драйвером объектом устройства, включив указатель на объект устройства в область контекста.
Контекстная область должна находиться в постоянной памяти, выделенной драйвером. Как правило, эта область контекста находится в расширении устройства, но она также может находиться в непагрегированных пулах. Если драйвер использует объект контроллера, он может находиться в расширении контроллера. Содержимое области контекста определяется драйвером.
Если подпрограмма CustomTimerDpc использует сведения о контексте с ISR драйвера, подпрограмма CustomTimerDpc должна использовать KeSynchronizeExecution для вызова подпрограммы SynchCritSection , которая обращается к общему контексту. Дополнительные сведения см. в разделе Использование критических разделов.
Если CustomTimerDpc использует сведения о контексте с другими подпрограммами драйвера, не относящиеся к ISR, область в DeferredContext должна быть защищена исполнительной спин-блокировкой. Дополнительные сведения см. в разделе Спин-блокировки.