Что означает код HRESULT 0x80010103 (RPC_E_NOT_REGISTERED)?

 
Предыдущий Следующий
RPC_E_ATTEMPTED_MULTITHREAD RPC_E_FAULT

RPC_E_NOT_REGISTERED

Как диагностировать RPC_E_NOT_REGISTERED

RPC_E_NOT_REGISTERED — HRESULT, относящийся к области COM/RPC. Запрошенный COM-интерфейс не зарегистрирован либо недоступен у целевого серверного объекта.

Для RPC_E_NOT_REGISTERED код относится к COM/RPC и описывает передачу вызова, маршалинг параметров, состояние прокси либо исключение на стороне клиента или сервера.

Практический вывод для RPC_E_NOT_REGISTERED: этот HRESULT фиксирует описанное условие, но сам по себе не показывает, какой участник операции первым нарушил контракт. Для RPC_E_NOT_REGISTERED найдите первый вызов, вернувший статус, и только после этого меняйте конфигурацию подсистемы COM/RPC.

Как читать имя RPC_E_NOT_REGISTERED

Имя RPC_E_NOT_REGISTERED помогает сузить поиск: NOT — отрицание условия; REGISTERED — регистрация объекта. Эти части имени не заменяют документацию API, но позволяют проверить, что журнал и код относятся к одному и тому же условию.

Практическая диагностика

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

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

Как локализовать источник

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

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

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

Ссылки по RPC_E_NOT_REGISTERED


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