Что означает код HRESULT 0x000D1519 (NS_S_PUBLISHING_POINT_STARTED_WITH_FAILED_SINKS)?

 
Предыдущий Следующий
NS_S_TRACK_ALREADY_DOWNLOADED NS_S_DRM_LICENSE_ACQUIRED

NS_S_PUBLISHING_POINT_STARTED_WITH_FAILED_SINKS

Publishing point запущен, но часть data-writer sink не работает

NS_S_PUBLISHING_POINT_STARTED_WITH_FAILED_SINKS — это HRESULT 857369 (0x000D1519) Windows Media. В AllStat он описан как «publishing point успешно запущен, но один или несколько запрошенных подключаемых модулей data writer завершились с ошибкой». В автомате состояний Windows Media Player, Windows Media Format, DRM или Media Foundation это успешное, но содержательно значимое состояние, которое нельзя сводить к обычному S_OK.

Этот статус содержит значимую информацию о завершении и может требовать ожидания, сверки состояния, резервного действия или уведомления пользователя.

Где встречается этот статус

  • Этот статус может появляться в callbacks библиотеки, playlist, store или UI plug-in Windows Media Player; фиксируйте точный API, объект и фазу, поскольку одинаковая числовая severity успеха не определяет состояние сама по себе.
  • Этот статус может появляться при операциях source, writer, DRM, publishing point или установки Windows Media Format; фиксируйте точный API, объект и фазу, поскольку одинаковая числовая severity успеха не определяет состояние сама по себе.
  • Этот статус может появляться при активации topology Media Foundation и настройке удалённых компонентов; фиксируйте точный API, объект и фазу, поскольку одинаковая числовая severity успеха не определяет состояние сама по себе.

Сохраняйте этот статус привязанным к операции, которая его вернула. Интерпретация этого статуса вне контракта этого API может превратить нормальное продолжение или частичный результат в ошибочный повтор либо ложное завершение.

Что должно быть истинно перед принятием результата

Убедитесь, что publishing point может безопасно обслуживать запросы без отказавших sink и что все потерянные пути вывода идентифицированы. При проверке NS_S_PUBLISHING_POINT_STARTED_WITH_FAILED_SINKS не позволяет результату с success severity превратиться в более широкое обещание, чем делает API.

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

Данные и телеметрия

  • Сохраните имя publishing point.
  • Сохраните идентификаторы запрошенных и активных sink.
  • Сохраните HRESULT для каждого sink.
  • Сохраните состояние потоковой передачи.
  • Сохраните влияние на потерю данных или резервирование.

Для этого статуса также зафиксируйте время UTC, идентификаторы процесса и потока, версию компонента, поколение операции и correlation ID. Не помещайте чувствительное содержимое в журналы; используйте длины, хэши, GUID и разрешённые политикой метаданные.

Последовательность диагностики

  • Зафиксируйте исходные 0x000D1519 и NS_S_PUBLISHING_POINT_STARTED_WITH_FAILED_SINKS до того, как исключения, знаковое форматирование или общая оболочка успеха удалят символическое значение.
  • Определите интерфейс, метод, callback, службу, драйвер или broker, вернувший этот статусвключая версию компонента, процесс, поток и correlation ID.
  • Докажите решающее условие для этого статуса : publishing point должен быть способен безопасно работать без отказавших sink, а все потерянные пути вывода — быть идентифицированы.
  • Для этого статуса проверьте каждый выходной параметр, счётчик, дескриптор объекта, callback, элемент очереди, media item, отчёт, транзакцию, элемент topology или signaling response, созданные вызовом.
  • Сравните состояние непосредственно до и после этого статуса и убедитесь, что владение, время жизни, сохранение и видимые пользователю эффекты соответствуют статусу.
  • Воспроизведите этот статус на минимальном входе, затем измените только предполагаемую причину и убедитесь, что возвращаемое значение или постусловие изменилось ожидаемым образом.

Правильная обработка и восстановление

Оставляйте publishing point в рабочем состоянии только если политика допускает деградированный режим, сообщайте о каждом отказавшем sink и восстанавливайте или заменяйте их независимо. Не сообщайте о полной избыточности, если она нарушена.

Продолжение после этого статуса в рамках документированного автомата состояний отличается от полного перезапуска операции.

Отличие от соседних результатов

При полностью успешном запуске работают все запрошенные sink; здесь основная точка работает, но часть возможностей вывода потеряна.

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

Практический сценарий

Publishing point прямой трансляции начинает потоковую передачу, но модуль архивной записи не может открыть хранилище. Трансляция остаётся доступной, пока оператор восстанавливает архивирование и помечает событие как деградированный режим.

Регрессионный тест должен воспроизвести этот статус, проверить все соответствующие выходные данные и состояние, затем измените только решающее условие и убедитесь в обычном завершении или ожидаемом соседнем результате.

Рекомендации разработчикам и администраторам

Обрабатывайте этот статус отдельной ветвью до обычного SUCCEEDED(hr) , если допустимость результата или следующий метод отличаются. В телеметрии сохраняйте 0x000D1519, метод NS_S_PUBLISHING_POINT_STARTED_WITH_FAILED_SINKS , сборку компонента и идентификатор корреляции.

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

Ссылки


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