Поделиться через


Предоставление информации о контексте CustomTimerDpc

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

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

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

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

Если CustomTimerDpc разделяет информацию о контексте с другими программными модулями драйвера, за исключением ISR, область в DeferredContext должна быть защищена исполнительной спиновой блокировкой. Дополнительные сведения см. в разделе "Замки спина".