Partilhar via


Interpretação de informações vinculativas

O Microsoft RPC permite que os programas cliente e servidor acessem e interpretem as informações em um identificador de associação. Isso não significa que você pode ou deve tentar acessar o conteúdo de um identificador de vinculação diretamente. A Microsoft RPC fornece funções que definem e recuperam as informações dos identificadores de ligação.

Para obter as informações num identificador de ligação, passe o identificador para RpcBindingToStringBinding. Ele retorna as informações de associação como uma cadeia de caracteres. Para cada chamada para RpcBindingToStringBinding, deve-se ter uma chamada correspondente para a função RpcStringFree.

Você pode chamar a função RpcStringBindingParse para analisar a cadeia de caracteres obtida de RpcBindingToStringBinding. Essa função aloca cadeias de caracteres para conter as informações que analisa. Se você não quiser que ele analise uma parte específica de informações de vinculação, passe um NULL como o valor desse parâmetro. Certifique-se de chamar RpcStringFree para cada uma das cadeias de caracteres que ele aloca.

O fragmento de código a seguir ilustra como um aplicativo pode chamar essas funções.

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.

O código de exemplo anterior chama as funções RpcBindingToStringBinding e RpcStringBindingParse para obter e analisar as informações em um identificador de associação válido. Observe que o valor NULL foi passado como o segundo parâmetro para RpcStringBindingParse. Isso faz com que essa função ignore a análise do UUID do objeto. Como ele não analisa o UUID, RpcStringBindingParse não alocará uma cadeia de caracteres para ele. Essa técnica permite que a sua aplicação aloque apenas memória para as informações que você está interessado em analisar.