Что означает код HRESULT 0x00030204 (STG_S_MULTIPLEOPENS)?

 
Предыдущий Следующий
STG_S_MONITORING STG_S_CONSOLIDATIONFAILED

STG_S_MULTIPLEOPENS

Фиксация выполнена; уплотнение — нет

Этот результат успешного выполнения с оговоркой возвращается, когда IStorage::Commit публикует изменения, но не может консолидировать составной файл из-за нескольких открытых представлений, в частности в документированном случае STGM_NOSNAPSHOT. Консолидация — это запрос на уплотнение; она отделена от сохранения транзакции.

Откатывать изменения или сообщать «сохранение не удалось» неправильно. Приложение должно считать данные зафиксированными, а несостоявшуюся консолидацию обработать как служебную информацию.

Что проверить

  • Был ли запрошен STGC_CONSOLIDATE.
  • Все открытые IStorage, IStream и внешние процессы, которые могут удерживать тот же составной файл.
  • Использование STGM_NOSNAPSHOT и время жизни дублированных интерфейсов хранилища.
  • Можно ли повторить консолидацию позже, после закрытия лишних представлений.

Ссылки

IStorage::Commit · Константы STGM · Обзор Structured Storage


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