मुझे आश्चर्य है कि अगर कोई भी मदद कर सकता है, तो विशेषज्ञ समस्या का थोड़ा सा।एक कस्टम ड्राइवर के साथ विंडोज यूएसबी कक्षा चालक को बदलें?
मेरे पास एक ऐसा एप्लिकेशन है जिसे कई यूएसबी उपकरणों को पढ़ने और विश्लेषण करने की आवश्यकता है (साथ ही, वे प्रत्येक अलग परीक्षण में नहीं चलते हैं और सिद्धांत में विभिन्न मशीनों पर चल सकते हैं)।
प्रत्येक यूएसबी डिवाइस यूएसबी एचआईडी कक्षा पर आधारित है, और विभिन्न कंपनियों द्वारा निर्मित किया जाता है, इनमें से कोई भी यूएसबी डिवाइस पीसी पर चलाने के लिए डिज़ाइन नहीं किया गया है, लेकिन एक अलग मंच के लिए है, हालांकि प्रयोजनों के लिए उन डिवाइसों का परीक्षण करना जो क्लाइंट ने अनुरोध किया है कि परीक्षण एप्लिकेशन एक पीसी से चलाया जाता है।
कुछ डिवाइस शुरू हो जाएंगे, विंडोज़ द्वारा पहचाने जाएंगे जो विंडोज़ में बने जेनेरिक एचआईडी क्लास ड्राइवर का उपयोग करके उन्हें सही ढंग से शुरू करेंगे और शुरू करेंगे, डिवाइस परीक्षण के लिए डेटा के सही डेटा पैकेट भेजना शुरू कर देंगे।
कुछ डिवाइस शुरू हो जाएंगे, विंडोज़ द्वारा पहचाने जाएंगे जो उन्हें शुरू करने का प्रयास करेंगे, लेकिन उन्हें प्रारंभिक स्थिति में छोड़ने के लिए पूरी तरह से विफल होने में विफल रहेगा। यह ठीक है, क्योंकि मैं वास्तविक प्लेटफ़ॉर्म से प्रारंभिक पैकेट को कैप्चर करने के लिए अपने बीगल प्रोटोकॉल विश्लेषक का उपयोग कर सकता हूं और फिर प्रारंभिक क्रम में शेष पैकेट को दोहराने के लिए LibUSBDotNet लाइब्रेरी का उपयोग कर सकता हूं और उन्हें पैकेट को सही तरीके से भेजने शुरू कर सकता हूं।
मेरी समस्या एक विशेष डिवाइस के साथ है (हालांकि कुछ और हैं जिन्हें मैंने अभी तक परीक्षण नहीं किया है, इसलिए यह संभव है कि उनमें से एक भी एक ही समस्या का प्रदर्शन कर सके)। मुद्दा यह है कि विंडोज एचआईडी क्लास ड्राइवर डिवाइस को पहचानता है और इसे शुरू करने और शुरू करने की कोशिश करता है, यह फैशन के बाद काम करता है और डिवाइस डेटा भेजना शुरू करता है।
समस्या यह है कि भेजा जा रहा डेटा वास्तविक मंच पर भेजा जाता है (जिसमें पूर्ण डेटा का केवल एक सबसेट होता है)। ऐसा लगता है कि विंडोज़ ने डिवाइस को एक अलग मोड में शुरू किया है।
जब मैं अपने पीसी प्रोटोकॉल विश्लेषक का उपयोग कर पीसी और वास्तविक मंच दोनों के प्रारंभिक पैकेट को कैप्चर करता हूं तो मुझे लगता है कि विंडोज कुछ अलग प्रारंभिक पैकेट भेज रहा है। एक बार विंडोज़ ने डिवाइस शुरू करने के बाद सही पैकेट को फिर से भेजने के लिए LibUSBDotNet का उपयोग करना कोई प्रभाव नहीं पड़ता है।
मेरी समस्या यह है कि मुझे मानक एचआईडी क्लास ड्राइवर का उपयोग कर डिवाइस को शुरू करने की कोशिश करने से विंडोज़ को रोकने की जरूरत है, मैंने डिवाइस मैनेजर में ड्राइवर को हटाने का प्रयास किया है, लेकिन यह अभी भी इसे शुरू करता है (और ड्राइवर को जादुई रूप से डिवाइस में पुन: असाइन किया गया है प्रबंधक)। मैं कुछ जांच किया है और वहाँ संभव विकल्प हैं:
जो खिड़कियों विशेष VID को आवंटित करेगा एक विशिष्ट चालक बनाएं/उपकरण की पीआईडी लेकिन कुछ भी नहीं, तो मैं LibUSBDotNet का उपयोग कर सकते है सही भेजने के लिए डिवाइस के लिए प्रारंभिक अनुक्रम मेरे अपने कोड के भीतर से। इस उपकरण के लिए एक उचित ड्राइवर बनाने के लिए
WinUSB की तरह कुछ का उपयोग करें (या संभवतः एक विशिष्ट VID के साथ एक ड्राइवर/पीआईडी द्वारा इस्तेमाल किया जा परिभाषित करेंगे 1.
की तरह एक "मृत" चालक बनाने के लिए विंडोज़ इनबिल्ट यूएसबी एचआईडी क्लास ड्राइवर के वरीयता में खिड़कियां हैं? यदि नहीं तो मैं अपना रास्ता इस मार्ग से नीचे बर्बाद कर दूंगा?
नोट, मेरा मैक समस्या डिवाइस को सही तरीके से शुरू करता है, और मैंने क्लाइंट के सवाल से पूछा है कि क्या एप्लिकेशन मैक के लिए विकसित किया जा सकता है और उनका जवाब केवल विंडोज़ को निराशाजनक था।
मुझे उचित विंडोज ड्राइवर लिखने में कोई अनुभव नहीं है, हालांकि मुझे अपेक्षाकृत कम स्तर पर यूएसबी से बात करने का अनुभव है (इसलिए भाग बहुत ज्यादा चिंता नहीं करता है)। क्या कोई भी कार्रवाई का एक अच्छा तरीका सुझा सकता है (इससे पहले कि मैं संभावित रूप से पीसी के लिए ड्राइवरों को लिखने के लिए जांच कर रहा हूं, यह जांचने के लिए कि मेरे चुने हुए पाठ्यक्रम को खोजने के लिए मुझे क्या चाहिए)।
कोई भी मदद या सुझाव बहुत सराहना की।
धन्यवाद, रिच
जोड़ा नीचे दिए गए सुझावों की कोशिश कर के बाद:
मैं आवश्यक फ़ाइलों को बनाने और उन्हें स्थापित करने के लिए LibUsbDotNet inf विज़ार्ड का उपयोग करने की कोशिश की और यह काम करने के लिए दिखाई दिया - निश्चित रूप से डिवाइस था अब डिवाइस प्रबंधक में libusb-win32 डिवाइस के रूप में दिखाई दे रहा है - छुपा डिवाइस नहीं है और संबंधित ड्राइवर libusb ड्राइवर था। ऐसा करने के बाद भी डिवाइस प्रारंभिक प्रतीत होता है और गलत प्रकार के डेटा पैकेट भेजना शुरू करता है हालांकि अब उन पैकेट को क्लास ड्राइवर द्वारा नियंत्रित नहीं किया जाता है और वे अभी खो गए हैं।
मैं ज़ेडिग में भी आया था जिसमें WinUSB के लिए एक समान इंफ निर्माण विज़ार्ड है और यह बिल्कुल वही परिणाम था।
एक सहयोगी ने सुझाव दिया है कि यह खिड़कियां स्वयं नहीं हो सकती है जो इस मोड में डिवाइस को स्विच कर रही है, बल्कि डिवाइस यह पहचानने के लिए कि यह विंडोज मशीन से जुड़ा हुआ है और स्वयं को इस मोड में स्विच कर रहा है। मुझे संदेह है कि यह मामला है, इस मामले में मैं अटक गया हूं - ग्राहक के साथ एक और बातचीत करने का समय।
सहायता के लिए बहुत धन्यवाद।
क्या आप इस प्रश्न को और संक्षिप्त बना सकते हैं? मुझे संदेह है कि बहुत से लोग यह सब पढ़ेंगे। –