RPC_BINDING_HANDLE
typedef
RPC_BINDING_HANDLE handle_t;
Remarks
A binding
handle is a pointer-sized opaque variable containing information that the RPC
run-time library uses to access binding information. The run-time library uses
binding information to establish a client-server relationship that allows the
execution of remote procedure calls.
Based on the
context in which a binding handle is created, the binding handle is considered
a server binding handle or a client binding handle.
A server
binding handle contains the information necessary for a client to establish a
relationship with a specific server. Any number of RPC API run-time routines
return a server binding handle that can be used for making a remote procedure
call.
A client
binding handle cannot be used to make a remote procedure call. The RPC run-time
library creates and provides a client binding handle to a called server
procedure (also called a server manager routine) as the RPC_BINDING_HANDLE
parameter. The client binding handle contains information about the calling
client.
The RpcBinding*
and RpcNsBinding* routines return the status code
RPC_S_WRONG_KIND_OF_BINDING when an application provides the incorrect
binding-handle type.
An application
can share a single binding handle across multiple threads of execution. The RPC
run-time library manages concurrent remote procedure calls that use a single
binding handle. However, the application is responsible for binding-handle
concurrency control for operations that modify a binding handle. These
operations include the following routines:
RpcBindingFree
RpcBindingReset
RpcBindingSetAuthInfo
RpcBindingSetObject
For example,
if an application shares a binding handle across two threads of execution and
resets the binding-handle endpoint in one of the threads by calling RpcBindingReset,
the binding handle in the other thread is also reset. Similarly, freeing the
binding handle in one thread by calling RpcBindingFree frees the binding
handle in the other thread.
If you don t
want concurrency, you can design an application to create a copy of a binding
handle by calling RpcBindingCopy. In this case, an operation to the
first binding handle has no effect on the second binding handle.
Routines
requiring a binding handle as an argument show a data type of
RPC_BINDING_HANDLE. Binding-handle arguments are passed by value.