आस्थगित प्रक्रिया कॉल (डीपीसी) माइक्रोसॉफ्ट विंडोज ऑपरेटिंग सिस्टम में एक बाधा-हैंडलिंग तंत्र है, जिसमें ड्राइवर कुछ प्रक्रियाओं को चलाते समय संदर्भ दे सकते हैं। डीपीसी एक कार्य को सक्रिय करने की अनुमति देता है, लेकिन निष्पादित नहीं किया जाता है, अत्यधिक प्राथमिकता वाले व्यवधान अनुरोध स्तर (आईआरक्यूएल) से। यह एक ड्राइवर को निम्न-स्तरीय IRQL कोड के निष्पादन को स्थगित करते हुए उच्च-स्तरीय व्यवधान सेवा दिनचर्या (ISR) को जल्दी से संसाधित करने की अनुमति देता है। इनपुट / आउटपुट (I / O) संचालन को शेड्यूल करने के लिए ड्राइवर DPC का उपयोग करते हैं। ड्राइवर्स हार्डवेयर उपकरणों के साथ संवाद करने के लिए विंडोज द्वारा उपयोग किए जाने वाले सॉफ्टवेयर हैं।
स्थानांतरण
कर्नेल मोड डिवाइस ड्राइवर पारंपरिक रूप से किसी बाहरी डिवाइस से ऑडियो या वीडियो डेटा स्ट्रीम के हस्तांतरण को संभालता है। डिवाइस ड्राइवरों का डेटा प्रोसेसिंग बाधित-संचालित है। बाहरी हार्डवेयर नियमित रूप से डेटा के अगले बैच को स्थानांतरित करने के लिए डिवाइस ड्राइवर का अनुरोध करने के लिए व्यवधान उत्पन्न करता है। डिवाइस ड्राइवर अपनी रुकावट की दिनचर्या में डेटा को तुरंत संसाधित नहीं कर सकता है; इस प्रकार, ऑपरेटिंग सिस्टम को कॉलबैक रूटीन को ट्रिगर करना होगा, जो कि डीपीसी है। कर्नेल मोड, या सिस्टम मोड, और उपयोगकर्ता मोड आपके केंद्रीय प्रसंस्करण इकाई के संचालन के तरीके हैं। कर्नेल सभी सिस्टम प्रोसेसिंग गतिविधियों को नियंत्रित करता है।
निर्धारण
आस्थगित प्रक्रिया कॉल की अवधारणा केवल कर्नेल मोड में मौजूद है। ऑपरेटिंग सिस्टम डिवाइस ड्राइवर्स द्वारा निर्धारित DPCs को एक कतार में रखता है। यदि आपके सिस्टम को बाधित करने की प्रक्रिया करने की आवश्यकता है, तो कर्नेल डीपीसी कतार की जांच करता है और यदि कोई डीपीसी प्रक्रिया नहीं चल रही है और कोई डीपीसी प्रक्रिया नहीं चल रही है तो पहले डीपीसी को निष्पादित करता है। DPC सिस्टम में सर्वोच्च प्राथमिकता वाला थ्रेड है, क्योंकि डिस्पैचर थ्रेड चुनने से पहले DPC कतार प्रसंस्करण होता है और यह CPU को असाइन करता है। डीपीसी में तीन प्राथमिकता स्तर होते हैं: निम्न, मध्यम और उच्च।
प्रक्रियाओं
प्रत्येक डीपीसी एक सिस्टम-परिभाषित डीपीसी ऑब्जेक्ट के साथ जुड़ा हुआ है। जब कोई ड्राइवर DPCForslr रूटीन पंजीकृत करता है, तो सिस्टम पहले से परिभाषित DPC ऑब्जेक्ट को इनिशियलाइज़ करता है। यदि एक से अधिक डीपीसी की आवश्यकता होती है, तो एक ड्राइवर अतिरिक्त DPC ऑब्जेक्ट बनाता है जिसे CustomDPC रूटीन के रूप में जाना जाता है। DPCForlsr दिनचर्या कई प्रक्रियाओं को संभालती है; यह इनपुट / आउटपुट अनुरोध पैकेट (IRP) द्वारा वर्णित I / O ऑपरेशन को पूरा करता है, अगले IRP को डिलीट करता है, प्राप्त IRP में इनपुट / आउटपुट स्थिति और अनुरोध को पूरा करने के लिए प्रक्रिया सेट करता है।
दिनचर्या
आम तौर पर, एक डिवाइस ड्राइवर जिसमें एक बाधा सेवा दिनचर्या होती है, जिसमें बाधित-संचालित I / O संचालन की प्रक्रिया को पूरा करने के लिए कम से कम एक DPCForIsr या CustomDPC दिनचर्या होती है। ओपन सिस्टम्स रिसोर्सेज, इंक। के अनुसार, मूल कारण ड्राइवर की एकल DPCForlsr दिनचर्या होती है, CustomDPC दिनचर्या का एक सेट या दोनों उसके अंतर्निहित डिवाइस की प्रकृति पर निर्भर करता है और I / O अनुरोधों के सेट का समर्थन करना चाहिए। DPCForlsr रूटीन का उपयोग करते हुए बाधित-संचालित I / O संचालन के लिए एक ड्राइवर की ISR को IoRequestDPC को कॉल करने की आवश्यकता होती है। इसके विपरीत, ओवरलैप्ड संचालन के लिए, CustomDPC रूटीन का उपयोग करते हुए I / O संचालन बाधित, ISR को KeInsertQueueDPC को कॉल करने की आवश्यकता है।