RPC 콜백 기능을 사용 하는 방법

요약

표준 원격 프로시저 호출 (RPC) 모델 하나를 포함 하는 서버에 또는 더 함수 호출을 내보내고 내보낸 함수를 호출 하는 서버의 클라이언트. 그러나 Microsoft의 구현은 RPC는 서버 클라이언트 함수를 호출할 수 있도록 특수 인터페이스 정의 언어 (IDL) 특성으로 콜백을 정의 합니다.


콜백은 서버 호출 컨텍스트에서만에서 사용할 수 있습니다. 따라서, 서버가 클라이언트의 원격 프로시저 호출 (반환 처리에서) 전에 수행 하는 경우에 서버가 클라이언트의 콜백 함수를 호출 수 있습니다. 예를 들어:

                CLIENT                SERVER
------ ------

Client makes RPC call. --->
<--- Server calls callback procedure.
Client returns from callback. --->
<--- Server calls callback procedure.
Client returns from callback. --->
<--- Server returns from original RPC call.

자세한 내용

RPC에서 콜백은 선언 됩니다. IDL 파일에 클라이언트의 소스에 정의 하 고 있습니다. 다음 콜백 선언 되 고 정의 된 방법을 보여 줍니다.
   [ SAMPLE.IDL ]   [
uuid(9FEE4F51-0396-101A-AE4F-08002B2D0065),
version(1.0),
pointer_default( unique )
]

{
void RPCProc( [in, string] unsigned char *pszStr );
[callback] void CallbackProc([in,string] unsigned char *pszStr);
}


[ SAMPLEC.C (Client)]
/*
Callback RPC call (initiated from server, executed on client).
*/
void CallbackProc( unsigned char *pszString )
{
printf("Call from server, printed on client: %s", pszStr );
}


[ SAMPLES.C (Server)]
/*
"Standard" RPC call (initiated from client, executed on server).
Makes a call to client callback procedure, CallbackProc().
*/
void RPCProc( unsigned char *pszStr )
{
printf("About to call Callback() client function.."
CallbackProc( pszStr );
printf("Called callback function.");
}

샘플 메이크파일에는 "-ms_ext" 스위치를 사용 해야 합니다 MIDL 컴파일에 대해서. 예를 들어:

   midl -ms_ext -cpp_cmd $(cc) -cpp_opt "-E" sample.idl
속성

문서 ID: 96781 - 마지막 검토: 2017. 2. 7. - 수정: 1

피드백