| Предыдущий | Следующий |
| RPC_E_NOT_REGISTERED | RPC_E_SERVERFAULT |
RPC_E_FAULT
Практический разбор RPC_E_FAULT
RPC_E_FAULT — HRESULT, относящийся к области COM/RPC. COM/RPC не смогла завершить серверный вызов либо вернуть его результат, поэтому итог операции может быть неопределённым.
В случае RPC_E_FAULT код относится к COM/RPC и описывает передачу вызова, маршалинг параметров, состояние прокси либо исключение на стороне клиента или сервера.
Практический вывод для RPC_E_FAULT: этот HRESULT фиксирует описанное условие, но сам по себе не показывает, какой участник операции первым нарушил контракт. Для RPC_E_FAULT найдите первый вызов, вернувший статус, и только после этого меняйте конфигурацию подсистемы COM/RPC.
Как читать имя RPC_E_FAULT
Имя RPC_E_FAULT помогает сузить поиск: FAULT — сбой объекта. Эти части имени не заменяют документацию API, но позволяют проверить, что журнал и код относятся к одному и тому же условию.
Проверка причины
В случае RPC_E_FAULT важно сохранить исходный контекст вызова: имя функции, параметры, состояние объекта и первый низкоуровневый статус. Применительно к RPC_E_FAULT без этого одинаковый HRESULT может ошибочно связываться с разными причинами.
- При разборе RPC_E_FAULT сверьте типы, размеры и время жизни всех входных/выходных параметров, особенно указателей и пользовательских структур.
- При разборе RPC_E_FAULT после разрыва соединения или отключения объекта создайте новый COM-прокси, а не повторяйте вызов через старый.
- При разборе RPC_E_FAULT запишите CLSID/IID, номер метода, границу процесса или апартамента и сторону, на которой получен HRESULT.
- При разборе RPC_E_FAULT проверьте регистрацию интерфейса и proxy/stub, разрядность компонентов и совместимость type library.
Как локализовать источник
- Для RPC_E_FAULT включите журналирование RPC/COM только на время воспроизведения и зафиксируйте идентификатор интерфейса.
- Для RPC_E_FAULT проверьте тот же метод in-proc или с минимальными параметрами, чтобы локализовать маршалинг.
- Для RPC_E_FAULT соберите дампы клиента и сервера вокруг первого сбоя и сохраните correlation между вызовами.
Проверка после изменения
В случае RPC_E_FAULT проверка исправления RPC_E_FAULT должна включать успешный рабочий путь, предсказуемый отказ на некорректном входе и отсутствие новых предупреждений в журналах подсистемы COM/RPC.
Ссылки по RPC_E_FAULT
Нужно найти другой код? Найти другой код состояния или ошибки.