Interprétation des informations de liaison
Microsoft RPC permet à vos programmes client et serveur d’accéder aux informations contenues dans un handle de liaison et de les interpréter. 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 des handles de liaison.
Pour obtenir les informations dans un handle de liaison, transmettez le handle à RpcBindingToStringBinding. Elle retourne les informations de liaison sous la forme d’une 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 à partir de RpcBindingToStringBinding. Cette fonction alloue des chaînes pour contenir les informations qu’elle analyse. Si vous ne souhaitez pas qu’il analyse une partie particulière des 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é transmise en tant que deuxième paramètre à RpcStringBindingParse. Cela provoque l’ignorance de l’analyse de l’UUID de l’objet par cette fonction. Étant donné qu’elle n’analyse pas l’UUID, RpcStringBindingParse n’alloue pas de chaîne pour celle-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.