다음을 통해 공유


바인딩 정보 해석

Microsoft RPC를 사용하면 클라이언트 및 서버 프로그램이 바인딩 핸들의 정보에 액세스하고 해석할 수 있습니다. 그렇다고 해서 바인딩 핸들의 내용에 직접 액세스할 수 있거나 액세스해야 한다는 의미는 아닙니다. Microsoft RPC는 바인딩 핸들에서 정보를 설정하고 검색하는 함수를 제공합니다.

바인딩 핸들에서 정보를 얻으려면 RpcBindingToStringBinding에 핸들을 전달합니다. 바인딩 정보를 문자열로 반환합니다. RpcBindingToStringBinding에 대한 모든 호출에 대해 RpcStringFree 함수에 해당하는 호출이 있어야 합니다.

RpcStringBindingParse 함수를 호출하여 RpcBindingToStringBinding에서 가져온 문자열을 구문 분석할 수 있습니다. 이 함수는 구문 분석하는 정보를 포함하도록 문자열을 할당합니다. 특정 바인딩 정보를 구문 분석하지 않으려면 NULL 을 해당 매개 변수의 값으로 전달합니다. 할당하는 각 문자열에 대해 RpcStringFree 를 호출해야 합니다.

다음 코드 조각에서는 애플리케이션이 이러한 함수를 호출하는 방법을 보여 줍니다.

RPC_STATUS status;
UCHAR *lpzStringBinding;
UCHAR *lpzProtocolSequence;
UCHAR *lpzNetworkAddress;
UCHAR *lpzEndpoint;
UCHAR *NetworkOptions;
 
// The variable hBindingHandle is a valid binding handle.
 
status = RpcBindingToStringBinding(hBindingHandle,&lpzStringBinding);
// Code to check the status goes here.
 
status = RpcStringBindingParse(
    lpzStringBinding,
    NULL,
    &lpzProtocolSequence;
    &lpzNetworkAddress;
    &lpzEndpoint;
    &NetworkOptions);
// Code to check the status goes here.
 
// Code to analyze and alter the binding information in the strings
// goes here.
 
status = RpcStringFree(&lpzStringBinding);
// Code to check the status goes here.
 
status = RpcStringFree(&lpzProtocolSequence);
// Code to check the status goes here.
 
status = RpcStringFree(&lpzNetworkAddress);
// Code to check the status goes here.
 
status = RpcStringFree(&NetworkOptions);
// Code to check the status goes here.

앞의 샘플 코드는 RpcBindingToStringBindingRpcStringBindingParse 함수를 호출하여 유효한 바인딩 핸들에서 정보를 가져와 구문 분석합니다. 값 NULLRpcStringBindingParse에 두 번째 매개 변수로 전달되었습니다. 이로 인해 해당 함수는 개체 UUID 구문 분석을 건너뜁니다. UUID를 구문 분석하지 않으므로 RpcStringBindingParse 는 문자열을 할당하지 않습니다. 이 기술을 사용하면 애플리케이션이 구문 분석 및 분석에 관심이 있는 정보에 대해서만 메모리를 할당할 수 있습니다.