Panggilan prosedur tertangguh (DPC) adalah mekanisme pengendalian interrupt dalam sistem operasi Microsoft Windows yang mana pemandu boleh merujuk semasa menjalankan proses tertentu. DPC membolehkan tugas diaktifkan, tetapi tidak dilaksanakan, dari tahap permintaan interrupt yang sangat diprioritaskan (IRQL). Ini membenarkan pemandu memproses rutin perkhidmatan interupsi peringkat tinggi (ISR) dengan cepat sambil menangguhkan pelaksanaan kod IRQL peringkat rendah. Pemandu menggunakan DPC untuk menjadualkan operasi input / output (I / O). Pemacu adalah perisian yang digunakan oleh Windows untuk berkomunikasi dengan peranti perkakasan.
Pemindahan
Pemandu peranti mod kernel secara konvensional mengendalikan pemindahan aliran data audio atau video dari atau ke peranti luaran. Pemprosesan data pemacu peranti adalah didorong oleh gangguan. Perkakasan luaran secara rutin menjana sampukan untuk meminta pemandu peranti untuk memindahkan batch data seterusnya. Pemandu peranti tidak boleh memproses data dengan serta-merta dalam rutin mengganggunya; oleh itu, sistem operasi perlu mencetuskan rutin panggilan balik, iaitu DPC. Mod kernel, atau mod sistem, dan mod pengguna adalah mod operasi unit pemprosesan pusat anda. Kernel mengawal semua aktiviti pemprosesan sistem.
Penjadualan
Konsep panggilan prosedur tertunda hanya ada dalam mod kernel sahaja. Sistem pengendalian menyimpan DPC yang dijadualkan oleh pemandu peranti dalam barisan. Sekiranya sistem anda perlu memproses sampukan, kernel memeriksa barisan DPC dan melaksanakan DPC pertama jika tidak ada gangguan dan tiada proses DPC berjalan. DPC adalah benang keutamaan tertinggi dalam sistem, kerana pemprosesan giliran DPC berlaku sebelum penghantar memilih thread dan menyerahkannya kepada CPU. DPC mempunyai tiga peringkat keutamaan: rendah, sederhana dan tinggi.
Proses
Setiap DPC dikaitkan dengan satu objek DPC yang ditentukan oleh sistem. Apabila pemandu mendaftarkan rutin DPCForslr, sistem ini memulakan objek DPC yang telah ditetapkan sebelumnya. Sekiranya lebih daripada satu DPC diperlukan, pemandu mencipta objek DPC tambahan yang dikenali sebagai rutin CustomDPC. Rutin DPCForlsr mengendalikan beberapa proses; ia melengkapkan operasi I / O yang diterangkan oleh paket permintaan / output permintaan (IRP), deques IRP seterusnya, menetapkan status input / output dalam IRP yang diterima dan proses untuk menyelesaikan permintaan.
Rutin
Biasanya, pemandu peranti yang mempunyai rutin perkhidmatan interupsi mempunyai sekurang-kurangnya satu rutin DPCForIsr atau CustomDPC untuk menyelesaikan pemprosesan operasi I / O yang dipandu terganggu. Menurut Open Systems Resources, Inc., sebab utama pemandu mempunyai rutin DPCForlsr tunggal, satu set rutin CustomDPC atau kedua-duanya bergantung pada sifat peranti pendasarnya dan set permintaan I / O yang mesti disokong. ISR pemandu perlu memanggil IoRequestDPC untuk operasi I / O yang diganggu oleh gangguan menggunakan rutin DPCForlsr. Sebaliknya, untuk operasi yang bertindih, operasi I / O yang diganggu oleh gangguan menggunakan rutin CustomDPC, ISR perlu memanggil KeInsertQueueDPC.