Ertelenmiş prosedür çağrısı (DPC), Microsoft Windows işletim sisteminde sürücülerin belirli işlemleri çalıştırırken başvurabileceği bir kesme işleme mekanizmasıdır. DPC, bir görevin yüksek öncelikli bir kesme isteği seviyesinden (IRQL) etkinleştirilmesine ancak yürütülmemesine izin verir. Bu, bir sürücünün, alt düzey IRQL kodlarının yürütülmesini ertelerken, yüksek düzeyde bir kesme hizmeti rutinini (ISR) hızlı bir şekilde işlemesine izin verir. Sürücüler, giriş/çıkış (G/Ç) işlemlerini planlamak için DPC'leri kullanır. Sürücüler, Windows tarafından donanım aygıtlarıyla iletişim kurmak için kullanılan yazılımlardır.
transferler
Çekirdek modu aygıt sürücüsü, geleneksel olarak bir ses veya video veri akışının harici bir aygıttan veya aygıta aktarımını gerçekleştirir. Aygıt sürücülerinin veri işlemesi kesintiye dayalıdır. Harici donanım, aygıt sürücüsünün bir sonraki veri grubunu aktarmasını istemek için rutin olarak kesintiler oluşturur. Bir aygıt sürücüsü, kesme rutininde verileri anında işleyemez; bu nedenle, işletim sisteminin DPC olan bir geri arama rutinini tetiklemesi gerekir. Çekirdek modu veya sistem modu ve kullanıcı modu, merkezi işlem biriminizin çalışma modlarıdır. Çekirdek, tüm sistem işleme etkinliklerini kontrol eder.
zamanlama
Ertelenmiş yordam çağrısı kavramı yalnızca çekirdek modunda bulunur. İşletim sistemi, aygıt sürücüleri tarafından zamanlanan DPC'leri bir kuyrukta tutar. Sisteminizin kesintileri işlemesi gerekiyorsa, çekirdek DPC kuyruğunu kontrol eder ve kesinti yoksa ve çalışan DPC işlemi yoksa ilk DPC'yi yürütür. DPC, sistemdeki en yüksek öncelikli iş parçacığıdır, çünkü DPC kuyruğu işleme, gönderici bir iş parçacığı seçip bunu CPU'ya atamadan önce gerçekleşir. DPC'lerin üç öncelik düzeyi vardır: düşük, orta ve yüksek.
süreçler
Her DPC, sistem tanımlı bir DPC nesnesi ile bağlantılıdır. Bir sürücü bir DPCForslr yordamını kaydettiğinde, sistem önceden tanımlanmış DPC nesnesini başlatır. Birden fazla DPC gerekliyse, bir sürücü, CustomDPC rutinleri olarak bilinen ek DPC nesneleri oluşturur. DPCForlsr yordamı birkaç işlemi yönetir; giriş/çıkış istek paketleri (IRP) tarafından açıklanan G/Ç işlemini tamamlar, sonraki IRP'yi deques, alınan IRP'deki giriş/çıkış durumunu ve isteği tamamlama sürecini ayarlar.
Rutinler
Normalde, bir kesme hizmeti rutinine sahip bir aygıt sürücüsü, kesmeye dayalı G/Ç işlemlerinin işlenmesini tamamlamak için en az bir DPCForIsr veya CustomDPC rutinine sahiptir. Open Systems Resources, Inc.'e göre, bir sürücünün tek bir DPCForlsr yordamına, bir dizi CustomDPC yordamına veya her ikisine birden sahip olmasının temel nedeni, altında yatan aygıtın doğasına ve desteklemesi gereken G/Ç istekleri kümesine bağlıdır. Bir sürücünün ISR'sinin, DPCForlsr rutinlerini kullanarak kesmeye dayalı G/Ç işlemleri için IoRequestDPC'yi çağırması gerekir. Tersine, çakışan işlemler için, CustomDPC rutinlerini kullanan kesmeye dayalı G/Ç işlemleri için ISR'nin KeInsertQueueDPC'yi çağırması gerekir.