Condividi tramite


Interpretazione delle informazioni di associazione

Microsoft RPC consente ai programmi client e server di accedere e interpretare le informazioni in un handle di associazione. Ciò non significa che è possibile o provare ad accedere direttamente al contenuto di un handle di associazione. Microsoft RPC fornisce funzioni che impostano e recuperano le informazioni negli handle di associazione.

Per ottenere le informazioni in un handle di associazione, passare l'handle a RpcBindingToStringBinding. Restituisce le informazioni di associazione come stringa. Per ogni chiamata a RpcBindingToStringBinding, è necessario avere una chiamata corrispondente alla funzione RpcStringFree.

È possibile chiamare la funzione RpcStringBindingParse per analizzare la stringa ottenuta da RpcBindingToStringBindingBinding. Questa funzione alloca le stringhe per contenere le informazioni che analizza. Se non si vuole analizzare una determinata parte di informazioni di associazione, passare un valore NULL come valore di tale parametro. Assicurarsi di chiamare RpcStringFree per ogni stringa allocata.

Il frammento di codice seguente illustra come un'applicazione potrebbe chiamare queste funzioni.

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.

Il codice di esempio precedente chiama le funzioni RpcBindingToStringBindingBindingBindingParse per ottenere e analizzare le informazioni in un handle di associazione valido. Si noti che il valore NULL è stato passato come secondo parametro a RpcStringBindingParse. In questo modo la funzione ignora l'analisi dell'UUID dell'oggetto. Poiché non analizza l'UUID, RpcStringBindingParse non alloca una stringa. Questa tecnica consente all'applicazione di allocare memoria solo per le informazioni che si desidera analizzare e analizzare.