استدعاء الإجراء المؤجل (DPC) هو آلية لمعالجة المقاطعة في نظام التشغيل Microsoft Windows يمكن للسائقين الرجوع إليها عند تشغيل عمليات معينة. يسمح DPC بتنشيط مهمة ، ولكن لا يتم تنفيذها ، من مستوى طلب مقاطعة عالي الأولوية (IRQL). يسمح هذا للسائق بمعالجة روتين خدمة المقاطعة عالي المستوى (ISR) بسرعة مع إرجاء تنفيذ رموز IRQL ذات المستوى الأدنى. تستخدم برامج التشغيل DPCs لجدولة عمليات الإدخال / الإخراج (I / O). برامج التشغيل هي برامج يستخدمها Windows للتواصل مع الأجهزة.
التحويلات
يتعامل برنامج تشغيل جهاز وضع kernel بشكل تقليدي مع نقل دفق بيانات الصوت أو الفيديو من أو إلى جهاز خارجي. تعتمد معالجة بيانات برامج تشغيل الجهاز على المقاطعة. تقوم الأجهزة الخارجية بشكل روتيني بإنشاء مقاطعات لتطلب من برنامج تشغيل الجهاز نقل الدفعة التالية من البيانات. لا يمكن لبرنامج تشغيل الجهاز معالجة البيانات على الفور في روتين المقاطعة الخاص به ؛ وبالتالي ، يحتاج نظام التشغيل إلى تشغيل روتين رد الاتصال ، وهو DPC. وضع kernel ، أو وضع النظام ، ووضع المستخدم هي أوضاع تشغيل وحدة المعالجة المركزية الخاصة بك. تتحكم النواة في جميع أنشطة معالجة النظام.
الجدولة
يوجد مفهوم استدعاء الإجراء المؤجل في وضع kernel فقط. يحافظ نظام التشغيل على DPCs المجدولة بواسطة برامج تشغيل الجهاز في قائمة انتظار. إذا احتاج نظامك إلى معالجة المقاطعات ، فإن kernel يتحقق من قائمة انتظار DPC وينفذ DPC الأول إذا لم تكن هناك مقاطعات ولا توجد عمليات DPC قيد التشغيل. DPC هو أعلى مؤشر ترابط ذي أولوية في النظام ، حيث تحدث معالجة قائمة انتظار DPC قبل أن يختار المرسل سلسلة رسائل وتعيينها إلى وحدة المعالجة المركزية. تحتوي DPCs على ثلاثة مستويات ذات أولوية: منخفضة ومتوسطة وعالية.
العمليات
يتم ربط كل DPC بكائن DPC واحد محدد من قبل النظام. عندما يسجل برنامج تشغيل روتين DPCForslr ، يقوم النظام بتهيئة كائن DPC المحدد مسبقًا. في حالة الحاجة إلى أكثر من DPC واحد ، يقوم برنامج التشغيل بإنشاء كائنات DPC إضافية تُعرف باسم إجراءات CustomDPC. يعالج روتين DPCForlsr عدة عمليات؛ يكمل عملية الإدخال / الإخراج الموصوفة في حزم طلب الإدخال / الإخراج (IRP) ، ويفصل IRP التالي ، ويعين حالة الإدخال / الإخراج في IRP المستلم وعملية إكمال الطلب.
الروتين
عادةً ، يحتوي برنامج تشغيل الجهاز الذي يحتوي على روتين خدمة المقاطعة على روتين DPCForIsr أو CustomDPC واحد على الأقل لإكمال معالجة عمليات الإدخال / الإخراج التي تعتمد على المقاطعة. وفقًا لـ Open Systems Resources، Inc. ، فإن السبب الأساسي لوجود برنامج تشغيل روتيني DPCForlsr واحد أو مجموعة من إجراءات CustomDPC أو كليهما يعتمد على طبيعة الجهاز الأساسي الخاص به ومجموعة طلبات الإدخال / الإخراج التي يجب أن يدعمها. يحتاج برنامج ISR للسائق إلى استدعاء IoRequestDPC لعمليات الإدخال / الإخراج المدفوعة بالمقاطعة باستخدام إجراءات DPCForlsr. على العكس من ذلك ، بالنسبة للعمليات المتداخلة وعمليات الإدخال / الإخراج التي تعتمد على المقاطعة باستخدام إجراءات CustomDPC ، يحتاج ISR إلى استدعاء KeInsertQueueDPC.