Что означает код HRESULT 0x800401D0 (CLIPBRD_E_CANT_OPEN)?

 
Предыдущий Следующий
CONVERT10_E_STG_DIB_TO_BITMAP CLIPBRD_E_CANT_EMPTY

CLIPBRD_E_CANT_OPEN

Что именно нарушено

Если получен CLIPBRD_E_CANT_OPEN, непосредственно известно следующее: Не удалось открыть буфер обмена. Для Win32/OLE clipboard lifecycle это достаточно конкретный сигнал, поэтому важно сохранить входы первого отказавшего вызова.

Данные первого неуспешного вызова

  • Зафиксируйте clipboard format, owner window, sequence number, thread, handle/medium и GetLastError вокруг операции; для этого результата эти данные должны относиться к первому неуспешному вызову, а не к cleanup после него.
  • Отдельно зафиксируйте текущего clipboard owner и thread/window, удерживающий открытый clipboard. Это проверяет условие «Не удалось открыть буфер обмена» по фактическим параметрам, а не по имени константы.
  • Сохраните технические маркеры BOOL OpenClipboard( [in, optional] HWND hWndNewOwner ); и один исправный запуск с теми же входными данными.

Безопасный повтор

Проведите A/B-проверку: воспроизвести Open/Set/Close на минимальном формате и проверить ownership handle. Сравнивайте первую точку расхождения, а не только финальное сообщение приложения.

До получения контрольных данных не закрывать или освобождать handle не тем API, который владеет ресурсом; иначе станет невозможно доказать, какое условие действительно изменило результат.

Ближайший по прежнему шаблону результат CAT_E_NODESCRIPTION не следует считать эквивалентным: сравнивайте точное условие, указанное здесь, и первую различающуюся операцию.

Технические ссылки


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