2013-08-15 7 views
9

मुझे यह जानने की जरूरत है कि वर्तमान में किस प्रकार के यूएसबी डिवाइस सिस्टम में उपयोग किए जाते हैं। USB डिवाइस के क्लास कोड के बारे में USB specification है। लेकिन मुझे डिवाइस का प्रकार नहीं मिल रहा है, डब्लूएमआई अनुरोध WQL: select * from Win32_UsbHub कक्षा कोड, सबक्लास कोड, प्रोटोकॉल प्रकार फ़ील्ड पर शून्य मान दें। वर्तमान में उपयोग में यूएसबी डिवाइस प्रकार का पता लगाने के लिए कोई विचार?सी # यूएसबी डिवाइस क्लासकोड (यूएसबी डिवाइस प्रकार) का पता लगाएं

मेरे वर्तमान कोड:

ManagementObjectCollection collection; 
using (var searcher = new ManagementObjectSearcher(@"Select * From Win32_USBHub")) 
{ 
    collection = searcher.Get(); 
    foreach (var device in collection) 
     { 
      var deviceId = (string)GetPropertyValue("DeviceID"); 
      var pnpDeviceId = (string)GetPropertyValue("PNPDeviceID"); 
      var descr = (string)device.GetPropertyValue("Description"); 
      var classCode = device.GetPropertyValue("ClassCode"); //null here 
     } 
} 
+0

आप 'ManagementScope',' ObjectQuery' और 'ManagementObjectSearcher' सहित पूर्ण उदाहरण पोस्ट कर सकते हैं उपयोग? – SwDevMan81

+0

प्रबंधनऑब्जेक्ट कोलेक्शन संग्रह; का उपयोग कर (var searcher = new managementObjectSearcher (@ "Win32_USBHub से * चुनें *)) संग्रह = searcher.Get(); – MelnikovI

+0

wbemtest.exe उपकरण समान प्रभाव देते हैं: 'क्लास कोड, सबक्लास कोड, प्रोटोकॉल प्रकार' फ़ील्ड शून्य हैं – MelnikovI

उत्तर

4

तुम एक प्रारंभिक बिंदु के रूप USB View Source डाउनलोड कर सकते हैं। यह एक पीसी (सी #) पर सभी यूएसबी उपकरणों के माध्यम से loops और प्रत्येक के बारे में जानकारी खींचता है। Class code, Subclass code, और Protocol प्रकार फ़ील्ड प्राप्त करने के लिए, आपको इसे थोड़ा संशोधित करने की आवश्यकता होगी। नीचे बदलें और इसे चलाएं और आपको पेड़ दृश्य में आइटम पर क्लिक करके प्रत्येक यूएसबी डिवाइस पर जानकारी मिल जाएगी (जानकारी दाएं पैनल में दिखाई देगी)।

संशोधन USB.cs रहे हैं:

// Add the following properties to the USBDevice class 
// Leave everything else as is 
public byte DeviceClass 
{ 
    get { return DeviceDescriptor.bDeviceClass; } 
} 

public byte DeviceSubClass 
{ 
    get { return DeviceDescriptor.bDeviceSubClass; } 
} 

public byte DeviceProtocol 
{ 
    get { return DeviceDescriptor.bDeviceProtocol; } 
} 

fmMain.cs में संशोधन

// Add the following lines inside the ProcessHub function 
// inside the "if (port.IsDeviceConnected)" statement 
// Leave everything else as is 
if (port.IsDeviceConnected) 
{ 
    // ... 
    sb.AppendLine("SerialNumber=" + device.SerialNumber); 
    // Add these three lines 
    sb.AppendLine("DeviceClass=0x" + device.DeviceClass.ToString("X")); 
    sb.AppendLine("DeviceSubClass=0x" + device.DeviceSubClass.ToString("X")); 
    sb.AppendLine("DeviceProtocol=0x" + device.DeviceProtocol.ToString("X")); 
    // ... 
} 
+0

ऐसा लगता है कि मुझे इसकी ज़रूरत है, मैं इसे आजमाउंगा। – MelnikovI

+0

@ पीटरजे - ऐसा लगता है कि फ़ाइलों को पुनर्गठित किया गया था, मैंने लिंक अपडेट किया है। – SwDevMan81

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