RpcAsyncCancelCall 함수(rpcasync.h)

클라이언트는 RpcAsyncCancelCall 함수를 호출하여 비동기 호출을 취소합니다.

구문

RPC_STATUS RpcAsyncCancelCall(
  PRPC_ASYNC_STATE pAsync,
  BOOL             fAbort
);

매개 변수

pAsync

비동기 호출 정보를 포함하는 RPC_ASYNC_STATE 구조체에 대한 포인터입니다.

fAbort

TRUE이면 호출이 즉시 취소됩니다. FALSE이면 서버가 호출을 완료할 때까지 기다립니다.

반환 값

의미
RPC_S_OK
취소 요청이 처리되었습니다.
RPC_S_INVALID_ASYNC_HANDLE
비동기 핸들이 잘못되었습니다.
 
참고 유효한 오류 코드 목록은 RPC 반환 값을 참조하세요.
 

설명

클라이언트가 비동기 호출의 취소를 요청하는 방법에는 중단비동기 호출의 두 가지 방법이 있습니다. 중단 취소(fAbortCallTRUE임)에서 RpcAsyncCancelCall 함수는 서버 및 클라이언트 쪽에 취소 알림을 보내고 비동기 호출은 서버의 응답을 기다리지 않고 즉시 취소됩니다. 다중 스레드 애플리케이션에서는 호출을 시작한 스레드가 성공적으로 반환된 후에만 클라이언트에서 비동기 호출을 취소할 수 있습니다. 이는 호출이 발급되는 동안 동기적으로 실패한 후 다른 스레드에서 비동기적으로 취소되지 않도록 하는 데 필요합니다. 일반적으로 비동기 호출이 동기적으로 실패하는 경우 비동기적으로 취소해서는 안 됩니다. 클라이언트 애플리케이션은 다른 스레드에서 호출이 실행되고 취소될 수 있는 경우 이 동작을 확인해야 합니다.

서버는 RpcServerTestCancel을 호출하여 클라이언트의 취소 요청을 확인합니다. 취소 요청이 실행된 시점의 호출 상태와 서버가 취소를 확인하는 빈도에 따라 호출이 정상적으로 완료되거나 완료되지 않을 수 있습니다. 클라이언트 애플리케이션은 호출을 완료하려면 RpcAsyncCompleteCall 을 호출해야 하며 반환 값은 호출이 완료되었는지, 실패했는지 또는 취소되었는지를 나타냅니다. 그러나 클라이언트는 RpcAsyncCompleteCall을 호출하기 전에 원래 호출이 완료되기를 기다려야 합니다.

nonabortive cancel(fAbortCallFALSE임)에서 RpcAsyncCancelCall 함수는 취소의 서버에 알리고 클라이언트는 서버가 호출을 완료할 때까지 기다립니다. 기본 제공 시간 제한 메커니즘은 없습니다. 호출 시간 초과를 원하는 경우 클라이언트는 먼저 자체 시간 제한 메커니즘을 사용하여 중단 취소를 실행해야 합니다. 호출 시간이 초과되면 클라이언트가 중단 취소를 실행할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 rpcasync.h(Rpc.h 포함)
라이브러리 Rpcrt4.lib
DLL Rpcrt4.dll

추가 정보

비동기 RPC

RPC_ASYNC_STATE

RpcAsyncAbortCall

RpcAsyncCompleteCall

RpcAsyncGetCallHandle

RpcAsyncGetCallStatus

RpcAsyncInitializeHandle

RpcServerTestCancel