Что означает код ошибки Windows 1914 (RPC_S_INVALID_ASYNC_HANDLE)?

 
Предыдущий Следующий
RPC_S_SEND_INCOMPLETE RPC_S_INVALID_ASYNC_CALL

RPC_S_INVALID_ASYNC_HANDLE

Асинхронный API RPC отклонил сам дескриптор состояния

RPC_S_INVALID_ASYNC_HANDLE означает, что переданное значение RPC_ASYNC_STATE не является допустимым дескриптором асинхронного вызова. Структура могла быть не инициализирована, её поля, принадлежащие среде выполнения, могли быть изменены, она могла выйти из области видимости либо уже перейти в конечное состояние жизненного цикла, несовместимое с API.

Инициализируйте каждое состояние с помощью RpcAsyncInitializeHandle, сохраняйте его адрес и память до окончательного завершения и никогда не изменяйте Size, Signature, Lockили StubInfo. Сопоставляйте операции отмены, запроса состояния и завершения по одному и тому же указателю состояния. Побайтовое копирование структуры создаёт второго недопустимого владельца, а не ещё один дескриптор вызова.

Что проверить

  • Записывайте адрес состояния, результат инициализации и каждый API, использующий его.
  • Сохраняйте структуру до тех пор, пока RpcAsyncCompleteCall не вернёт окончательный результат.
  • Не перезаписывайте поля, принадлежащие среде выполнения, и не используйте стековую память повторно слишком рано.

Ссылки


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