मैं USB IOCTL IOCTL_USB_GET_ROOT_HUB_NAME द्वारा थोड़ा भ्रमित हूँ इसका लक्ष्य उपकरण क्या है? यद्यपि एमएसडीएन डब्लूडीके डॉक्टर स्पष्ट रूप से लक्ष्य डिवाइस को इंगित करता है, फिर भी मैं अभी भी डब्लूडीके द्वारा दिए गए USBVIEW नमूना द्वारा उलझन में हूं। मैं उलझन में हूँ क्योंकि इस प्रकार है: मैं कर्नेल मोड और यूएसबी चालक के लिए नया हूँ Windows में लिख रहा हूँ और अब विंडोज़ ड्राइवर किट से USBVIEW नमूना का अध्ययन कर रहा है। एमएसडीएन पहले चरण के बारे में बताता है कि USBVIEW का नमूना इस प्रकार है: मेजबान नियंत्रकों और जड़ केंद्रों की गणना करें। होस्ट नियंत्रकों के पास "एचसीडीसीएक्स" के सांकेतिक लिंक नाम हैं, जहां एक्स 0 से शुरू होता है। प्रत्येक मेजबान नियंत्रक प्रतीकात्मक लिंक को खोलने के लिए CreateFile () का उपयोग करें। प्रत्येक मेजबान नियंत्रक का प्रतिनिधित्व करने के लिए ट्री व्यू में एक नोड बनाएं। मेजबान नियंत्रक के खोले जाने के बाद मेजबान नियंत्रक को IOCTL_USB_GET_ROOT_HUB_NAME अनुरोध को रूट हब के प्रतीकात्मक लिंक नाम प्राप्त करने के लिए भेजें जो मेजबान नियंत्रक का हिस्सा है लेकिन, मैंने IOCTL_USB_GET_ROOT_HUB_NAME के प्रयोग को एमएसडीएन में दोहराया, जो कहता है: IOCTL_USB_GET_ROOT_HUB_NAME उपयोगकर्ता-मोड I / O नियंत्रण अनुरोध है। यह अनुरोध यूएसबी हब एफडीओ पर ध्यान केंद्रित करता है। ध्यान दें कि IOCTL_USB_GET_ROOT_HUB_NAME आईआरपी का लक्ष्य एक यूएसबी हब एफडीओ है हालांकि, जैसा कि USBVIEW नमूना द्वारा वर्णित है, हम मेजबान नियंत्रक प्रतीकात्मक लिंक को पुनः प्राप्त करते हैं, जिसका मतलब है कि डिवाइस वस्तु एक मेजबान नियंत्रक डिवाइस ऑब्जेक्ट है। हम इसे IOCTL_USB_GET_ROOT_HUB_NAME आईआरपी कैसे भेज सकते हैं? क्या हम किसी USB हब एफडीओ को किसी तरह पहले वापस लेना चाहिए? मुझे लगता है कि यह एक दुर्भाग्यपूर्ण कॉपी-पेस्ट त्रुटि है वैसे, आपको सिर्फ संदर्भ में डालने के लिए: शब्द "एफडीओ" केवल ढीले से उपयोगकर्ता मोड की चिंताओं - ऐसा नहीं है कि आप किसी भी अन्य "xDO" को वैसे भी एक्सेस कर सकते हैं। यदि आप इस आईओसीटीएल को कर्नेल मोड में भेजना चाहते हैं, तो निश्चित रूप से, आप डिवाइस स्टैक में किसी भी विशिष्ट डिवाइस ऑब्जेक्ट के लिए एक आईओसीटीएल भेज सकते हैं ("क्या कर सकते हैं" इसका मतलब यह नहीं है, आप को याद रखना चाहिए)। हालांकि, उपयोगकर्ता मोड अनुप्रयोग से एक इस प्रश्न को 28 मार्च को पूछा गया था, इसलिए मुझे वाकई आशा है कि आप इसे अभी तक हल कर चुके हैं।)
IOCTL_USB_GET_ROOT_HUB_NAME वास्तव में मेजबान नियंत्रक को भेजा जाता है और इसलिए यूएसबी होस्ट नियंत्रक एफडीओ द्वारा संभाला जाता है।
DeviceIoControl हमेशा आईओसीटीएल को डिवाइस स्टैक के शीर्ष पर भेजता है (इसलिए यह सभी फिल्टर, एफडीओ और पीडीओ से नीचे जाता है)।
Comments
Post a Comment