| Предыдущий | Следующий |
| 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 не следует считать эквивалентным: сравнивайте точное условие, указанное здесь, и первую различающуюся операцию.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.