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