ما الذي يحدد النظام للأجهزة الصوتية في Windows عند استخدام Winmm.dll؟

StackOverflow https://stackoverflow.com/questions/1505522

  •  19-09-2019
  •  | 
  •  

سؤال

أحاول استخدام Naudio لإنشاء تطبيق إخراج صوت متعدد. لدينا 8 بطاقات الصوت USB مثبتة. Naudio يتيح لي استخدام الكل 8 ولكن لا يمكنني معرفة نمط لتحديد مؤشر الجهاز الذي هو البطاقة التي هي البطاقة.

سيتم ربط البطاقات بأجهزة مختلفة، لذلك من المهم التأكد من أنك تعرف البطاقة التي تستخدمها.

لقد كنت أحاول استخدام WMI لاستطلاع المعلومات، لكنني لا أستطيع أن أبدو لتحديد موقع أي معلومات تحدد ترتيب الأجهزة الصوتية.

تحديث:نسيت تضمين بعض المعلومات حول هذه المشكلة. بطاقات الصوت هي جميع بطاقات صوت USB مدمن مخدرات من خلال محور 12 منفذ.

هل كانت مفيدة؟

المحلول

ترتيب الأجهزة غير محتملة لجميع إصدارات Windows. بالنسبة إلى Vista وما فوق، يتم طلب الأجهزة عادة بواسطة DSound Guid (المزيد - أقل أو أقل) لذا فهي عشوائية بشكل فعال.

نصائح أخرى

أنا أفترض أنك تستخدم Haveout؟ يمكنك استدعاء HaveOut.getcapabilities (DeviceNumber) للحصول على اسم الجهاز، مما قد يساعدك في الخروج.

هذا ما حدث به حتى الآن ويعمل بالنسبة لنا.

باستخدام WMI، يمكنك الحصول على TijoreDID من Win32_SoundDevice. ثم استخدام ذلك يمكنك الوصول إلى التسجيل في HKLM System CurrentControlset enum 'Deseries' والحصول على قيمة السلسلة المسماة "برنامج التشغيل". تحتوي هذه القيمة على ClassGuid بالإضافة إلى رقم في النهاية.

مثال: {4D36E96C-E325-11CE-BFC1-08002BE10318} 0015

إذا قمت بتجرید هذا الرقم الأخير * (15) * بالنسبة لك جميع الأجهزة الصوتية وطلبها، فهذا هو الترتيب الذي يتم فيه سرد الأجهزة المدرجة من Naudio باستخدام Winmm.dll. يوجد أيضا موقعا لهذه الأجهزة الصوتية، إما في السجل في نفس المفتاح أو من Win32_Pnpentity باستخدام TijoreSID.

في حالنا، يتيح لنا الموقع تحديد ميناء محور USB الذي يتم توصيل جهاز الصوت به.

إلقاء نظرة على مقالة MSDN هذه. يستخدم DirectSound لتعداد الأجهزة الصوتية:

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top