Предоставление сведений о контексте CustomTimerDpc

Указатель DeferredContext , переданный в KeInitializeDpc , указывает на область контекста, в которой другие подпрограммы драйвера и сама подпрограмма CustomTimerDpc могут поддерживать состояние. Ядро передает указатель DeferredContext в каждом вызове подпрограммы DPC.

В отличие от процедуры IoTimer , CustomTimerDpc не имеет особых связей с объектом устройства, созданным драйвером. Однако драйвер может связать подпрограмму CustomTimerDpc с созданным драйвером объектом устройства, включив указатель на объект устройства в область контекста.

Контекстная область должна находиться в постоянной памяти, выделенной драйвером. Как правило, эта область контекста находится в расширении устройства, но она также может находиться в непагрегированных пулах. Если драйвер использует объект контроллера, он может находиться в расширении контроллера. Содержимое области контекста определяется драйвером.

Если подпрограмма CustomTimerDpc использует сведения о контексте с ISR драйвера, подпрограмма CustomTimerDpc должна использовать KeSynchronizeExecution для вызова подпрограммы SynchCritSection , которая обращается к общему контексту. Дополнительные сведения см. в разделе Использование критических разделов.

Если CustomTimerDpc использует сведения о контексте с другими подпрограммами драйвера, не относящиеся к ISR, область в DeferredContext должна быть защищена исполнительной спин-блокировкой. Дополнительные сведения см. в разделе Спин-блокировки.