Что означает код HRESULT 0x80080009 (MEM_E_INVALID_ROOT)?

 
Предыдущий Следующий
CO_E_SERVER_STOPPING MEM_E_INVALID_LINK

MEM_E_INVALID_ROOT

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

MEM_E_INVALID_ROOT (0x80080009) — Указан недопустимый указатель на корневой блок.

Контекст результата 0x80080009 — подсистема «COM/WinRT» и область «контракт вызываемого interface, аргументы и state объекта». Условие «указан недопустимый указатель на корневой блок» указывает на тему «mem, недопустимый, root», а не на общий отказ всего компонента.

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

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

Для воспроизведения 0x80080009 сохраните IID и method, thread/apartment, argument values, object state и исходный HRESULT; отдельно запишите HRESULT, IStorage, IStream. По теме «mem, недопустимый, root» для 0x80080009 сравните эти данные с исправным запуском до очистки журналов или пересоздания объекта.

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

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

Документация для результата 0x80080009: Microsoft Open Specifications: HRESULT values · Structured Storage · IStorage.


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