MSDN प्रलेखीकरण के अनुसार, SetupDiGetClassDevs एक device instance ID पारित किया जा सकता एक विशिष्ट उपकरण के लिए एक device information set प्राप्त करने के लिए:क्या SetupDiGetClassDevs डिवाइस इंस्टेंस आईडी के साथ दस्तावेज़ के रूप में काम करता है?
केवल एक विशिष्ट उपकरण लौटने के लिए, DIFCF_DEVICEINTERFACE ध्वज सेट और गणनाकार पैरामीटर का उपयोग आपूर्ति करने के लिए डिवाइस की डिवाइस इंस्टेंस आईडी।
मैं WM_DEVICECHANGE
संदेश DBT_DEVICEARRIVAL
घटना से प्रतीकात्मक नाम पार्स करने से डिवाइस उदाहरण आईडी मिलता है, और मुझे लगता है कि SetupDiGetDeviceInstanceId से लौटे तुलना करके जिसके परिणामस्वरूप आईडी सत्यापित किया है। यहां तक कि ओएस आपूर्ति डिवाइस इत्यादि आईडी पास करने से भी काम नहीं होता है (यानी SetupDiGetClassDevs कॉल ERROR_INVALID_PARAMETER
के साथ विफल रहता है)।
नए आने वाले डिवाइस के लिए SP_DEVINFO_DATA
संरचना लाने के लिए मेरा वर्तमान कामकाज एक ही कक्षा में सभी उपकरणों का आकलन करना है और SetupDiGetDeviceInstanceId के प्रतीकात्मक नाम के परिणाम की तुलना करना है। हालांकि, मुझे नहीं लगता कि यह दस्तावेज़ीकरण के अनुसार क्यों जरूरी है ...
क्या किसी ने इस तरह से काम करने के लिए SetupDiGetClassDevs प्राप्त किया है? क्या DBT_DEVICEARRIVAL ईवेंट में डेटा का उपयोग कर डिवाइस के लिए और जानकारी प्राप्त करने के लिए कोई बेहतर तरीका है?
DIGCF_DEVICEINTERFACE | DIGCF_ALLCLASSES मेरे लिए गुम हिस्सा था। एमएसडीएन दस्तावेज से मुझे समझ में आया कि केवल DIGCF_DEVICEINTERFACE आवश्यक था, लेकिन इससे त्रुटि 87 (खराब तर्क) मिली। – angularsen