هل من الممكن ربط نفس جهاز الصوت في واجهات برمجة التطبيقات المختلفة؟
سؤال
أنا أستخدم واجهة برمجة تطبيقات WinMM للتعامل مع الصوت. أنا استخدم waveInGetDeviceCaps
و waveInMessage
لتحديد "خط الصوت" بشكل فريد. كل شيء يعمل بشكل جيد ، إلا أنه في Vista ، يتم توج اسم الجهاز في 32 Chars بواسطة WaveInCaps
بنية.
للتغلب على ذلك ، أتصور باستخدام واجهة برمجة التطبيقات الأساسية عندما يكون إصدار OS> = Vista. أنا أستخدم IMMDeviceEnumerator.GetDevice
و IMMDeviceEnumerator.EnumAudioEndpoints
لجمع معلومات خط الصوت ، لكنني لست متأكدًا من كيفية معرفة أن جهازًا واحدًا تحت API Core يتعلق بإدخال واحد تحت واجهة برمجة تطبيقات Wavexx.
أعتقد أنه يمكنني مقارنة مسار الجهاز لكليهما ، لكن ذلك سيتعارض مع توصية MS بتعامل مع سلسلة مسار الجهاز على أنها "غير شفافة".
ماذا تقول؟
المحلول
تم وصف هذا السيناريو في http://msdn.microsoft.com/en-us/library/dd370819(vs.85).aspx