Condividi tramite


Fornire informazioni sul contesto CustomTimerDpc

Il puntatore DeferredContext passato a KeInitializeDpc punta a un'area di contesto in cui altre routine driver e la routine CustomTimerDpc stessa possono mantenere lo stato. Il kernel passa il puntatore DeferredContext in ogni chiamata alla routine DPC.

A differenza di una routine IoTimer , customTimerDpc non ha associazioni specifiche con un oggetto dispositivo creato dal driver. Tuttavia, un driver può associare una routine CustomTimerDpc a un oggetto dispositivo creato dal driver includendo un puntatore all'oggetto dispositivo nell'area di contesto.

L'area del contesto deve essere presente nella memoria allocata dal driver. In genere, questa area di contesto si trova in un'estensione del dispositivo, ma può anche essere nel pool non a pagina. Se il driver usa un oggetto controller, può essere in un'estensione del controller. Il contenuto dell'area di contesto è determinato dal driver.

Se una routine CustomTimerDpc condivide le informazioni di contesto con l'ISR del driver, la routine CustomTimerDpc deve usare KeSynchronizeExecution per chiamare una routine SynchCritSection che accede al contesto condiviso. Per altre informazioni, vedere Uso di sezioni critiche.

Se CustomTimerDpc condivide le informazioni di contesto con altre routine di driver non ISR, l'area in DeferredContext deve essere protetta da un blocco spin esecutivo. Per altre informazioni, vedere Blocchi di spin.