2009-10-01 9 views
5

मैं एकाधिक ध्वनि आउटपुट एप्लिकेशन बनाने के लिए NAudio का उपयोग करने का प्रयास कर रहा हूं। हमारे पास 8 यूएसबी साउंड कार्ड स्थापित हैं। NAudio मुझे सभी 8 का उपयोग करने देता है लेकिन मैं यह निर्धारित करने के लिए एक पैटर्न नहीं समझ सकता कि कौन सा डिवाइस इंडेक्स कौन सा कार्ड है।winmm.dll का उपयोग करते समय विंडोज़ में ध्वनि उपकरणों के लिए ऑर्डर निर्धारित करता है?

कार्ड विभिन्न हार्डवेयर तक लगाए जाएंगे, इसलिए यह सुनिश्चित करना महत्वपूर्ण है कि आप जानते हैं कि आप किस कार्ड का उपयोग कर रहे हैं।

मैं जानकारी के लिए मतदान करने के लिए डब्लूएमआई का उपयोग करने की कोशिश कर रहा हूं लेकिन मुझे लगता है कि ध्वनि उपकरणों के आदेश को निर्धारित करने वाली किसी भी जानकारी का पता लगाना नहीं लगता है।

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

उत्तर

3

उपकरणों के आदेश विंडोज के सभी संस्करणों के लिए गैर नियतात्मक है। Vista और ऊपर के लिए, डिवाइस आमतौर पर डीएसएंड GUID (अधिक या कम) द्वारा आदेश दिया जाता है ताकि वे प्रभावी रूप से यादृच्छिक हों।

+0

बहुत कुछ जो मैं सोच रहा था लेकिन मुझे लगता है कि मुझे इसे समझने के लिए एक हैक है। –

1

इस एमएसडीएन आलेख पर एक नज़र डालें। यह डायरेक्टसाउंड का उपयोग करता है ऑडियो उपकरणों की गणना करने में:

http://msdn.microsoft.com/en-us/library/bb318674(VS.85).aspx

+0

अभी तक यह कोशिश नहीं की है क्योंकि मुझे डायरेक्टएक्स असेंबली को कोड में ले जाना होगा। मैं कोशिश करूँगा यह सब कुछ विफल रहता है। –

2

मुझे लगता है कि आप वेवऑट का उपयोग कर रहे हैं? डिवाइस के नाम को पकड़ने के लिए आप WaveOut.GetCapabilities (deviceNumber) को कॉल कर सकते हैं, जो आपकी मदद कर सकता है।

+0

यह काम करेगा अगर वे सभी समान यूएसबी ध्वनि कार्ड नहीं थे। क्षमा करें मैंने पहले इसका जिक्र नहीं किया था। हालांकि धन्यवाद। –

2

यही वह है जो मैंने अभी तक किया है और यह हमारे लिए काम करता है।

डब्ल्यूएमआई का उपयोग करके आप Win32_SoundDevice से डिवाइस आईडी प्राप्त कर सकते हैं। फिर इसका उपयोग करके आप HKLM \ SYSTEM \ CurrentControlSet \ ENUM \ 'DeviceID' पर रजिस्टरी तक पहुंच सकते हैं और "ड्राइवर" नामक स्ट्रिंग मान प्राप्त कर सकते हैं। इस मान में क्लासिल प्लस एक नंबर अंत में है।

उदाहरण: {4d36e96c-e325-11ce-bfc1-08002be10318} \ 0015

यदि आप बंद पट्टी उस के लिए आप सभी उपकरणों और उन्हें आदेश ध्वनि पिछले संख्या * (15) *, वह यह है कि ऑर्डर करें कि डिवाइस NAmmio से Winmm.dll के उपयोग के साथ सूचीबद्ध हैं। इन ध्वनि उपकरणों के लिए एक स्थान भी है, या तो उसी कुंजी पर रजिस्टर में या डिवाइस आईडी का उपयोग कर Win32_PNPEntity से।

हमारे मामले में स्थान हमें यह निर्धारित करने देता है कि यूएसबी हब का कौन सा बंदरगाह ध्वनि डिवाइस प्लग इन है।

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

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