Что означает код HRESULT 0x80040102 (DRAGDROP_E_INVALIDHWND)?

 
Предыдущий Следующий
DRAGDROP_E_ALREADYREGISTERED DRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED

DRAGDROP_E_INVALIDHWND

Что означает DRAGDROP_E_INVALIDHWND

DRAGDROP_E_INVALIDHWND (0x80040102) — Указан недопустимый дескриптор окна.

Контекст результата 0x80040102 — подсистема «OLE Drag and Drop» и область «регистрацию окна и взаимодействие IDataObject/IDropTarget». Условие «указан недопустимый дескриптор окна» указывает на тему «invalidhwnd», а не на общий отказ всего компонента.

Что проверить и как подтвердить исправление

Первый шаг — проверьте допустимость и структуру входных данных первого неуспешного вызова. Когда при 0x80040102 система сообщает «указан недопустимый дескриптор окна», сверьте тип, размер, диапазон, маску флагов и принадлежность каждого дескриптора текущему объекту именно по контракту первого неуспешного метода.

Чтобы локализовать 0x80040102, соберите HWND, поток и COM apartment, регистрацию цели, FORMATETC/STGMEDIUM и порядок DragEnter/DragOver/Drop; отдельно запишите HRESULT, HWND, IDropTarget, IErrorInfo, IDs. Затем для 0x80040102 сравните исправный и неуспешный запуск в части «invalidhwnd», меняя одно условие за раз.

Коррекция для 0x80040102 должна быть предметной: выполняйте регистрацию и отзыв на правильном UI-потоке и соблюдайте владение объектами данных и носителями. Для 0x80040102 и сообщения «указан недопустимый дескриптор окна» общий сброс допустим лишь как контроль, но не как доказательство причины.

Подтвердите изменение повтором исходной операции: результат 0x80040102 не должен возникать на исправном объекте, но прежний отрицательный контроль обязан оставаться предсказуемым.

Документация для результата 0x80040102: generic COM error codes · HRESULT values · RegisterDragDrop.


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