USB डिवाइस पहचान कैसे काम करती है?


16

मैं उत्सुक हूं कि विंडोज में यूएसबी डिवाइस की मान्यता कैसे काम करती है। मुझे लगता है कि यह कुछ इस तरह है:

  • जब आप किसी उपकरण में प्लग करते हैं, तो यह विंडोज़ को बताता है "यहाँ मेरा डिवाइस आईडी है जो आपको बताता है कि मैं क्या हूँ"
  • विंडोज यह देखने के लिए कि क्या कोई ड्राइवर स्थापित किया गया है, उस डिवाइस आईडी से मेल खाता है। ड्राइवर शायद विंडोज को बताता है कि डिवाइस को क्या कहा जाना चाहिए - जैसे "ब्लैकबेरी कर्व" या "कैनन प्रिंटर"
  • यदि हां, तो यह किसी तरह उस डिवाइस को उस ड्राइवर के साथ जोड़ देता है
  • अन्यथा, यह ऑनलाइन मिलान करने वाले ड्राइवर की तलाश करता है (यदि आप इसे करते हैं)

क्या मैं सही हू? यदि हां, तो यह अभी भी कुछ प्रश्न छोड़ता है।

  • जब आप ड्राइवर स्थापित करते हैं, तो वे कहां जाते हैं? क्या वे एक फ़ोल्डर में फ़ाइलें हैं, या क्या उन्हें रजिस्ट्री में जोड़ा जाता है?
  • जब यह पहली बार डिवाइस को पहचानता है, सोचता है, तो विंडोज क्या कर रहा है, और अंत में कहता है "आपका नया डिवाइस इंस्टॉल हो गया है और उपयोग के लिए तैयार है?"
  • लापता ड्राइवरों के लिए विंडोज कहां दिखता है? क्या यह उनके अपने डेटाबेस में है? क्या डिवाइस निर्माता ड्राइवरों को Microsoft में शामिल करने के लिए प्रस्तुत करते हैं?

क्या कोई समझा सकता है कि यह प्रक्रिया वास्तव में कैसे काम करती है? इसके अलावा, अन्य OSes यह अलग तरीके से करते हैं?

जवाबों:


24

USB बस को भौतिक रूप से डिज़ाइन किया गया है ताकि प्लग को डालने (हटाने) के कार्य को होस्ट नियंत्रक द्वारा पहचाना जा सके। जब यह "प्लग" घटना होती है, तो मेजबान नियंत्रक अपने डिवाइस ड्राइवर को सूचित करता है जो बस को स्कैन करता है और प्रत्येक डिवाइस को खुद को पहचानने के लिए कहता है।

सभी USB उपकरणों में डिवाइस के बारे में जानकारी का एक संग्रह होता है, जिसे डिस्क्रिप्टर कहा जाता है। डिवाइस डिस्क्रिप्टर को एक ही कमांड के साथ सभी डिवाइस से पुनर्प्राप्त किया जाता है। यह USB बस के लिए एक डिवाइस ड्राइवर को एक नव कनेक्टेड डिवाइस को प्रभावी ढंग से पूछने के लिए अनुमति देता है कि वह क्या है, और एक उचित प्रतिक्रिया प्राप्त करने की अपेक्षा करता है।

सभी डिस्क्रिप्टर में से, कुछ का उपयोग सीधे तौर पर अधिकांश डिवाइसों के ड्राइवर से मिलान करने के लिए किया जाता है। ऐसा इसलिए है क्योंकि USB उपकरणों की कक्षाओं को परिभाषित करता है, और आमतौर पर प्रत्येक डिवाइस वर्ग के लिए सिस्टम ड्राइवर किसी भी उपकरण को संभालने के लिए पर्याप्त होता है जो उस वर्ग में होने का दावा करता है।

सभी कीबोर्ड उदाहरण के लिए, MID, टैबलेट और गेम कंट्रोलर्स के रूप में HID (ह्यूमन इंटरफ़ेस) क्लास में होने का दावा करेंगे। HID वर्ग में कई उपवर्ग (कीबोर्ड, चूहे इत्यादि) होते हैं, इसलिए प्रत्येक को अपेक्षित तरीके से नियंत्रित किया जाता है।

अधिकांश डिस्क-जैसे डिवाइस मास स्टोरेज क्लास में होने का दावा करेंगे, और सिस्टम ड्राइवर सिर्फ उन लोगों के लिए भी काम करता है।

वर्ग और उपवर्ग के अलावा, विवरणकर्ताओं में एक विक्रेता आईडी (VID), उत्पाद आईडी (PID), और संशोधन भी शामिल हैं। विक्रेता आईडी मानक समिति द्वारा सौंपी जाती हैं (ज्यादातर समस्या के क्रम में लेकिन कुछ कंपनियों को विशेष अनुरोध मिला: उदाहरण के लिए इंटेल 0x8086 है)। उत्पाद ID प्रत्येक विक्रेता द्वारा निर्दिष्ट किए जाते हैं, और VID और PID का संयोजन प्रत्येक रिलीज़ किए गए उत्पाद के लिए अद्वितीय होना चाहिए।

जब कोई उपकरण पहली बार स्थापित किया जाता है, तो VID, PID, संशोधन, वर्ग और उपवर्ग का उपयोग लोड किए गए डिवाइस ड्राइवर को चुनने के लिए पूर्वानुमेय तरीके से किया जाता है। विक्रेता और उत्पाद विशिष्ट नाम होने से विक्रेता के लिए एक उपकरण को अनुकूलित करना संभव हो जाता है जिसे स्टॉक सिस्टम चालक द्वारा अन्यथा (लगभग) सही ढंग से संभाला जा सकता है।

एक अन्य महत्वपूर्ण वर्णनकर्ता डिवाइस क्रमांक है। यदि किसी डिवाइस में एक सीरियल नंबर है, तो इसे पहचाना जा सकता है और उसी तरह से इलाज किया जा सकता है जब एक अलग भौतिक यूएसबी पोर्ट का उपयोग किया जाता है। यह स्टोरेज डिवाइसेस के लिए महत्वपूर्ण है ताकि उन्हें समान ड्राइव लेटर सौंपा जाए, और सीरियल पोर्ट एडेप्टर और मॉडेम जैसे डिवाइस के लिए ताकि उन्हें वही COM पोर्ट पदनाम दिया जाए।

इस पूरी प्रक्रिया को MSDN में प्रलेखित किया गया है , लेकिन विवरण कई स्थानों पर फैले हुए हैं।


पद्धतिगत स्पष्टीकरण के लिए धन्यवाद। बहुत ही रोचक!
नाथन लॉन्ग

3
जब मैंने डॉक्यूमेंटेशन और सैंपल से इन विवरणों को प्राप्त करने में घंटों बिताए तो एक अप्रत्याशित काम था जब मैंने विंडोज के लिए अपना पहला डिवाइस ड्राइवर लिखा। मुझे इसका परिणाम साझा करने में खुशी हो रही है ...
RBerteig

7

प्रशन :

  • निर्देशिकाएँ: ड्राइवर 2 निर्देशिकाओं में स्थापित हैं। चल रहे भाग को (ज्यादातर मामलों में)% RootDir% \ system32 में स्थापित किया जाता है, डिवाइस सूचना भाग% RootDir% \ inf में स्थापित हो जाता है। Inf dir के अंतर्गत, एक स्थापित / पंजीकृत ड्राइवर के लिए एक oem * .inf फ़ाइल बनाई जाती है। (* एक संख्या है)। विस्टा के तहत ड्राइवर को एक संदर्भ के रूप में% RootDir% \ system32 \ driverstore निर्देशिका में कॉपी किया जाता है जब अभी तक सामना नहीं किए गए उपकरणों को स्थापित करना।
  • रजिस्ट्री: ड्राइवर को कर्नेल मोड सेवा के रूप में स्थापित किया जाता है। इसके लिए ड्राइवर सेवा के लिए कुछ रजिस्ट्री कुंजी बनाई जाती हैं। बस ड्राइवर के नीचे एक और जगह होती है, जहां संबंधित उपकरणों को एक अलग डिवाइस इंस्टेंस कुंजी मिलती है। इस कुंजी में, डिवाइस में इस डिवाइस के लिए वर्तमान में उपयोग किए गए ड्राइवर का संदर्भ है।
  • डिवाइस 'आगमन': जब बस चालक को अपनी बस में एक नया उपकरण मिलता है, तो यह अपनी कुंजी के तहत एक महत्वपूर्ण रजिस्ट्री बनाता है जो एक अद्वितीय डिवाइस इंस्टेंस आईडी के अनुरूप होता है, जिसका उपयोग सिस्टम पर डिवाइस की विशिष्ट पहचान के लिए किया जा सकता है। यदि यह कुंजी पहले से मौजूद है, तो बस चालक इस नोड द्वारा संदर्भित डिवाइस को लोड करने का प्रयास करता है। जब यह नोड मौजूद नहीं होता है, या ड्राइवर लोड नहीं करता है, तो सिस्टम डिवाइस के लिए एक संगत ड्राइवर खोजने की कोशिश करता है, पंजीकृत डिवाइस ड्राइवरों को% RootDir% \ inf के तहत स्कैन करके। ड्राइवर जो इस उपकरण के लिए अर्हता प्राप्त करते हैं, गणना और क्रमबद्ध हो जाते हैं। सबसे अच्छा ड्राइवर तब चुना जाता है और डिवाइस के लिए लोड किया जाता है।
  • ड्राइवर की खोज: ड्राइवरों को पहले निर्देशिका में खोजा जाता है। जब कोई ड्राइवर नहीं मिलता है, तो विंडोज़ उपयोगकर्ता से पूछती है, अगर वह ड्राइवरों को प्रदान कर सकता है या यदि उसे Microsoft सर्वर पर देखना चाहिए। ड्राइवर निर्माता Microsoft डिवाइस ड्राइवर सर्वर पर शामिल करने के लिए अपने ड्राइवरों को प्रस्तुत कर सकते हैं।

लुनाटिक के पास उत्तर का पहला भाग है कि तथाकथित बस चालक डिवाइस को कैसे ढूंढता है।


3

मैं usb के बारे में एक अच्छी किताब की सिफारिश करना चाहूंगा:

  • जन एक्सलसन द्वारा USB पूरा

मुझे पता है कि आपने इसके लिए नहीं कहा था, लेकिन यूएसबी उपकरणों के बारे में थोड़ा जानना अच्छा है जो कनेक्ट करने वाले हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.