Lykätty menettelypuhelu (DPC) on Microsoft Windows -käyttöjärjestelmän keskeytyskäsittelymekanismi, johon ajurit voivat viitata tiettyjä prosesseja käytettäessä. DPC sallii tehtävän aktivoinnin, mutta sitä ei suoriteta, erittäin priorisoidulta keskeytyspyynnön tasolta (IRQL). Tämä antaa kuljettajalle mahdollisuuden käsitellä korkean tason keskeytyspalvelurutiinia (ISR) nopeasti ja lykätä alemman tason IRQL-koodien suorittamista. Ohjaimet käyttävät DPC: itä tulo / lähtö (I / O) -toimintojen ajoitukseen. Ohjaimet ovat Windows, jota Windows käyttää kommunikoimaan laitteiden kanssa.
Siirrot
Ytimen tilan laiteohjain käsittelee tavallisesti ääni- tai videotietovirran siirtoa ulkoisesta laitteesta tai ulkoiseen laitteeseen. Laiteohjainten tietojenkäsittely on keskeytetty. Ulkoinen laitteisto luo rutiininomaisesti keskeytyksiä, jotka pyytävät laiteajuria siirtämään seuraavan erän. Laiteohjain ei voi käsitellä tietoja välittömästi keskeytysrutiinissaan; näin ollen käyttöjärjestelmän on käynnistettävä takaisinsoitto rutiini, joka on DPC. Keskusyksikön toimintatavat ovat ytimen tila tai järjestelmän tila ja käyttäjän tila. Ydin ohjaa kaikkia järjestelmän käsittelytoimintoja.
aikataulutus
Lykätyn menettelyn puhelun käsite on olemassa vain ytimen tilassa. Käyttöjärjestelmä pitää laiteohjainten ajoitetut DPC: t jonossa. Jos järjestelmän on käsiteltävä keskeytyksiä, ydin tarkistaa DPC-jonon ja suorittaa ensimmäisen DPC: n, jos ei ole keskeytyksiä eikä DPC-prosesseja ole käynnissä. DPC on järjestelmän korkein priorisoitu lanka, koska DPC-jonojen käsittely tapahtuu ennen kuin lähetin valitsee langan ja määrittää sen CPU: lle. DPC: llä on kolme ensisijaista tasoa: matala, keskitaso ja korkea.
Prosessit
Kukin DPC on liitetty yhteen järjestelmän määrittelemään DPC-objektiin. Kun ohjain rekisteröi DPCForslr-rutiinin, järjestelmä alustaa aiemmin määritetyn DPC-objektin. Jos tarvitaan useampi kuin yksi DPC, ohjain luo lisää DPC-objekteja, jotka tunnetaan nimellä CustomDPC. DPCForlsr-rutiini käsittelee useita prosesseja; se suorittaa I / O-operaation, joka on kuvattu tulo- / lähtöpyyntöpaketeissa (IRP), deques seuraava IRP, asettaa vastaanotetun IRP: n tulo- / lähtötilan ja prosessin pyynnön täyttämiseksi.
rutiinit
Normaalisti laiteohjaimella, jolla on keskeytyspalvelurutiini, on ainakin yksi DPCForIsr- tai CustomDPC-rutiini keskeyttää ajoitettujen I / O-toimintojen käsittely. Open Systems Resources, Inc: n mukaan kuljettajalla on yksi DPCForlsr-rutiini, CustomDPC-rutiineja tai molemmat riippuvaisia sen taustalla olevan laitteen luonteesta ja I / O-pyyntöjen joukosta, joita sen on tuettava. Kuljettajan ISR: n täytyy soittaa IoRequestDPC: lle keskeytyksestä johtuville I / O-toiminnoille DPCForlsr-rutiinien avulla. Päinvastoin, päällekkäisten operaatioiden, keskeytyksestä johtuvien I / O-toimintojen käyttäminen CustomDPC-rutiineilla, ISR: n täytyy soittaa KeInsertQueueDPC: lle.