| Предыдущий | Следующий |
| RPC_S_INVALID_ASYNC_HANDLE | RPC_X_PIPE_CLOSED |
RPC_S_INVALID_ASYNC_CALL
Запрошенное действие конфликтует с жизненным циклом асинхронного вызова
RPC_S_INVALID_ASYNC_CALL отличается от недопустимого дескриптора: объект состояния может быть распознан, но связанный вызов недопустим для запрошенной операции. Примеры: двойное завершение, запрос состояния или отмена после окончательного завершения, использование клиентской операции для серверного состояния либо действие до успешной выдачи асинхронного вызова.
Моделируйте жизненный цикл явно: инициализация, выдача, ожидание или запрос, необязательная отмена и ровно один окончательный путь завершения. Атомарно записывайте каждый переход, если вызов могут наблюдать несколько потоков. Не считайте одно лишь уведомление разрешением на завершение; получите текущее состояние и следуйте документированному контракту API.
Что следует проверить
- Назначьте единственного владельца окончательного завершения каждого асинхронного вызова.
- Отклоняйте повторные операции отмены, прерывания или завершения в коде приложения.
- Сопоставляйте уведомления с точным экземпляром RPC_ASYNC_STATE.
Ссылки
- Microsoft: жизненный цикл клиентского асинхронного RPC
- Microsoft: запрос состояния асинхронного вызова
- Microsoft: правила окончательного завершения
Нужно найти другой код? Найти другой код состояния или ошибки.