2013-05-15 6 views
5

विजुअल स्टूडियो 2012 में एक विंडोज चालक प्रोजेक्ट बनाने के दौरान, आपके पास से चुनने के लिए कई अलग-अलग विकल्प हैं।डब्लूडीएम ड्राइवर, एक केएमडीएफ चालक और यूएमडीएफ चालक के बीच क्या अंतर है?

एक page on MSDN है जो आपको आपके डिवाइस के लिए सही ड्राइवर मॉडल चुनने में मदद करता है। हालांकि यह डब्लूडीएम, केएमडीएफ और यूएमडीएफ चालक प्रकारों के बीच सटीक अंतर स्पष्ट रूप से स्पष्ट नहीं करता है, और कौन सा मॉडल चुनना है।

मैं डब्लूडीएम, केएमडीएफ और यूएमडीएफ ड्राइवर मॉडल के बीच अंतरों पर एक स्पष्टीकरण की तलाश में हूं, इसलिए विंडोज चालक डेवलपर्स को सही मॉडल चुनने के लिए शुरुआत करना आसान है।

उत्तर

10

संक्षेप में:

  • WDM विंडोज ड्राइवर मॉडल के लिए खड़ा है। प्रत्येक कर्नेल ड्राइवर अनिवार्य रूप से एक डब्लूडीएम ड्राइवर है।
  • KMDF कर्नेल मोड ड्राइवर फ्रेमवर्क के लिए खड़ा है। यह एक ढांचा है जो कई ओएस प्रोग्रामिंग पहलुओं को घेरता है और छुपाता है जो ड्राइवर डेवलपर से संबंधित होना चाहिए, भले ही उसके ड्राइवर के व्यावसायिक तर्क से कोई लेना-देना न हो। कुछ कार्यक्षमता केएमडीएफ ढांचे में मौजूद नहीं है और फ्रेमवर्क का उपयोग किए बिना मूल कर्नेल कॉल की आवश्यकता होगी (लेकिन ज्यादातर स्थितियों में यह मामला नहीं है)।
  • UMDF उपयोगकर्ता मोड ड्राइवर फ्रेमवर्क के लिए खड़ा है। यह केएमडीएफ के लिए एक पूरक ढांचा है और साथ में वे WDF (विंडोज चालक फ्रेमवर्क) शामिल हैं। यूएमडीएफ उपयोगकर्ता मोड प्रोग्रामिंग बनाम कर्नेल मोड के सभी लाभ होने के साथ उपयोगकर्ता मोड में ड्राइवर बनाने की अनुमति देता है। स्वाभाविक रूप से, यूएमडीएफ चालक केएमडीएफ/डब्लूडीएम ड्राइवरों की तुलना में सीमाएं हैं और ज्यादातर स्थितियों में इसे कम से कम कुछ कार्यक्षमता वाले कर्नेल समकक्ष की आवश्यकता होगी।

आपके द्वारा संदर्भित पृष्ठ बहुत व्यापक है। गहरी समझ के लिए आपको इसमें रहना चाहिए।

+1

स्पष्टीकरण के लिए धन्यवाद, लेकिन एक बात अभी तक मुझे पूरी तरह से स्पष्ट नहीं है। आप कहते हैं कि प्रत्येक कर्नेल ड्राइवर एक डब्लूडीएम ड्राइवर है, लेकिन सभी डब्लूडीएम ड्राइवर कर्नेल ड्राइवर हैं? वीएसएम 2 और केएमडीएफ वीएस2012 में दो अलग-अलग टेम्पलेट क्यों हैं? – lesderid

+3

@lesderid Win32 और MFC के संदर्भ में इसके बारे में सोचें (मुझे उम्मीद है कि आप दोनों से परिचित हैं)। जबकि प्रत्येक एमएफसी प्रोग्राम एक Win32 प्रोग्राम है, हर Win32 प्रोग्राम एक एमएफसी प्रोग्राम नहीं है। केएमडीएफ एमएफसी के समान है: एक ढांचा जिसका उपयोग डब्लूडीएम की कुछ जटिलताओं को छिपाने के लिए किया जा सकता है।इसलिए, टेम्पलेट भिन्न होते हैं क्योंकि वे जो उत्पन्न करते हैं वह अलग होता है: कोई एक प्रकार का प्रोजेक्ट उत्पन्न करता है, और दूसरा एक और प्रकार उत्पन्न करता है। अपने अन्य प्रश्न का उत्तर देने के लिए, सभी आधुनिक * कर्नेल * ड्राइवर डब्लूडीएम ड्राइवर हैं; यद्यपि अन्य "विरासत" कर्नेल ड्राइवर मॉडल हैं, लेकिन वे आधिकारिक रूप से समर्थित नहीं हैं और इनका उपयोग नहीं किया जाना चाहिए। –

5

मैं MSDN से articel चाहते: Differences Between WDM and KMDF

  • डब्ल्यूडीएम के बाद से PNP डिवाइस ड्राइवर (> = Win2k) ड्राइवर मॉडल है। इस मॉडल में आपको अपनी कार्यक्षमता के लिए प्रासंगिक कार्यों को संभालना होगा। वाल्टर ओनी (माइक्रोसॉफ्ट विंडोज चालक मॉडल प्रोग्रामिंग) ने इस तरह के कार्यों को पुन: उपयोग करने के लिए बाहरी डिवाइस चालक पुस्तकालयों को आउटसोर्स किया।

  • डब्ल्यूडीएफ/किमीडीएफ डिवाइस ड्राइवरों के विकास को सरल बनाने की कोशिश करता है। कार्यों को ओवरराइट किया जा सकता है या डिफ़ॉल्ट हैंडलर का उपयोग किया जा सकता है। स्मृति और कतारों का प्रशासन बहुत सरल और सुरक्षित किया गया है।

  • यूएमडीएफ उपयोगकर्ता मोड में समान फ़ंक्शन कॉल का उपयोग कर्नेल मोड में फ़ंक्शन कॉल के रूप में करने का प्रयास करने का प्रयास किया।

उम्मीद है कि बहुत देर हो चुकी है। प्रश्नोत्तरी पहली बार देखी गई जब मैंने लेखन समाप्त कर लिया था!

+1

केएमडीएफ + यूएमडीएफ = डब्ल्यूडीएफ – SomeWittyUsername

संबंधित मुद्दे