Что означает код HRESULT 0x80010101 (RPC_E_OUT_OF_RESOURCES)?

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

RPC_E_OUT_OF_RESOURCES

Практический разбор RPC_E_OUT_OF_RESOURCES

RPC_E_OUT_OF_RESOURCES — HRESULT, относящийся к области COM/RPC. Среде COM не хватило системного ресурса, необходимого для обработки вызова, например памяти, дескрипторов или внутреннего объекта RPC.

В случае RPC_E_OUT_OF_RESOURCES статус возник в механизме удалённого или межапартаментного COM-вызова. В случае RPC_E_OUT_OF_RESOURCES он не заменяет исходное исключение серверного компонента, если такое было.

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

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

Имя RPC_E_OUT_OF_RESOURCES помогает сузить поиск: OUT — технический маркер «out»; OF — технический маркер «of»; RESOURCES — системные ресурсы. Эти части имени не заменяют документацию API, но позволяют проверить, что журнал и код относятся к одному и тому же условию.

Что проверить в первую очередь

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

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

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

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

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

В случае RPC_E_OUT_OF_RESOURCES проверка исправления RPC_E_OUT_OF_RESOURCES должна включать успешный рабочий путь, предсказуемый отказ на некорректном входе и отсутствие новых предупреждений в журналах подсистемы COM/RPC.

Ссылки по RPC_E_OUT_OF_RESOURCES


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