Bindingsinformatie interpreteren
Met Microsoft RPC kunnen uw client- en serverprogramma's toegang krijgen tot en de informatie in een bindinghandle interpreteren. Dit betekent niet dat u kunt of zou moeten proberen rechtstreeks toegang te krijgen tot de inhoud van een bindingshandle. Microsoft RPC biedt functies waarmee de informatie in bindingsgrepen wordt ingesteld en opgehaald.
Om de informatie in een bindingshandle te krijgen, geeft u de handle door aan RpcBindingToStringBinding. De bindingsinformatie wordt als een tekenreeks geretourneerd. Voor elke aanroep naar RpcBindingToStringBindingmoet u een bijbehorende aanroep hebben voor de functie RpcStringFree.
U kunt de functie RpcStringBindingParse aanroepen om de tekenreeks te parseren die u verkrijgt van RpcBindingToStringBinding. Met deze functie worden tekenreeksen toegewezen die de informatie bevatten die wordt geparseerd. Als u niet wilt dat een bepaald stukje bindingsgegevens worden geparseerd, geeft u een NULL- door als de waarde van die parameter. Zorg ervoor dat u RpcStringFree- aanroept voor elke tekenreeks die wordt toegewezen.
Het volgende codefragment illustreert hoe een toepassing deze functies kan aanroepen.
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.
De voorgaande voorbeeldcode roept de functies RpcBindingToStringBinding en RpcStringBindingParse aan om de informatie op te halen en te parseren in een geldige bindingsgreep. Houd er rekening mee dat de waarde NULL- is doorgegeven als de tweede parameter voor RpcStringBindingParse. Dit zorgt ervoor dat de functie het parseren van het object UUID overslaat. Omdat de UUID niet wordt geparseerd, wijst RpcStringBindingParse er geen tekenreeks voor toe. Met deze techniek kan uw toepassing alleen geheugen toewijzen voor de informatie die u wilt parseren en analyseren.