Interprétation des informations de liaison

Microsoft RPC permet à vos programmes client et serveur d’accéder et d’interpréter les informations dans un handle de liaison. Cela ne signifie pas que vous pouvez ou devez essayer d’accéder directement au contenu d’un handle de liaison. Microsoft RPC fournit des fonctions qui définissent et récupèrent les informations dans les handles de liaison.

Pour obtenir les informations dans un handle de liaison, passez le handle à RpcBindingToStringBinding. Il retourne les informations de liaison sous forme de chaîne. Pour chaque appel à RpcBindingToStringBinding, vous devez avoir un appel correspondant à la fonction RpcStringFree.

Vous pouvez appeler la fonction RpcStringBindingParse pour analyser la chaîne que vous obtenez de RpcBindingToStringBinding. Cette fonction alloue des chaînes pour contenir les informations qu’elle analyse. Si vous ne souhaitez pas qu’il analyse un élément particulier d’informations de liaison, transmettez une valeur NULL comme valeur de ce paramètre. Veillez à appeler RpcStringFree pour chacune des chaînes qu’il alloue.

Le fragment de code suivant illustre comment une application peut appeler ces fonctions.

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.

L’exemple de code précédent appelle les fonctions RpcBindingToStringBinding et RpcStringBindingParse pour obtenir et analyser les informations dans un handle de liaison valide. Notez que la valeur NULL a été passée en tant que deuxième paramètre à RpcStringBindingParse. Cette fonction ignore l’analyse de l’UUID de l’objet. Étant donné qu’il n’analyse pas l’UUID, RpcStringBindingParse n’allouera pas de chaîne pour celui-ci. Cette technique permet à votre application d’allouer uniquement de la mémoire pour les informations qui vous intéressent à l’analyse et à l’analyse.