| Предыдущий | Следующий |
| CS_E_INTERNAL_ERROR | OLEOBJ_E_NOVERBS |
CACHE_E_NOCACHE_UPDATED
Как расследовать HRESULT CACHE_E_NOCACHE_UPDATED
Windows возвращает CACHE_E_NOCACHE_UPDATED (0x80040170), когда выполняется следующее условие: Кэш не обновлён.
Для CACHE_E_NOCACHE_UPDATED старший бит HRESULT делает значение ошибкой. Константа CACHE_E_NOCACHE_UPDATED объявлена в winerror.h и относится к области «OLE, буфер обмена и кеш представлений».
Контекст подсистемы
Для CACHE_E_NOCACHE_UPDATED код относится к обмену данными OLE, структурам FORMATETC/STGMEDIUM, буферу обмена или кешу представлений внедрённого объекта. Для CACHE_E_NOCACHE_UPDATED нужно различать формат, аспект, индекс, TYMED и фактическую доступность источника IDataObject.
Для CACHE_E_NOCACHE_UPDATED не следует начинать с очистки состояния или переустановки компонента. Для CACHE_E_NOCACHE_UPDATED сначала необходимо привязать результат к одному вызову, объекту и поколению его состояния.
В имени CACHE_E_NOCACHE_UPDATED закодированы ориентиры для расследования: CACHE — кеш представления; NO — отсутствие; UPDATED — технический признак «updated». Для CACHE_E_NOCACHE_UPDATED эти ориентиры задают конкретный предмет проверки, но не заменяют контракт вызвавшего API.
Смысл результата: признаки в имени константы
Для CACHE_E_NOCACHE_UPDATED часть CACHE относится к области «кеш представления». При разборе CACHE_E_NOCACHE_UPDATED проверьте, какое состояние этого объекта ожидалось и какое наблюдалось реально.
При разборе CACHE_E_NOCACHE_UPDATED обозначение NO связывает код с темой «отсутствие». До повторной проверки CACHE_E_NOCACHE_UPDATED сохраните входные данные без нормализации.
При разборе CACHE_E_NOCACHE_UPDATED обозначение UPDATED связывает код с темой «технический признак «updated»». До повторной проверки CACHE_E_NOCACHE_UPDATED сохраните входные данные без нормализации.
Для CACHE_E_NOCACHE_UPDATED в техническом контексте особенно важны: FORMATETC, IDataObject, провайдер. При расследовании CACHE_E_NOCACHE_UPDATED их следует проверять как связанные части одной операции, а не как независимые симптомы.
Диагностические данные
- В первичном журнале по
CACHE_E_NOCACHE_UPDATEDнужно сохранить все поля FORMATETC: cfFormat, ptd, dwAspect, lindex и tymed. - На границе сбоя по
CACHE_E_NOCACHE_UPDATEDнужно зафиксировать фактически возвращённый STGMEDIUM и владельца его освобождения. - Для сравнения с исправным случаем по
CACHE_E_NOCACHE_UPDATEDнужно перечислить форматы, которые источник IDataObject объявляет доступными. - До повторной попытки по
CACHE_E_NOCACHE_UPDATEDнужно записать интерфейс и метод OLE, вернувший HRESULT. - Для воспроизводимого отчёта по
CACHE_E_NOCACHE_UPDATEDнужно сохранить состояние внедрённого объекта и его соединение с сервером.
Проверка по шагам
- Для
CACHE_E_NOCACHE_UPDATED: Сравнить запрошенный FORMATETC с результатом EnumFormatEtc источника; отдельно отметьте изменение состояния объекта. - Для
CACHE_E_NOCACHE_UPDATED: Проверить совместимость dwAspect, lindex и допустимых TYMED; все остальные условия оставьте неизменными. - Для
CACHE_E_NOCACHE_UPDATED: Запросить один минимальный формат без участия кеша или буфера обмена; не удаляйте исходные данные до завершения сравнения. - Для
CACHE_E_NOCACHE_UPDATED: Проверить жизненный цикл STGMEDIUM и отсутствие преждевременного ReleaseStgMedium; повторите шаг на исправном контрольном примере. - Для
CACHE_E_NOCACHE_UPDATED: После исправления обновить кеш и проверить повторное открытие сохранённого документа; сохраните первый hresult и точное время результата.
Корректирующие действия
Корректирующее действие для CACHE_E_NOCACHE_UPDATED должно устранять условие «Кэш не обновлён» на уровне FORMATETC. Для CACHE_E_NOCACHE_UPDATED простое подавление HRESULT, бесконечный повтор или очистка всех настроек не доказывают восстановление контракта.
Для CACHE_E_NOCACHE_UPDATED исправление считается подтверждённым, когда исходная операция проходит в том же окружении, отрицательный тест по-прежнему предсказуемо отклоняется, а журнал не содержит нового скрытого сбоя.
Документация
- Microsoft: generic COM коды ошибок — CACHE_E_NOCACHE_UPDATED
- Microsoft: значения HRESULT — CACHE_E_NOCACHE_UPDATED
- Microsoft: Microsoft: IOleCache — CACHE_E_NOCACHE_UPDATED
- Microsoft: Microsoft: IOleCache::Cache — CACHE_E_NOCACHE_UPDATED
- Обмен данными OLE и буфер обмена — CACHE_E_NOCACHE_UPDATED
Нужно найти другой код? Найти другой код состояния или ошибки.