Что означает код HRESULT 0x8001000C (RPC_E_CLIENT_CANTUNMARSHAL_DATA)?

 
Предыдущий Следующий
RPC_E_CLIENT_CANTMARSHAL_DATA RPC_E_SERVER_CANTMARSHAL_DATA

RPC_E_CLIENT_CANTUNMARSHAL_DATA

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

RPC_E_CLIENT_CANTUNMARSHAL_DATA — HRESULT, относящийся к области COM/RPC. COM-клиент не смог распаковать данные ответа, возвращённые сервером.

Этот HRESULT возвращён инфраструктурой COM. Применительно к этому результату полезная причина определяется границей процесса/апартамента, интерфейсом, методом и тем, какая сторона не смогла маршалировать данные.

Особенность результат

Сверьте proxy/stub, type library и версии интерфейса на обеих сторонах, особенно после изменения out-параметров или custom marshaling. Если метод мог изменить серверное состояние до ошибки распаковки ответа, перед retry сначала запросите фактический итог или примените idempotency key.

Разбор условия ошибки

Важно сохранить исходный контекст вызова: имя функции, параметры, состояние объекта и первый низкоуровневый статус. Применительно к этому результату без этого одинаковый HRESULT может ошибочно связываться с разными причинами.

  • При разборе этот результат сверьте типы, размеры и время жизни всех входных/выходных параметров, особенно указателей и пользовательских структур.
  • При разборе он после разрыва соединения или отключения объекта создайте новый COM-прокси, а не повторяйте вызов через старый.
  • При разборе он запишите CLSID/IID, номер метода, границу процесса или апартамента и сторону, на которой получен HRESULT.
  • При разборе он проверьте регистрацию интерфейса и proxy/stub, разрядность компонентов и совместимость type library.

Какие данные собрать

  • Включите журналирование RPC/COM только на время воспроизведения и зафиксируйте идентификатор интерфейса.
  • Проверьте тот же метод in-proc или с минимальными параметрами, чтобы локализовать маршалинг.
  • Соберите дампы клиента и сервера вокруг первого сбоя и сохраните correlation между вызовами.

Критерий успешного исправления

Считайте причину он устранённой только после проверки на тех же данных и под той же учётной записью, где возник сбой, а затем выполните контрольный тест с заведомо неверным входом.

Ссылки по этому результату


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