| Предыдущий | Следующий |
| STG_E_SEEKERROR | STG_E_READFAULT |
STG_E_WRITEFAULT
Почему ошибка записи — это не просто ошибка диалога сохранения
STG_E_WRITEFAULT означает, что операция записи завершилась сбоем на уровне хранилища. При работе с составным файлом это может произойти во время обновления потока, записи данных распределения или фиксации транзакционного корневого хранилища. Документ мог долго оставаться открытым и доступным для редактирования; сбой становится заметен лишь тогда, когда ожидающие изменения должны быть записаны в базовый файл.
Непосредственной причиной может быть ошибка ввода-вывода, отключение общего ресурса, сбой съёмного носителя, вмешательство антивируса или резервного копирования либо реализация хранилища, которая больше не способна завершить запись. Эту ошибку не следует путать с STG_E_MEDIUMFULL, которая относится именно к нехватке места.
Реакция и сбор данных
- Не считайте документ сохранённым только потому, что приложение приняло изменения; проверьте результат окончательной операции фиксации.
- Записывайте диагностические данные на другой том или в другое расположение, если исходный путь может быть недоступен.
- Соберите события файловой системы и устройства за время сбоя, включая отключения сетевого общего ресурса.
- Сохраняйте резервную копию до записи или используйте на уровне приложения стратегию сохранения в новый файл, если важна надёжность данных.
Ссылки
- Microsoft: IStorage::Commit и обработка ошибок
- Microsoft: значения HRESULT структурированного хранилища
- Библиотека Конгресса США: обзор формата CFB
Нужно найти другой код? Найти другой код состояния или ошибки.