Что означает код HRESULT 0x80010114 (RPC_E_INVALID_OBJECT)?

 
Предыдущий Следующий
RPC_E_INVALID_IPID RPC_S_CALLPENDING

RPC_E_INVALID_OBJECT

Точка в workflow

Практический смысл RPC_E_INVALID_OBJECT (0X80010114): запрошенный COM-объект больше не существует. В трассировке отделяйте маркер «invalid object» от последующих wrapper/UI ошибок: они могут появиться уже после первичной границы и не объясняют исходное состояние.

Диагностический пакет

До повторной попытки запишите COM interface/method, apartment, marshaling path, call context и security state. Для условия «запрошенный COM-объект больше не существует» эти данные важнее общего текста сообщения, потому что позволяют связать результат с конкретным владельцем операции.

  • interface/method, proxy identity и call correlation ID.
  • origin/current thread, apartment и marshaling path.
  • call context, message-filter/security state и первый remote HRESULT.
НаблюдениеЧто оно означает
Первый вызов возвращает RPC_E_INVALID_OBJECTГраница «запрошенный COM-объект больше не существует» относится к текущему объекту и generation; сохраните это состояние до cleanup.
После одного целевого изменения код исчезаетСвязь с условием «запрошенный COM-объект больше не существует» подтверждается только если остальные входы и owning context не изменились.
Первым становится другой HRESULTСчитайте его новой первичной границей; маркер «invalid object» больше не должен подменять причину следующего отказа.

Специфическая проверка для этого кода

Сохраните object identity/OID, server process generation и последний успешный call. Проверьте, не был ли объект уничтожен/released или server перезапущен. Контроль — повторно активировать объект и получить новую identity; invalid IPID может затрагивать только конкретный interface pointer при ещё существующем объекте.

Контрольный запуск

Контрольный запуск должен воспроизводить «запрошенный COM-объект больше не существует» на тех же исходных данных. Затем исправьте только поле, структуру, token или registration value, которое отклонил компонент. Если операция проходит прежнюю стадию, гипотеза локализована; если нет — вернитесь к первому HRESULT и сохранённым полям.

  1. Зафиксируйте первый RPC_E_INVALID_OBJECT и объект, которому принадлежит маркер «invalid object».
  2. Сохраните входные данные и lifecycle-state до изменения условия «запрошенный COM-объект больше не существует».
  3. Измените только состояние, связанное с «запрошенный COM-объект больше не существует», и выполните тот же вызов ещё раз.

Завершение проверки

Не replay-те неидемпотентный remote method, пока неясно, завершился ли предыдущий вызов на сервере. Исправление считается реальным, когда прежняя граница «запрошенный COM-объект больше не существует» пройдена на сопоставимом входе, а не просто скрыта более общим сообщением.

Документация


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