Dočasné volanie procedúr (DPC) je mechanizmus na prerušenie operačného systému Microsoft Windows, na ktorý môžu vodiči odkazovať pri spustení určitých procesov. DPC umožňuje úlohu aktivovať, ale nevykonávať, z vysoko prioritnej úrovne požiadavky na prerušenie (IRQL). Toto umožňuje vodičovi rýchlo spracovať rutinnú službu vysokej úrovne prerušenia (ISR) a zároveň odkladá vykonanie IRQL kódov nižšej úrovne. Ovládače používajú DPC na plánovanie vstupno-výstupných (I / O) operácií. Ovládače sú softvér používaný systémom Windows na komunikáciu s hardvérovými zariadeniami.
prevody
Ovládač zariadenia v jadrovom režime bežne spracováva prenos zvukového alebo obrazového dátového toku z alebo na externé zariadenie. Spracovanie údajov ovládačov zariadení je prerušené. Externý hardvér rutinne generuje prerušenia, aby mohol požiadať ovládač zariadenia o prenos ďalšej dávky dát. Ovládač zariadenia nemôže spracovať dáta okamžite vo svojej rutine prerušenia; takže operačný systém musí spúšťať rutinu spätného volania, čo je DPC. Režim jadra, systémový režim a užívateľský režim sú režimy prevádzky vašej centrálnej jednotky. Jadro riadi všetky činnosti spracovania systému.
plánovanie
Pojem odloženého volania procedúry existuje iba v režime jadra. Operačný systém udržuje DPC naprogramované ovládačmi zariadení vo fronte. Ak váš systém potrebuje prerušiť proces, jadro skontroluje frontu DPC a vykoná prvý DPC, ak nie sú žiadne prerušenia a nie sú spustené žiadne procesy DPC. DPC je najvyšším prioritným vláknom v systéme, pretože spracovanie frontu DPC prebieha skôr, ako dispečer vyberie vlákno a priradí ho CPU. DPC majú tri úrovne priorít: nízke, stredné a vysoké.
Procesy
Každý DPC je prepojený s jedným systémom definovaným objektom DPC. Keď vodič zaregistruje rutinu DPCForslr, systém inicializuje predtým definovaný objekt DPC. Ak je potrebných viac ako jedno DPC, ovládač vytvorí ďalšie objekty DPC známe ako rutiny CustomDPC. Rutina DPCForlsr spracováva niekoľko procesov; dokončí operáciu I / O popísanú v paketoch požiadaviek vstupu / výstupu (IRP), deque ďalšie IRP, nastaví vstupný / výstupný stav v prijatej IRP a proces dokončenia požiadavky.
rutiny
Bežne má ovládač zariadenia, ktorý má rutinnú službu prerušenia, aspoň jednu rutinu DPCForIsr alebo CustomDPC na dokončenie spracovania vstupno-výstupných operácií s prerušením. Podľa Open Systems Resources, Inc., základný dôvod, prečo ovládač má jednu rutinu DPCForlsr, súbor rutín CustomDPC alebo oboje, závisí od povahy základného zariadenia a množiny požiadaviek I / O, ktoré musí podporovať. ISR vodiča musí zavolať IoRequestDPC pre I / O operácie riadené prerušením pomocou rutín DPCForlsr. Naopak, pri prekrývajúcich sa operáciách I / O operácií s prerušením, ktoré používajú rutiny CustomDPC, ISR potrebuje zavolať KeInsertQueueDPC.