解释绑定信息

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 来获取和分析有效绑定句柄中的信息。 请注意, NULL 值作为第二个参数传递给 RpcStringBindingParse。 这会导致该函数跳过分析对象 UUID。 由于它不分析 UUID, RpcStringBindingParse 不会为其分配字符串。 通过此方法,应用程序只能为想要分析和分析的信息分配内存。