Что означает код HRESULT 0xC00D0FCB (NS_E_DAMAGED_FILE)?

 
Предыдущий Следующий
NS_E_DEVICE_NOT_READY NS_E_MPDB_GENERIC

NS_E_DAMAGED_FILE

Как классифицировать этот результат WMP

Символьный результат NS_E_DAMAGED_FILE сужает значение 0xC00D0FCB до условия повреждённого файла: анализатор мультимедиа обнаружил структурное повреждение выбранного файла. Сохраняйте границу повреждённого файла, даже если более позднее диалоговое окно сводит её к общей ошибке мультимедиа.

Сформированная часть страницы What Is уже показывает стандартное описание AllStat для NS_E_DAMAGED_FILE. Дополнительная проверка условия повреждённого файла состоит в фиксации хэша, сигнатуры контейнера, первой повреждённой структуры и наличия полной копии в другом месте; такие данные полезнее переустановки Player или одновременного изменения нескольких несвязанных параметров.

Состояние, которое следует сохранить

Для NS_E_DAMAGED_FILE зафиксируйте состояние повреждённого файла до того, как Player продолжит работу, повторно загрузит или просканирует его либо уничтожит ответственный объект:

  • Решающая проверка: запишите хэш, сигнатуру контейнера, первую повреждённую структуру и наличие полной копии в другом месте.
  • Артефакт: атрибуты файла, владелец, ACL и дескрипторы общего доступа для воспроизведения случая повреждённого файла.
  • Состояние: число полученных или записанных байтов, ожидаемая длина и итоговый хэш для воспроизведения случая повреждённого файла.
  • Идентичность объекта: исходный URL или путь и окончательное перенаправленное либо каноническое расположение для воспроизведения случая повреждённого файла.
  • Исходные данные: статус и тип содержимого HTTP либо результат локального доступа в стиле CreateFile для воспроизведения случая повреждённого файла.
  • Сопоставление: каталог назначения, временный файл и итоговый результат переименования или замены для воспроизведения случая повреждённого файла.

В журналах случая повреждённого файла следует сохранять точные пути или URL, хэши, идентификаторы объектов, смещения и порядок HRESULT, когда это применимо. Для повреждённого файла эти журналы не должны содержать учётные данные, защищённое содержимое лицензий или несвязанные данные библиотеки.

Воспроизведение без уничтожения данных

  1. Найдите первый компонент, вернувший NS_E_DAMAGED_FILE, и отметьте это событие как границу повреждённого файла.
  2. Зафиксируйте входные данные и идентичность объекта, связанные с повреждённым файлом, до того, как резервный путь или очистка WMP изменит их.
  3. Восстановите непосредственно предшествующее успешное состояние повреждённого файла, затем определите вызов или событие, переведшее операцию в состояние сбоя.
  4. Выполните проверку для этого кода: запишите хэш, сигнатуру контейнера, первую повреждённую структуру и наличие полной копии в другом месте.
  5. Примените узкое исправление — замените файл исправной копией или восстановите его средством, учитывающим формат, — и повторите ту же формирующую операцию для повреждённого файла.

Что выполняется до этого сбоя

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

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

Связанные HRESULT с другими границами

РезультатДругая граница
NS_E_FILE_FAILED_CHECKSфайл не проходит проверки допуска библиотеки Player до добавления
NS_E_WMP_RECORDING_NOT_ALLOWEDправа выбранного содержимого не разрешают запрошенную запись или прожиг
NS_E_SHARING_VIOLATIONрежим общего доступа другого дескриптора препятствует требуемому доступу WMP к файлу

Если после NS_E_DAMAGED_FILE появляется более общий результат «не удаётся воспроизвести», «не удаётся загрузить» или «операция не выполнена», сохраните более раннее событие повреждённого файла. В случае повреждённого файла последующий код может быть следствием работы оболочки, резервного элемента или уровня пользовательского интерфейса, а не формирующим сбоем.

Восстановление на правильном уровне

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

  • При исследовании повреждённого файла не повторяйте сохранение под новым именем без фиксации сбойного назначения и режима доступа; это может уничтожить артефакт или состояние, необходимое для объяснения NS_E_DAMAGED_FILE.
  • Не считайте загруженную страницу ошибки допустимым списком воспроизведения, обложкой или пакетом мультимедиа; для повреждённого файла это может заменить исходный HRESULT вторичным сбоем другого уровня.

Практическая интерпретация

Используйте NS_E_DAMAGED_FILE, 0xC00D0FCB и фразу «повреждённый файл» вместе в трассировках и поиске инцидентов. Сохраняйте эти ключи рядом с формирующим API, идентификатором объекта, URL или смещением файла, чтобы событие повреждённого файла отличалось от общего сообщения Player.

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

Повторите действие, вернувшее NS_E_DAMAGED_FILE, и убедитесь, что тот же объект проходит прежнюю контрольную точку повреждённого файла. Для повреждённого файла успех означает достижение следующего ожидаемого состояния загрузки, разбора, списка воспроизведения, управления или воспроизведения, а не только исчезновение диалогового окна.

Технические источники


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