Poziv z odloženim postopkom (DPC) je mehanizem za obdelavo prekinitev v operacijskem sistemu Microsoft Windows, na katerega se lahko vozniki sklicujejo pri izvajanju določenih procesov. DPC omogoča, da se opravilo aktivira, vendar ne izvede, z visoko prioritetne ravni prekinitvene zahteve (IRQL). To vozniku omogoča, da hitro obdeluje podprogram prekinitve (ISR) na visoki ravni, medtem ko odloži izvajanje nižjih kod IRQL. Vozniki uporabljajo DPC-je za načrtovanje vhodno-izhodnih (I / O) operacij. Gonilniki so programska oprema, ki jo Windows uporablja za komunikacijo z napravami strojne opreme.
Prenosi
Gonilnik naprave jedrnega načina običajno obravnava prenos avdio ali video podatkovnega toka iz ali na zunanjo napravo. Obdelava podatkov gonilnikov naprav je prekinjena. Zunanja strojna oprema rutinsko generira prekinitve, da od gonilnika naprave zahteva prenos naslednjega paketa podatkov. Gonilnik naprave ne more takoj obdelati podatkov v svoji prekinitveni rutini; tako mora operacijski sistem sprožiti rutino povratnega klica, ki je DPC. Načini jedra ali sistemski način in uporabniški način so načini delovanja vaše osrednje procesne enote. Jedro nadzoruje vse dejavnosti procesiranja sistema.
Razporejanje
Koncept klica odloženega postopka obstaja samo v načinu jedra. Operacijski sistem ohranja DPC-je, ki jih vozniki naprav načrtujejo v čakalni vrsti. Če mora vaš sistem obdelati prekinitve, jedro preveri čakalno vrsto DPC in izvede prvi DPC, če ni prekinitev in procesov DPC ne poteka. DPC je najvišja prednostna nit v sistemu, saj se obdelava čakalne vrste DPC zgodi, preden odpremnik izbere nit in jo dodeli CPU. DPCs imajo tri prednostne ravni: nizko, srednje in visoko.
Procesi
Vsak DPC je povezan z enim sistemsko določenim objektom DPC. Ko gonilnik registrira rutino DPCForslr, sistem inicializira predhodno določen objekt DPC. Če je potreben več kot en DPC, gonilnik ustvari dodatne objekte DPC, znane kot rutine CustomDPC. Rutina DPCForlsr obravnava več procesov; zaključi I / O operacijo, ki jo opisujejo vhodno / izhodni paketi zahtevkov (IRP), deques naslednji IRP, nastavi vhodno / izhodni status v prejetem IRP in postopek za dokončanje zahteve.
Rutine
Običajno ima gonilnik naprave, ki ima prekinitveni servisni postopek, vsaj en DPCForIsr ali CustomDPC podprogram za dokončanje obdelave prekinitvenih operacij I / O. V skladu z Open Systems Resources, Inc. je osnovni razlog, da ima voznik eno samo rutino DPCForlsr, nabor rutin CustomDPC ali obe sta odvisni od narave njegove osnovne naprave in niza I / O zahtev, ki jih mora podpirati. ISR gonilnika mora poklicati IoRequestDPC za I / O operacije, ki temeljijo na prekinitvah, z uporabo rutin DPCForlsr. Nasprotno pa mora ISR v primeru prekrivanih operacij, I / O operacij, ki temeljijo na prekinitvah z uporabo rutin CustomDPC, poklicati KeInsertQueueDPC.