Я пытаюсь использовать этот код в проекте Unity, но кажется, что реализации COM Interop в Mono/.NET отличается, что приводит к сбою или сбою кода. Запуск кода в .NET работает нормально, но запуск его с Mono 2.0 (вне Unity) завершается с ошибкой так же, как и в Unity, что позволяет предположить, что это проблема с Mono в целом, а не с Unity.
Если я скомпилирую и запущу код как есть, произойдет сбой, потому что приведение типов с MMDeviceEnumerator на IIMMDeviceEnumerator завершается ошибкой. При оформлении всех интерфейсов с помощью [ComInterop] приведение выполняется успешно, но вызов GetDefaultAudioEndpoint приводит к сбою Unity/Mono с нарушением прав доступа.
Трудно найти хорошую документацию по COM-взаимодействию на Mono в целом, особенно в отношении такой старой версии. Это вообще возможно запустить?