2012-02-12 1 views
17

से विशिष्ट डिवाइस प्रकार प्राप्त करें मैं यह जानना चाहता हूं कि कार्ड रीडर में कोई एसडी (या अन्य कार्ड) कब डाला जाता है। मुझे WM_DEVICECHANGE के बारे में पता है लेकिन मुझे ड्राइव अक्षर दिए गए विशिष्ट डिवाइस प्रकार की जानकारी प्राप्त करने की आवश्यकता है। उदाहरण के लिए, मैं कार्ड पाठक में किसी भी कार्ड के बीच "सामान्य" फ्लैश ड्राइव से अंतर करना चाहता हूं। GetDriveType() पर्याप्त परिष्कृत प्रतीत नहीं होता है। मेरे अन्य विकल्प क्या हैं?ड्राइव अक्षर

मैं विंडोज 7 समाधान से खुश हूं। मुझे पिछड़े संगतता की आवश्यकता नहीं है।

क्या इस प्रकार का परिष्करण संभव है?

मुझे this topic मिला है जो एक संतोषजनक उत्तर प्रदान नहीं करता है। This one जाने का तरीका लगता है लेकिन नमूना कोड के लिए कोई नमूना कोड या पॉइंटर्स नहीं है। यह अविश्वसनीय है कि किसी ने भी इस तरह के एक आम अनुरोध के लिए एक कामकाजी नमूना पाई है।

[संपादित करें]

मैं भी found this है। प्रदान किए गए नमूने में कुछ त्रुटियां हैं लेकिन इसे ठीक करने के बाद भी मुझे कोई परिणाम नहीं मिला है। एक डिवाइस के लिए जिसमें एक एसडी कार्ड डाला गया है, मुझे के बजाय pDeviceDesc.BusType में BusTypeUnknown मिलता है। यह सीधा लग रहा था और अभी भी असफल रहा।

+1

क्या आपने अभी तक WMI की कोशिश की है? Win32_LogicalDrive और Win32_PhysicalMedia आशाजनक लग रहा है। किसी भी कोड लिखने से पहले WMI कोड निर्माता उपयोगिता का उपयोग करें। –

+0

नहीं। मुझे पहले डब्लूएमआई के साथ सिरदर्द था। जब भी संभव हो मैं इसे टालने की कोशिश करता हूं। क्या विंडोज़ सेवा में डब्लूएमआई काम करेगा? – wpfwannabe

+0

हाय, क्या आपको इस प्रश्न का उत्तर मिला? मुझे यह भी करने की ज़रूरत है –

उत्तर

0

मुझे नहीं लगता कि यह संभव है क्योंकि कार्ड पाठक ओएस को नियमित फ्लैश ड्राइव के समान ही अपना स्टोरेज पेश करते हैं। वे यूएसबी मास स्टोरेज क्लास डिवाइस दोनों हैं। इस डिवाइस वर्ग पर Wikipedia article है। ओएस के पास उन दो डिवाइस प्रकारों के बीच अंतर करने का कोई तरीका नहीं है।

1

यह उपयोगी दिखता है: How Can I Determine Which USB Devices are Connected to a Computer?

strComputer = "." 

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
Set colDevices = objWMIService.ExecQuery _ 
    ("Select * From Win32_USBControllerDevice") 

For Each objDevice in colDevices 
    strDeviceName = objDevice.Dependent 
    strQuotes = Chr(34) 
    strDeviceName = Replace(strDeviceName, strQuotes, "") 
    arrDeviceNames = Split(strDeviceName, "=") 
    strDeviceName = arrDeviceNames(1) 
    Set colUSBDevices = objWMIService.ExecQuery _ 
     ("Select * From Win32_PnPEntity Where DeviceID = '" & strDeviceName & "'") 
    For Each objUSBDevice in colUSBDevices 
     Wscript.Echo objUSBDevice.Description 
    Next  
Next 

नमूना निर्गम (एक पेड़ होना चाहिए):

USB Root Hub 
Microsoft USB IntelliMouse Web 
Microsoft USB IntelliMouse Web 
USB Mass Storage Device 
Disk drive 
Generic volume 
USB Root Hub 
USB Root Hub 

मुझे आशा है कि सभी USB संग्रहण के रूप में "USB विशाल संग्रहण डिवाइस" में वर्णन नहीं। यदि ऐसा होता है, तो वॉल्यूम नाम या autorun.inf, यदि कोई हो, तो जांचें।

माइक्रोसॉफ्ट यूएसबी के आविष्कारक के बीच किया जा रहा है, यह संभावना नहीं है कि आप this Linux info की आवश्यकता होगी, लेकिन यह "Pendrive" और "फ्लैश ड्राइव" जैसे खोज शब्दों के लिए काटा जा सकता है।

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

  • कोई संबंधित समस्या नहीं^_^