Что означает код HRESULT 0xC00D36DB (MF_E_TIMER_ORPHANED)?

 
Предыдущий Следующий
MF_E_MULTIPLE_SUBSCRIBERS MF_E_STATE_TRANSITION_PENDING

MF_E_TIMER_ORPHANED

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

MF_E_TIMER_ORPHANED (0xC00D36DB) — Таймер был оставлен без владельца до наступления времени обратного вызова.

IMFTimer::SetTimer планирует асинхронный обратный вызов по времени общих часов воспроизведения и возвращает ключ для отмены. Этот HRESULT указывает, что запрос таймера остался без действующего владельца до наступления времени вызова.

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

Записывайте запрошенное время, флаги таймера, объект обратного вызова и связанный объект состояния и точный ключ отмены, возвращённый SetTimer. При завершении работы отменяйте именно этот ключ, а не собственный идентификатор приложения или ключ другого запроса.

Даже успешный CancelTimer не гарантирует, что уже поставленный на выполнение обратный вызов никогда не придёт. Поэтому владелец должен безопасно переживать поздний обратный вызов; исправление подтверждается корректным жизненным циклом и отсутствием обращения к уже уничтоженному состоянию.

Документация для результата 0xC00D36DB: IMFTimer::SetTimer · IMFTimer::CancelTimer · EVR presenter scheduling.


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