Sdílet prostřednictvím


Poskytnutí informací o kontextu pro CustomTimerDpc

Ukazatel DeferredContext předaný KeInitializeDpc odkazuje na kontextovou oblast, kde ostatní rutiny ovladačů, a vlastní rutina CustomTimerDpc, mohou udržovat stav. Jádro předává ukazatel DeferredContext v každém volání rutiny DPC.

Na rozdíl od rutiny IoTimer nemá CustomTimerDpc žádné konkrétní přidružení k objektu zařízení vytvořenému ovladačem. Ovladač však může přidružit rutinu CustomTimerDpc k objektu zařízení vytvořenému ovladačem zahrnutím ukazatele na objekt zařízení v jeho kontextové oblasti.

Kontextová oblast musí být v rezidentní paměti přidělené ovladači. Tato kontextová oblast je obvykle v rozšíření zařízení, ale může se také nacházet v nestránkovém fondu. Pokud ovladač používá objekt kontroleru, může být umístěn v rozšíření kontroleru. Obsah kontextové oblasti je určen pro řidiče.

Pokud rutina CustomTimerDpc sdílí informace o kontextu s ISR ovladače, rutina CustomTimerDpc musí použít KeSynchronizeExecution k volání rutiny SynchCritSection , která přistupuje ke sdílenému kontextu. Další informace naleznete v tématu Použití kritických oddílů.

Pokud CustomTimerDpc sdílí informace o kontextu s jinými rutinami ovladače než ISR, musí být oblast v DeferredContext chráněna výkonným spinlockem. Další informace viz Spin Locks.