Функция RpcAsyncCompleteCall (rpcasync.h)

Клиент и сервер вызывают функцию RpcAsyncCompleteCall для выполнения асинхронного вызова удаленной процедуры.

Синтаксис

RPC_STATUS RpcAsyncCompleteCall(
  PRPC_ASYNC_STATE pAsync,
  void             *Reply
);

Параметры

pAsync

Указатель на структуру RPC_ASYNC_STATE , содержащую сведения об асинхронных вызовах.

Reply

Указатель на буфер, содержащий возвращаемое значение удаленного вызова процедуры.

Возвращаемое значение

В дополнение к следующим значениям RpcAsyncCompleteCall также может возвращать любую общую ошибку RPC или конкретного приложения.

Значение Значение
RPC_S_OK
Вызов выполнен успешно.
RPC_S_INVALID_ASYNC_HANDLE
Недопустимый дескриптор асинхронного вызова.
RPC_S_ASYNC_CALL_PENDING
Вызов еще не завершен.
RPC_S_CALL_CANCELLED
Звонок отменен.
 
Примечание Список допустимых кодов ошибок см. в разделе Возвращаемые значения RPC.
 

Комментарии

Завершает асинхронный вызов RPC. Как клиент, так и сервер вызывают эту функцию.

Клиент. Ответ указывает на буфер, который получит ответ. Если клиент вызывает эту функцию до поступления ответа, вызов возвращает RPC_S_ASYNC_CALL_PENDING. Буфер должен быть допустимым и иметь достаточный размер для получения возвращаемого значения. Если этот вызов выполнен успешно, допустимы параметры [out] и [in,out] . Если вызов не возвращает RPC_S_ASYNC_CALL_PENDING, этот вызов RpcAsyncCompleteCall является окончательным для вызова RPC. После вызова этой функции, независимо от успешного или неудачного, освобождаются все ресурсы, выделенные средой выполнения RPC. Последующие вызовы функций RpcAsyncCompleteCall или RpcAsyncCancelCall имеют неопределенные результаты, пока не будет инициирован новый вызов в структуре RPC_ASYNC_STATE.

Сервер . Ответ указывает на буфер, содержащий возвращаемое значение, которое необходимо отправить клиенту. Необходимо задать допустимый буфер для ответа , только если функция объявлена с типом возвращаемого значения. Перед вызовом RpcAsyncCompleteCall необходимо обновить параметры [out] и [in,out] . Эти параметры и асинхронный дескриптор не должны касаться после возврата вызова RpcAsyncCompleteCall . Вызов RpcAsyncCompleteCall на сервере является окончательным. Если вызов функции RpcAsyncCompleteCall завершается сбоем, среда выполнения RPC освобождает параметры.

Все параметры [out] , включая параметры [comm_status] и [fault_status] , допустимы, только если возвращаемое значение RpcAsyncCompleteCall равно RPC_S_OK.

Требования

   
Минимальная версия клиента Windows 2000 Профессиональная [классические приложения | Приложения UWP]
Минимальная версия сервера Windows 2000 Server [классические приложения | Приложения UWP]
Целевая платформа Windows
Header rpcasync.h (включая Rpc.h)
Библиотека Rpcrt4.lib
DLL Rpcrt4.dll

См. также раздел

Асинхронный RPC

Обработка ошибок

RPC_ASYNC_STATE

RpcAsyncAbortCall

RpcAsyncCancelCall

RpcAsyncGetCallHandle

RpcAsyncGetCallStatus

RpcAsyncInitializeHandle

RpcServerTestCancel