Что означает код HRESULT 0x80040066 (DV_E_STGMEDIUM)?

 
Предыдущий Следующий
DV_E_DVTARGETDEVICE DV_E_STATDATA

DV_E_STGMEDIUM

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

DV_E_STGMEDIUM (0x80040066) — Указана недопустимая структура STGMEDIUM.

Код 0x80040066 относится не ко всему компоненту «OLE Data Transfer», а к операции в области «FORMATETC, STGMEDIUM, аспект и формат обмена». Сообщение «указана недопустимая структура stgmedium» позволяет начать с темы «stgmedium».

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

До изменения конфигурации сопоставьте первый отказ с фактическими параметрами операции. Для 0x80040066 с описанием «указана недопустимая структура stgmedium» воспроизведите отказ на минимальном объекте и меняйте только одно условие за запуск, чтобы отделить неверный вход от состояния системы.

Диагностика 0x80040066 должна включать cfFormat, tymed, dwAspect, lindex, ptd и фактически возвращённый STGMEDIUM; отдельно запишите HRESULT, STGMEDIUM, IDataObject::GetData, FORMATETC, ID. Для темы «stgmedium» при 0x80040066 важны значения именно на первом отказе, а не после обработки ошибки верхним уровнем.

Коррекция для 0x80040066 должна быть предметной: согласуйте FORMATETC с возможностями IDataObject и освобождайте STGMEDIUM по правилам владения. Для 0x80040066 и сообщения «указана недопустимая структура stgmedium» общий сброс допустим лишь как контроль, но не как доказательство причины.

Повторите операцию в том же окружении и сравните первый отличающийся вызов; для результата 0x80040066 это надёжнее единичного успеха на других данных.

Документация для результата 0x80040066: generic COM error codes · STGMEDIUM structure · IDataObject.


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