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