Driver Structure – Deferred Procedure Calls (DPC)

Deferred procedure calls are functions that perform less critical activity than the activity that is currently going on. These routines are called deferred since the execution of these routines is delayed (deferred) until the IRQL drops to level 2. Some of the activities of a Device Driver have to be delayed because the processing that has to be done inside the DPC routine cannot be performed at IRQL above 2 (calling certain service function such as IoCompleteRequest( ) is prohibited above lRQL 2). Moreover it is not advisable to keep the IRQL unnecessarily elevated at a higher level when that same activity can be performed at a lower IRQL. For example ISR often need to complete IRP requests but are unable to do so since the ISR runs at quite a high IRQL level. So the ISR normally requests a DPC routine for completing the request. Whenever the IRQL drops to DPC/DISPATCH level (level 2) and DPC software interrupt occurs and the pending DPC routines gets called which completes the IRP request on behalf of the ISR.

Subscribe / Share

It's very calm over here, why not leave a comment?

Leave a Reply




Categories

Powered by Yahoo! Answers