| Предыдущий | Следующий |
| RPC_S_INVALID_NETWORK_OPTIONS | RPC_S_CALL_FAILED |
RPC_S_NO_CALL_ACTIVE
API, привязанный к вызову, использован вне активного серверного вызова
RPC_S_NO_CALL_ACTIVE является ошибкой потока и контекста вызова. Некоторые серверные API исследуют текущий RPC-вызов, диспетчеризованный в вызывающем потоке, например для проверки отмены, запроса сведений о вызывающей стороне или изменения состояния вызова. Они не могут определить вызов после возврата процедуры диспетчера или из несвязанного рабочего потока.
Запишите идентификатор потока при входе в заглушку, диспетчеризации менеджера, передаче рабочему потоку и вызове завершившегося ошибкой API RPC. Если работа делегируется, передавайте явно поддерживаемую привязку или асинхронное состояние вместо предположения, что локальный для потока контекст вызова последует за задачей. Этот статус не означает отключение клиента; он сообщает, что API не может найти активный вызов в текущем контексте выполнения вызывающей стороны.
Что проверить
- Убедитесь, что API вызывается, пока серверная процедура менеджера всё ещё активна.
- Не переносите операции, требующие контекста вызова, в универсальный пул потоков.
- Используйте асинхронные API RPC, если работа должна пережить исходный поток диспетчеризации.
Ссылки
- Microsoft: поток выполнения RPC от клиента через среду выполнения и заглушку к серверу
- Microsoft: модель выполнения асинхронного RPC
- Microsoft: обработка ошибок RPC
Нужно найти другой код? Найти другой код состояния или ошибки.