DPC

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2016. március 6-án áttekintett verziótól ; az ellenőrzések 11 szerkesztést igényelnek .

DPC ( eng.  Deferred procedúra hívás  – késleltetett eljáráshívás ) – egy speciális mechanizmus az eljárások meghívására a Windows architektúrában .

A DPC lényege

Megszakítás esetén a vezérlés átkerül a megszakításkezelőhöz . Számos tényező korlátozza a megszakításkezelő kód képességeit:

A probléma megoldása egy olyan megközelítés, amelyben csak a legkritikusabb műveleteket hajtják végre közvetlenül a kezelőben, és a többi műveletet elhalasztják, amíg meg nem jelenik a viszonylag szabad processzoridő, és az IRQL érvényes értékre csökken ( DISPATCH_LEVEL). Ezután ezek a műveletek a halasztott (végrehajtása eddig a pillanatig elhalasztott) eljárás felhívásának részeként kerülnek végrehajtásra.

Ellentétben a normál eljáráshívással, amelyben valójában a vezérlés azonnal átkerül a hívott eljárás kódjára, DPC hívás esetén a vezérlés nem kerül át a hívott eljárásra - helyette a hívott eljárás címét és paramétereit helyezik el. a DPC Queue nevű speciális sorban [1] . Amikor elérkezik az "alkalmas" idő, akkor a halasztott eljárást ténylegesen ki kell hívni.

Így a megszakításkezelő csak a legszükségesebb műveleteket hajtja végre, és egy késleltetett eljáráshívást hajt végre, amely elvégzi az összes többi műveletet, amely a megszakításkezelés részeként szükséges, de nem igényel fokozott sürgősséget.

DPC-kezelés

Mivel a DPC-mechanizmust elsősorban az I/O kérések feldolgozásának keretein belül használják, speciális előtaggal ellátott wrapper funkciók Iovannak a halasztott hívások kezelésére. A dokumentáció szerint különösen a megszakításkezelőknek kell használniuk ezeket a funkciókat.

Jegyzetek

  1. Többprocesszoros rendszerekben minden processzornak saját függőben lévő hívási sora van. Tehát minden függőben lévő hívás egy adott processzorhoz van társítva.

Lásd még

Irodalom