Binding is the process of making a logical connection from a client to a server and a handle is a data structure that represents a binding. It is analogous to a file handle or a window handle.
There are two principal types of binding: automatic and application managed. Auto binding requires a locator service on the server and does not maintain state information between client and server. Application-managed binding is controlled using the string-binding data structure or the name service to obtain a handle.
Context handles maintain state information on the server. The server can supply a context rundown routine which is called whenever an active binding to a client is broken unexpectedly.
If you use a context handle and do not specify a primary implicit handle, the MIDL compiler generates an auto handle to be used for the initial binding. It also generates the code in the client stub to perform auto binding.
Serialization handles are primitive handles used for data serialization. They cannot be used for binding.