| Предыдущий | Следующий |
| CACHE_S_SAMECACHE | OLEOBJ_S_INVALIDVERB |
CACHE_S_SOMECACHES_NOTUPDATED
Что означает CACHE_S_SOMECACHES_NOTUPDATED и где искать причину
CACHE_S_SOMECACHES_NOTUPDATED имеет значение 0x00040172 (262514 в знаковом 32-битном представлении). Некоторые кэши не были обновлены.
Старший бит HRESULT делает значение успешным или информационным результатом. Эта константа объявлена в winerror.h и относится к области «OLE, буфер обмена и кеш представлений».
Где проходит граница ошибки
Код относится к обмену данными OLE, структурам FORMATETC/STGMEDIUM, буферу обмена или кешу представлений внедрённого объекта. Нужно различать формат, аспект, индекс, TYMED и фактическую доступность источника IDataObject.
Что сохранить до изменений
- Для сравнения с исправным случаем нужно сохранить все поля FORMATETC: cfFormat, ptd, dwAspect, lindex и tymed.
- До повторной попытки нужно зафиксировать фактически возвращённый STGMEDIUM и владельца его освобождения.
- Для воспроизводимого отчёта нужно перечислить форматы, которые источник IDataObject объявляет доступными.
- В первичном журнале нужно записать интерфейс и метод OLE, вернувший HRESULT.
- На границе сбоя нужно сохранить состояние внедрённого объекта и его соединение с сервером.
Последовательность проверки
- Сравнить запрошенный FORMATETC с результатом EnumFormatEtc источника; все остальные условия оставьте неизменными.
- Проверить совместимость dwAspect, lindex и допустимых TYMED; не удаляйте исходные данные до завершения сравнения.
- Запросить один минимальный формат без участия кеша или буфера обмена; повторите шаг на исправном контрольном примере.
- Проверить жизненный цикл STGMEDIUM и отсутствие преждевременного ReleaseStgMedium; сохраните первый hresult и точное время результата.
- После исправления обновить кеш и проверить повторное открытие сохранённого документа; отдельно отметьте изменение состояния объекта.
Исправление и подтверждение результата
Корректирующее действие для него должно устранять условие «Некоторые кэши не были обновлены» на уровне CLSID.
Технические ссылки
- Microsoft: COM cache status codes
- Microsoft: IOleCache2
- Microsoft: IOleCache2::UpdateCache
- Обмен данными OLE и буфер обмена
Нужно найти другой код? Найти другой код состояния или ошибки.