Что означает код HRESULT 0xC00D36DA (MF_E_MULTIPLE_SUBSCRIBERS)?

 
Предыдущий Следующий
MF_E_MULTIPLE_BEGIN MF_E_TIMER_ORPHANED

MF_E_MULTIPLE_SUBSCRIBERS

Что означает MF_E_MULTIPLE_SUBSCRIBERS

MF_E_MULTIPLE_SUBSCRIBERS (0xC00D36DA) — Другой компонент уже получает события от этого генератора.

Результат 0xC00D36DA пришёл из подсистемы «COM/WinRT» при работе с областью «контракт вызываемого interface, аргументы и state объекта». Для сообщения «другой компонент уже получает события от этого генератора» практический предмет проверки — «mf, несколько объектов, subscribers».

Что проверить и как подтвердить исправление

Первый шаг — сопоставьте первый отказ с фактическими параметрами операции. Когда при 0xC00D36DA система сообщает «другой компонент уже получает события от этого генератора», воспроизведите отказ на минимальном объекте и меняйте только одно условие за запуск, чтобы отделить неверный вход от состояния системы.

Для воспроизведения 0xC00D36DA сохраните IID и method, thread/apartment, argument values, object state и исходный HRESULT; отдельно запишите IMFMediaEventGenerator::GetEvent. По теме «mf, несколько объектов, subscribers» для 0xC00D36DA сравните эти данные с исправным запуском до очистки журналов или пересоздания объекта.

Коррекция для 0xC00D36DA должна быть предметной: исправьте параметры и жизненный цикл объекта в соответствии с контрактом первого неуспешного метода. Для 0xC00D36DA и сообщения «другой компонент уже получает события от этого генератора» общий сброс допустим лишь как контроль, но не как доказательство причины.

Закройте диагностику после двух проверок: исходный сценарий проходит без результата 0xC00D36DA, а заведомо неверный вход отклоняется на ожидаемой границе.

Документация для результата 0xC00D36DA: BeginGetEvent return codes · IMFMediaEventGenerator::GetEvent · Wine mfplat source.


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