Udostępnij przez


Dostarczanie informacji kontekstowych dotyczących CustomTimerDpc

Wskaźnik DeferredContext przekazany do KeInitializeDpc wskazuje na obszar kontekstu, w którym inne procedury sterowników oraz sama procedura CustomTimerDpc mogą zachować stan. Jądro przekazuje wskaźnik DeferredContext w każdym wywołaniu procedury DPC.

W przeciwieństwie do procedury IoTimer , customTimerDpc nie ma żadnych konkretnych skojarzeń z obiektem urządzenia utworzonego przez sterownik. Sterownik może jednak skojarzyć procedurę CustomTimerDpc z obiektem urządzenia utworzonego przez sterownik, dołączając wskaźnik do obiektu urządzenia w jego obszarze kontekstu.

Obszar kontekstu musi znajdować się w pamięci przydzielonej przez sterownik. Zazwyczaj ten obszar kontekstu znajduje się w rozszerzeniu urządzenia, ale może również znajdować się w puli niestronicowanej. Jeśli sterownik używa obiektu kontrolera, może on znajdować się w rozszerzeniu kontrolera. Zawartość obszaru kontekstu jest określana przez sterownik.

Jeśli procedura CustomTimerDpc udostępnia informacje kontekstowe z ISR sterownika, procedura CustomTimerDpc musi używać KeSynchronizeExecution, aby wywołać procedurę SynchCritSection, która uzyskuje dostęp do wspólnego kontekstu. Aby uzyskać więcej informacji, zobacz Używanie sekcji krytycznych.

Jeśli CustomTimerDpc udostępnia informacje kontekstowe innym procedurom sterowników innych niż ISR, obszar w DeferredContext musi być chroniony przez blokadę typu spin na poziomie zarządczym. Aby uzyskać więcej informacji, zobacz Spin Locks.