| Предыдущий | Следующий |
| NS_S_WMPCORE_PLAYLIST_REPEAT_SECONDARY_SEGMENTS_IGNORED | NS_S_WMPCORE_PLAYLIST_NAME_AUTO_GENERATED |
NS_S_WMPCORE_COMMAND_NOT_AVAILABLE
Команда Windows Media Player недоступна в текущем состоянии
NS_S_WMPCORE_COMMAND_NOT_AVAILABLE — это HRESULT 856325 (0x000D1105) Windows Media. В AllStat он описан как «текущее состояние WMP запрещает вызов этого метода или свойства». Бит severity указывает на неошибочный результат, однако значение передаёт конкретное состояние, которое нельзя сводить к обычному S_OK.
В устаревшем конвейере Windows Media или состоянии Player этот статус означает, что текущее состояние WMP не допускает вызов данного метода или свойства. Нельзя считать операцию обычно завершённой только по этому статусу , пока состояние и выходные данные компонента-владельца не согласованы.
Что должно быть истинно перед принятием результата
Для этого статуса убедитесь, что интерфейс или слой автоматизации понимает предусловие состояния и не принимает отключённую команду за ошибку выполнения. Только такая проверка контракта подтверждает, что этот статус можно безопасно передать следующему шагу вызывающей стороны.
Возврат этого статуса может происходить уже после наблюдаемых побочных эффектов, поэтому восстановление следует начинать со сверки фактического состояния.
Где встречается этот статус
- Этот статус может возвращаться в callbacks источника, reader, writer или renderer Windows Media; фиксируйте точный метод и состояние объекта, а не интерпретируйте константу вне контракта этого вызова.
- Этот статус может возвращаться при автоматизации через Windows Media Player SDK; фиксируйте точный метод и состояние объекта, а не интерпретируйте константу вне контракта этого вызова.
- Этот статус может возвращаться в состояниях media graph, playlist, image, rights или buffering; фиксируйте точный метод и состояние объекта, а не интерпретируйте константу вне контракта этого вызова.
Поскольку этот статус является информационным статусом, языковая оболочка может показать его как успех и скрыть символическое различие. Сохраняйте исходный HRESULT, пока не отработана ветвь, специфичная для этого кода.
Последовательность диагностики
- Зафиксируйте исходное значение
0x000D1105до того, как оболочки, знаковое десятичное форматирование, исключения или общая обработка успеха заменят исходный статус. - Определите операцию, вернувшую этот статус, включая интерфейс или callback, сборку компонента, поток, процесс и фазу машины состояний.
- Для этого статуса подтвердите решающее условие: интерфейс или слой автоматизации учитывает предусловие состояния и не принимает недоступную команду за ошибку её выполнения.
- Проверьте каждый выходной параметр, счётчик, массив статусов, буфер, callback, состояние задачи, временную метку медиа, голос транзакции или security token, остающийся частью контракта этого статуса.
- Сравните состояние непосредственно до и после этого статуса; success severity не гарантирует завершения необязательной работы или высокоуровневого действия, которого ожидал вызывающий код.
- Воспроизведите этот статус на минимальном входе, сохраняющем то же условие, затем измените только зафиксированную причину и повторите операцию.
Данные и телеметрия
- Для этого статуса сохраните запрошенный метод или свойство.
- Для этого статуса сохраните состояние открытия и воспроизведения проигрывателя.
- Для этого статуса сохраните медиаэлемент и соответствующую возможность.
- Для этого статуса сохраните ожидаемый переход состояния.
- Для этого статуса сохраните результат следующего вызова.
Также зафиксируйте ns_s_wmpcore_command_not_available_operation, ns_s_wmpcore_command_not_available_state_before, ns_s_wmpcore_command_not_available_state_after, время UTC, идентификаторы процесса и потока, версию компонента и идентификатор корреляции. Для безопасной с точки зрения конфиденциальности диагностики NS_S_WMPCORE_COMMAND_NOT_AVAILABLE записывайте метаданные и отпечатки вместо конфиденциальных исходных значений.
Правильная обработка и восстановление
Отключите команду до наступления требуемого состояния проигрывателя либо переведите его в это состояние документированными действиями. Не выполняйте непрерывные повторы без изменения состояния.
Повторяйте операцию только если документированно изменился входной параметр или состояние. Перед новым вызовом после этого статусаубедитесь, что уже выполненные побочные эффекты либо идемпотентны, либо согласованы с фактическим состоянием.
Практический сценарий
Сценарий запрашивает позиционирование до открытия медиафайла. Проигрыватель возвращает это состояние, поэтому интерфейс ждёт события открытия и только затем включает элемент управления перемоткой.
Регрессионный тест должен воспроизвести этот статус, проверить соответствующие выходные данные и состояние, затем изменить только решающее условие и убедиться в ожидаемом соседнем результате или обычном завершении.
Отличие от соседних результатов
Этот статус нужно отличать от обычного S_OK и от значений того же семейства API, у которых бит severity указывает на сбой; документированное состояние определяет следующее действие.
Для этого статуса соседний HRESULT может изменить владение объектом, допустимость выходных данных или разрешённый следующий метод.
Рекомендации разработчикам и администраторам
Код должен обработать этот статус отдельно до общей ветви SUCCEEDED(hr) , если отличаются выходные данные, продолжение, отмена или восстановление. В телеметрии следует сохранять NS_S_WMPCORE_COMMAND_NOT_AVAILABLE, 0x000D1105, метод-источник результата и идентификатор корреляции.
Для этого статуса явно определите владельца повторной попытки, отмены, очистки и сообщения пользователю. Для этого статуса используйте средства подсистемы, которая выдала результат, а не общую очистку, не способную восстановить её контракт.
Ссылки
- Microsoft: коды ошибок Windows Media Format SDK — официальный материал Microsoft для интерпретации этого статуса.
- Microsoft: Windows Media Player SDK — официальный материал Microsoft для интерпретации этого статуса.
- Microsoft: событие buffering в Windows Media Player — официальный материал Microsoft для интерпретации этого статуса.
- Microsoft: значения HRESULT — официальный материал Microsoft для интерпретации этого статуса.
Нужно найти другой код? Найти другой код состояния или ошибки.