바인딩 정보 해석
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.
위의 샘플 코드는 RpcBindingToStringBinding함수를 호출하고 RpcStringBindingParse함수를 호출하여 유효한 바인딩 핸들에서 정보를 가져오고 구문 분석합니다. NULL 값이 RpcStringBindingParse의 두 번째 매개 변수로 전달되었습니다. 이렇게 하면 해당 함수가 개체 UUID 구문 분석을 건너뜁니다. UUID를 구문 분석하지 않기 때문에 RpcStringBindingParse은 해당 문자열을 할당하지 않습니다. 이 기술을 사용하면 애플리케이션이 구문 분석 및 분석에 관심이 있는 정보에 대해서만 메모리를 할당할 수 있습니다.