Bağlama Bilgilerini Yorumlama
Microsoft RPC, istemci ve sunucu programlarınızın bağlama tutamacında bilgilere erişmesini ve bunları yorumlamasını sağlar. Bu, bağlama tutamacının içeriğine doğrudan erişebileceğiniz veya buna erişmeyi deneyebileceğiniz anlamına gelmez. Microsoft RPC, bağlama tanıtıcılarındaki bilgileri ayarlayan ve bu bilgileri geri alan işlevler sağlar.
Bağlama tanıtıcısına ait bilgileri elde etmek için tanıtıcıyı RpcBindingToStringBinding'e geçirin. Bağlama bilgilerini dize olarak döndürür. RpcBindingToStringBindingiçin, RpcStringFreeişlevine karşılık gelen bir çağrı yapmalısınız.
Aldığınız dizeyi ayrıştırmak için RpcStringBindingParseişlevini, RpcBindingToStringBindingişlevinden çağırabilirsiniz. Bu işlev dizeleri ayrıştırma bilgilerini içerecek şekilde ayırır. Belirli bir bağlama bilgisini ayrıştırmasını istemiyorsanız, bu parametrenin değeri olarak NULL geçirin. Ayırmış olduğu dizelerin her biri için mutlaka RpcStringFree çağırdığınızdan emin olun.
Aşağıdaki kod parçası, bir uygulamanın bu işlevleri nasıl çağırabileceğini gösterir.
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.
Önceki örnek kod, RpcBindingToStringBinding ve RpcStringBindingParse işlevlerini çağırarak bilgileri geçerli bir bağlama tanıtıcısında almak ve ayrıştırmak için kullanılmaktadır. NULL değerinin, ikinci parametre olarak RpcStringBindingParse 'e geçirildiğini unutmayın. Bu, işlevin UUID nesnesini ayrıştırma işlemini atlamasına neden olur. UUID ayrıştırılmadığından, RpcStringBindingParse bunun için bir dize oluşturmaz. Bu teknik, uygulamanızın yalnızca ayrıştırma ve çözümlemeyle ilgilendiğiniz bilgiler için bellek ayırmasını sağlar.