DPC ( eng. Deferred procedure call -delayed procedure call ) - un mecanism specific pentru apelarea procedurilor în arhitectura Windows .
Când are loc o întrerupere, controlul este transferat operatorului de întrerupere . Există o serie de factori care limitează capacitățile codului de gestionare a întreruperilor:
Soluția la această problemă este o abordare în care doar cele mai critice operațiuni sunt efectuate direct în handler, iar alte acțiuni sunt amânate până când apare timpul relativ liber al procesorului și IRQL scade la o valoare validă ( DISPATCH_LEVEL). Apoi aceste acțiuni vor fi efectuate ca parte a apelului la procedura amânată (execuția acesteia a fost amânată până în acest moment).
Spre deosebire de un apel de procedură normală, în care, de fapt, controlul este transferat imediat în codul procedurii apelate, cu un apel DPC, controlul nu este transferat către procedura apelată - în schimb, se plasează adresa procedurii apelate și parametrii. într-o coadă specială [1] numită DPC Queue . Când vine momentul „oportun”, procedura amânată este chemată pe bune.
Astfel, operatorul de întrerupere efectuează doar cele mai necesare acțiuni și efectuează un apel de procedură întârziat care va efectua toate celelalte acțiuni care sunt necesare ca parte a gestionării întreruperilor, dar nu necesită o urgență crescută.
Deoarece mecanismul DPC este utilizat în primul rând în cadrul procesării cererilor I/O, există funcții speciale de wrapper cu prefix Iopentru gestionarea apelurilor amânate. În special, manipulatorii de întreruperi, conform documentației, ar trebui să utilizeze aceste funcții.