RpcBindingBind 함수(rpcasync.h)

RpcBindingBind 함수는 RPC 서버에 연결하고 바인딩합니다.

구문

RPC_STATUS RpcBindingBind(
  [in, optional] PRPC_ASYNC_STATE   pAsync,
  [in]           RPC_BINDING_HANDLE Binding,
  [in]           RPC_IF_HANDLE      IfSpec
);

매개 변수

[in, optional] pAsync

비동기 호출 정보를 포함하는 RPC_ASYNC_STATE 구조체에 대한 포인터입니다. 이 상태 정보에는 바인딩 작업이 완료될 때 신호를 전송하는 데 사용되는 완료 방법이 포함되어 있습니다.

[in] Binding

RpcBindingCreate에 대한 이전 호출을 사용하여 만든 바인딩 핸들을 포함하는 구조체를 RPC_BINDING_HANDLE.

[in] IfSpec

바인딩 핸들을 호출할 인터페이스를 지정하는 RPC_IF_HANDLE 값입니다.

반환 값

이 함수는 성공에 대한 RPC_S_OK 반환합니다. 그렇지 않으면 RPC_S_* 오류 코드가 반환됩니다. 이러한 오류 코드에 대한 자세한 내용은 RPC 반환 값을 참조하세요.

반환 코드 설명
RPC_S_OK
RPC가 서버에 성공적으로 바인딩되고 원격 호출을 수행할 수 있습니다.
RPC_S_CANNOT_SUPPORT
이 바인딩 작업에 대해 RPC의 사용되지 않는 기능이 요청되었습니다.
 
참고 유효한 오류 코드 목록은 RPC 반환 값을 참조하세요.
 

설명

RpcBindingBind 는 RPC 서버에 연결하고 RpcBindingCreate에 대한 이전 호출에서 반환된 바인딩 핸들을 사용하여 바인딩합니다. 이 메서드를 사용하여 설정된 바인딩 핸들을 "빠른" 바인딩 핸들이라고 합니다.

pAsync 매개 변수 값이 NULL이 아닌 경우 바인딩은 비동기적이며 제공된 비동기 상태에서 RpcAsyncCancelCallRpcAsyncGetCallStatus 호출을 수행할 수 있습니다. 호출자에게 바인딩이 완료되었음을 알리는 데 사용되는 비동기 상태 정보 wis에 지정된 완료 메서드입니다. 완료 알림이 표시되면 새로 바인딩된 바인딩 핸들을 사용하여 호출을 수행할 수 있습니다.

바인딩 메서드는 바인딩 핸들을 사용하여 수행할 수 있는 호출을 결정하지 않습니다. 바인딩이 동기적이면 바인딩 핸들에서 비동기 호출을 수행할 수 있고 그 반대의 경우도 마찬가지입니다. bind 메서드는 특히 비동기 바인딩의 경우 성공적인 바인딩에 대한 알림이 신호되는 방법을 결정합니다.

이 API는 메시지를 RPC 서버와 교환하므로 네트워크 트래픽 및 서버 차단을 비롯한 여러 독립적인 요인에 따라 바인딩 작업이 오래 걸릴 수 있습니다. 바인딩이 동기식이면 서버가 차단되면 바인딩 작업이 차단될 수 있습니다.

바인딩이 완료되면 바인딩 핸들에서 수행된 호출의 의미 체계는 다른 유형의 바인딩 핸들에서 수행된 호출과 동일하지만 아래에 나열된 네 가지 주목할 만한 차이점이 있습니다.

  • 이 바인딩 핸들에 대한 모든 호출은 IfSpec에 지정된 인터페이스에서 수행해야 합니다. 바인딩 핸들은 이 인터페이스에 고유하게 연결됩니다. 바인딩 핸들이 제거되기 전에 인터페이스 자체를 언로드할 수 있지만 인터페이스에 대한 광범위한 정보가 바인딩 핸들에 캐시되고 다른 인터페이스에 대해 동일한 바인딩 핸들에서 호출이 이루어지면 결과가 정의되지 않습니다.
  • 바인딩 핸들에서는 RPC 콜백이 허용되지 않습니다. RPC 서버가 [콜백] 특성이 있는 메서드를 사용하여 콜백을 시도하면 RPC_S_CANNOT_SUPPORT 오류 상태 코드로 호출이 거부됩니다.
  • 클래식 바인딩 핸들을 사용하면 RPC는 연결이 끊어지면 서버와 투명하게 다시 연결하려고 시도합니다. 빠른 바인딩 핸들의 경우 RPC는 서버에 투명하게 다시 연결하려고 시도하지 않습니다. 대신 RPC_S_SERVER_UNAVAILABLE, RPC_S_CALL_FAILED 및 RPC_C_CALL_FAILED_DNE 오류 중 하나를 반환합니다. 거부된 자격 증명으로 인해 연결이 끊어지면 RPC_S_ACCESS_DENIED 반환됩니다. 메모리 부족으로 인해 서버에서 일시적인 오류가 발생하면 RPC_S_OUT_OF_MEMORY 반환됩니다. 다른 연결 오류는 서버 루틴에서 반환된 마샬링 또는 경계 해제 오류의 결과입니다. 연결이 끊어진 경우 호출된 는 RpcBindingUnbind를 호출하여 바인딩을 해제한 다음 RpcBindingBind에 대한 다른 호출로 다시 바인딩해야 합니다.

RpcBindingBind에 대한 호출이 실패하면 바인딩 핸들이 서버에 바인딩되지 않고 호출자가 동일한 API에 대한 다른 호출로 다시 바인딩을 시도하거나 바인딩 핸들을 해제할 수 있습니다. 실패한 바인딩 작업은 바인딩 핸들을 바인딩 상태로 이동하지 않으므로 RpcBindingUnbind 를 호출하면 안 됩니다.

바인딩 작업이 완료를 알리는 신호가 있을 때까지 특정 함수를 호출해서는 안 됩니다. 특히 다음을 수행합니다.

참고 현재 이 함수는 ncalrpc 프로토콜 시퀀스만 지원합니다.
 

요구 사항

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

추가 정보

RpcBinding만들기

RpcBindingUnbind