Что означает код HRESULT 0x800401D1 (CLIPBRD_E_CANT_EMPTY)?

 
Предыдущий Следующий
CLIPBRD_E_CANT_OPEN CLIPBRD_E_CANT_SET

CLIPBRD_E_CANT_EMPTY

Разбор CLIPBRD_E_CANT_EMPTY: данные для диагностики

Windows возвращает CLIPBRD_E_CANT_EMPTY (0x800401D1), когда выполняется следующее условие: Не удалось очистить буфер обмена.

Старший бит HRESULT делает значение ошибкой. Эта константа объявлена в winerror.h и относится к области «OLE, буфер обмена и кеш представлений».

Контекст подсистемы

Код относится к обмену данными OLE, структурам FORMATETC/STGMEDIUM, буферу обмена или кешу представлений внедрённого объекта. Нужно различать формат, аспект, индекс, TYMED и фактическую доступность источника IDataObject.

Диагностические данные

  • До повторной попытки нужно сохранить все поля FORMATETC: cfFormat, ptd, dwAspect, lindex и tymed.
  • Для воспроизводимого отчёта нужно зафиксировать фактически возвращённый STGMEDIUM и владельца его освобождения.
  • В первичном журнале нужно перечислить форматы, которые источник IDataObject объявляет доступными.
  • На границе сбоя нужно записать интерфейс и метод OLE, вернувший HRESULT.
  • Для сравнения с исправным случаем нужно сохранить состояние внедрённого объекта и его соединение с сервером.

Проверка по шагам

  1. Сравнить запрошенный FORMATETC с результатом EnumFormatEtc источника; сохраните первый hresult и точное время результата.
  2. Проверить совместимость dwAspect, lindex и допустимых TYMED; отдельно отметьте изменение состояния объекта.
  3. Запросить один минимальный формат без участия кеша или буфера обмена; все остальные условия оставьте неизменными.
  4. Проверить жизненный цикл STGMEDIUM и отсутствие преждевременного ReleaseStgMedium; не удаляйте исходные данные до завершения сравнения.
  5. После исправления обновить кеш и проверить повторное открытие сохранённого документа; повторите шаг на исправном контрольном примере.

Корректирующие действия

Корректирующее действие для него должно устранять условие «Не удалось очистить буфер обмена» на уровне транзакция.

Документация


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