2010-12-29 8 views
7

पर विस्तृत यूएसबी मिडी डिवाइस जानकारी पुनर्प्राप्त करना midiOutGetDevCaps फ़ंक्शन MIDIOUTCAPS देता है। विंडोज एक्सपी पर यूएसबी मिडी डिवाइस से पूछताछ करते समय मुझे अधिक विशिष्ट जानकारी की आवश्यकता होगी, विशेष रूप से मुझे डिवाइस प्रबंधक का उपयोग करके संबंधित डिवाइस खोलते समय "स्थान" के अंतर्गत प्रदर्शित जानकारी की आवश्यकता होगी। मुझे कंप्यूटर से जुड़े कई MIDI इंटरफेस के बीच प्रोग्रामेटिक रूप से अंतर करने के लिए इस जानकारी की आवश्यकता है। MidiOutGetDevCaps का उपयोग करके, मुझे कंप्यूटर से जुड़े प्रत्येक मिडी यूएसबी इंटरफेस के लिए समान रूप से "यूएसबी ऑडियो डिवाइस" मिलता है, इसलिए इंटरफेस के बीच अंतर करना असंभव है। मामलों को और खराब बनाने के लिए, यह स्ट्रिंग स्थानीयकृत है, इसलिए उदा। एक जर्मन विंडोज़ पर आपको "यूएसबी ऑडियो डिवाइस" के बजाय "यूएसबी ऑडियोओएटर" मिलेगा।विंडोज़ xp

+1

मुझे उम्मीद है कि इसका उत्तर है। मुझे एक ही समस्या है। हालांकि, मुझे नहीं लगता कि वहाँ है। मेरे द्वारा उपयोग किए जाने वाले सभी ऑडियो और डीएडब्ल्यू सॉफ़्टवेयर में एक ही समस्या है ... समान नाम वाले डिवाइसों को यादृच्छिक रूप से समझाएं। याद रखें, एमआईडीआई उपकरणों के पास उस मामले के लिए यूएसबी या किसी हार्डवेयर के साथ कोई अंतर्निहित कनेक्शन नहीं है। किसी हार्डवेयर विचार के साथ डिवाइस को संबद्ध करना वैसे भी जाने का तरीका नहीं हो सकता है, लेकिन मुझे एक व्यावहारिक समाधान नहीं पता है। – Brad

+0

निर्माता और उत्पाद आईडी आपको क्या बताती हैं? मुझे लगता है कि यदि आपके पास 2 में से एक ही डिवाइस प्लग इन हैं तो आपको अभी भी समस्याएं मिलेंगी ... – Goz

उत्तर

1

मुझे लगता है कि यह इस बात पर निर्भर करता है कि आप कितने बेताब हैं। मेरे पास यूएसबी डिवाइस के साथ अपना खुद का रन है। मेरे मामले में मुझे कुछ यूएसबी COM पोर्ट संबंधित उपकरणों की गणना करने की आवश्यकता थी। । । भले ही वे वर्तमान में सिस्टम से जुड़े हों या नहीं।

यह सब कंपनी स्वामित्व कोड, खेद मैं इसे पोस्ट नहीं कर सकते है, लेकिन यूएसबी संबंधित उपकरणों के बारे में सभी जानकारी के लिए खोज यहाँ शुरू होता है (पर्ल):

$hostnamePrefix = "//$hostname/"; 
my $baseKey = "${hostnamePrefix}HKEY_LOCAL_MACHINE/System/CurrentControlSet/"; 
my $regVidList = Win32::TieRegistry->new("${baseKey}Enum/USB/", $optionsRef); 

तो स्मृति मुझे कार्य करता है यह एक यथोचित सीधे आगे है संरचना। मेरा मानना ​​है कि आपको वास्तव में रजिस्ट्री के दो अलग-अलग हिस्सों के माध्यम से लूप करना होगा ताकि आपको जो भी चाहिए वह प्राप्त हो सके। । । यदि आप इसका प्रयास करने के लिए पर्याप्त हताश हैं, तो मैं उन प्रश्नों का उत्तर देने में प्रसन्न हूं, जहां मैं कर सकता हूं, लेकिन कोड पोस्ट करने के लिए हमारे कानूनी विभाग से अनुमोदन की आवश्यकता होगी। (असंभव नहीं है, लेकिन इसे प्राप्त करने में सप्ताह लगेंगे।)

इसके अलावा, यह XP पर काम करेगा। । । मुझे नहीं पता कि यह Win7 पर कैसे काम करेगा। (मुझे किसी भी तरह से पता नहीं है, किसी ने अभी तक यह कोशिश नहीं की है कि मुझे पता है।)

कोडिंग यह बुरा नहीं था (परिणामस्वरूप पर्ल स्क्रिप्ट कोड की लगभग 1000 पंक्तियां हैं जो लगभग 50% टिप्पणियां हैं), लेकिन चाबियों और विशेष मामलों के बीच सभी रिश्तों को काम करने में कई दिन लगे।