Что означает код HRESULT 0xC00D1B61 (NS_E_AUDIODEVICE_BUSY)?

 
Предыдущий Следующий
NS_E_CANNOT_DELETE_ACTIVE_SOURCEGROUP NS_E_AUDIODEVICE_UNEXPECTED

NS_E_AUDIODEVICE_BUSY

Как интерпретировать код в реальном сеансе кодирования

0xC00D1B61 имеет имя NS_E_AUDIODEVICE_BUSY. Его практическая область — монопольное открытие выбранной конечной точки аудиозахвата; это относится к согласованию устройства аудиозахвата, а не ко всем компонентам воспроизведения Windows Media или Windows.

Механизм и точка сбоя

Для живого аудиовхода подключаемый модуль источника должен открыть выбранную конечную точку и согласовать поток, совместимый с WAVEFORMATEX, прежде чем группа источников сможет быть подготовлена в сеансе, возвращающем NS_E_AUDIODEVICE_BUSY. Владение устройством и поддержка формата являются независимыми проверками в контрольной точке аудиоустройство занято.

Устройство, видимое в интерфейсе Encoder, всё ещё может отклонить запрошенный формат или быть монопольно занято другим процессом при построении графа кодирования в сеансе, возвращающем NS_E_AUDIODEVICE_BUSY. Типичный способ воспроизведения: другой рекордер удерживает открытым вывод захвата, когда Encoder подготавливает сеанс. Поэтому для NS_E_AUDIODEVICE_BUSY первый результат Encoder ценнее более позднего общего сообщения.

Матрица воспроизведения

ПолеЧто сохранить
Решающие значениямоникер устройства, дескрипторы процессов или владелец микшера, режим совместного доступа и первый HRESULT открытия
Объект, вернувший ошибкумоникер и понятное имя устройства, процесс, удерживающий конечную точку, тег WAVEFORMATEX, число каналов, число выборок в секунду, разрядность, выравнивание блока и HRESULT подключаемого модуля источника
Связь с сеансомто же поколение группы источников, индекс аудитории, идентификатор объекта и последовательность обратных вызовов, которые привели к NS_E_AUDIODEVICE_BUSY
Данные нижнего уровняпервый HRESULT COM, драйвера, файловой системы или кодека, полученный до того, как Encoder сопоставил условие с NS_E_AUDIODEVICE_BUSY
Контролируемое сравнениезаведомо рабочий сеанс, в котором изменён только параметр, указанный границей аудиоустройство занято

Матрица диагностических данных

НаблюдениеКак его интерпретировать
Наблюдение подтверждает этот результатРешающими данными являются моникер устройства, дескрипторы процессов или владелец микшера, режим совместного доступа и первый HRESULT открытия. Они подтверждают монопольное открытие выбранной конечной точки аудиозахвата в том же поколении объекта.
Наблюдение указывает на более ранний сбойЗафиксированные значения удовлетворяют правилу аудиоустройство занято, но источник, драйвер, активация COM или файловая операция раньше возвращает другой HRESULT.
Наблюдение указывает на более поздний сбойEncoder проходит эту границу — монопольное открытие выбранной конечной точки аудиозахвата, — но затем на следующей стадии происходит сбой кодека, архива или приёмника трансляции.
Проверка после исправленияВнесите одно изолированное изменение: освободите процесс, удерживающий конечную точку, либо выберите независимо доступный вход. После этого исходный вызов аудиоустройство занято должен пройти ту же контрольную точку.

Практическое влияние NS_E_AUDIODEVICE_BUSY ограничено переходом согласования устройства аудиозахвата, которому принадлежит монопольное открытие выбранной конечной точки. Само по себе NS_E_AUDIODEVICE_BUSY не доказывает, что повреждены все входные данные, отсутствуют все кодеки или полностью неработоспособна установка Windows Media. В типичном случае, когда другой рекордер удерживает открытым вывод захвата при подготовке сеанса Encoder, сохраните первый сбойный вызов и идентификатор его объекта, чтобы последующая оболочка не заменила данные аудиоустройство занято.

Минимальный эксперимент

  1. Зафиксируйте 0xC00D1B61, NS_E_AUDIODEVICE_BUSY, версию Encoder и точный вызов API или обращение к свойству, вернувшее ошибку.
  2. Экспортируйте текущую конфигурацию .wme или .prx, затем сохраните моникер устройства, дескрипторы процессов или владельца микшера, режим совместного доступа и первый HRESULT открытия.
  3. Для NS_E_AUDIODEVICE_BUSY проверьте предварительное условие согласования устройства аудиозахвата, не меняя одновременно источник, профиль и выходной приёмник.
  4. Выполните одно контролируемое сравнение, изменив только это условие: освободите процесс, удерживающий конечную точку, либо выберите независимо доступный вход.
  5. После изменения пересоздайте затронутый объект Encoder, а не предполагайте, что существующий граф отбросил прежнее состояние аудиоустройство занято.

Не объединяйте следующие результаты

РезультатПочему это другая граница
NS_E_AUDIODEVICE_UNEXPECTEDинициализация аудиозахвата после обнаружения устройства вне распознанной ошибки занятости или отклонения формата
NS_E_AUDIODEVICE_BADFORMATсогласование запрошенной структуры WAVEFORMATEX с устройством аудиозахвата
NS_E_NO_AUDIODATAсторожевой контроль обнаруживает, что открытый аудиоисточник перестал выдавать образцы

Что изменить, а что оставить без изменений

Измените минимальное ответственное предварительное условие: освободите процесс, удерживающий конечную точку, либо выберите независимо доступный вход. При повторной проверке NS_E_AUDIODEVICE_BUSY сохраняйте неизменными все не связанные параметры источника, аудитории и выхода до повторения того же вызова.

Не меняйте одновременно аудиодрайвер, частоту дискретизации и подключаемый модуль источника; сначала сохраните точную структуру WAVEFORMATEX и первый HRESULT открытия или согласования в сеансе, возвращающем NS_E_AUDIODEVICE_BUSY.

Авторитетная документация для NS_E_AUDIODEVICE_BUSY


Нужно найти другой код? Найти другой код состояния или ошибки.