Poziv odgođenog postupka (DPC) mehanizam je za obradu prekida u operacijskom sustavu Microsoft Windows na koji se vozači mogu pozivati prilikom izvođenja određenih procesa. DPC omogućuje aktiviranje, ali ne i izvršavanje zadatka, s visoko prioritetne razine zahtjeva za prekid (IRQL). To omogućuje vozaču da brzo obradi rutinu usluge prekida na visokoj razini (ISR), istovremeno odgađajući izvršavanje IRQL kodova niže razine. Vozači koriste DPC-ove za planiranje ulazno / izlaznih (I / O) operacija. Upravljački programi su softver koji Windows koristi za komunikaciju s hardverskim uređajima.
Transferi
Upravljački program uređaja u načinu jezgre uobičajeno se bavi prijenosom audio ili video podataka s vanjskog uređaja ili na njega. Obrada podataka upravljačkih programa uređaja pokreće se prekidima. Vanjski hardver rutinski generira prekide kako bi zatražio da upravljački program uređaja prenese sljedeću seriju podataka. Upravljački program uređaja ne može trenutno obraditi podatke u svojoj rutini prekida; stoga operativni sustav treba pokrenuti rutinu povratnog poziva, a to je DPC. Način jezgre ili sistemski način i korisnički način su načini rada vaše središnje procesorske jedinice. Kernel kontrolira sve aktivnosti obrade sustava.
Zakazivanje
Koncept poziva odgođenog postupka postoji samo u načinu jezgre. Operativni sustav drži DPC-ove koje su upravljački programi uređaja planirali u redu čekanja. Ako vaš sustav treba obraditi prekide, kernel provjerava DPC red i izvršava prvi DPC ako nema prekida i ako se ne izvršavaju DPC procesi. DPC je nit s najvećim prioritetom u sustavu, jer se obrada DPC reda odvija prije nego što dispečer odabere nit i dodijeli je CPU-u. DPC-ovi imaju tri razine prioriteta: nisku, srednju i visoku.
Procesi
Svaki DPC povezan je s jednim DPC objektom definiranim sustavom. Kad upravljački program registrira DPCForslr rutinu, sustav inicijalizira prethodno definirani DPC objekt. Ako je potrebno više od jednog DPC-a, pokretački program stvara dodatne DPC objekte poznate kao CustomDPC rutine. Rutina DPCForlsr obrađuje nekoliko procesa; dovršava I / O operaciju opisanu ulazno / izlaznim paketima zahtjeva (IRP), dekodira sljedeći IRP, postavlja ulazno / izlazni status u primljenom IRP-u i postupak za dovršavanje zahtjeva.
Rutine
Uobičajeno, pokretački program uređaja koji ima rutinu usluge prekida ima najmanje jednu DPCForIsr ili CustomDPC rutinu za dovršavanje obrade I / O operacija vođenih prekidima. Prema Open Systems Resources, Inc., osnovni razlog zašto upravljački program ima jednu DPCForlsr rutinu, skup CustomDPC rutina ili oboje ovisi o prirodi osnovnog uređaja i skupu I / O zahtjeva koje mora podržati. ISR vozača mora nazvati IoRequestDPC za I / O operacije vođene prekidima pomoću DPCForlsr rutina. Suprotno tome, za preklapajuće operacije, I / O operacije vođene prekidima pomoću CustomDPC rutina, ISR mora pozvati KeInsertQueueDPC.