3.1.3 Initialization

A client SHOULD choose to use one of the following sets of interfaces when communicating with a Disk Management Remote Protocol server, grouped by the functionality that they offer.

The client negotiates for a given set of server functionality by specifying the UUID corresponding to the wanted RPC interface when binding to the server, as specified in section 1.9.

The client MAY choose to use the IDMRemoteServer interface to create an instance of a Disk Management Remote Protocol remote server.

A client initializes by creating an RPC binding handle to the IVolumeClient3 interface. If the IVolumeClient3 interface is not advertised, or fails, the client MAY fall back to creating an RPC binding handle to the IVolumeClient interface. A description of how to get a client-side RPC binding handle for an IVolumeClient or IVolumeClient3 interface is as specified in [MS-DCOM] section 3.2.4.

When the client has obtained the IVolumeClient or IVolumeClient3 interface, the client MUST invoke the Initialize method on the interface.

When the client has called IVolumeClient::Initialize or IVolumeClient3::Initialize, the client MAY begin making calls against the server.

If the client has obtained binding to the IVolumeClient3 interface, it can also create an RPC binding handle to the IVolumeClient4 interface to call its methods. If the client has obtained binding to the IVolumeClient interface, it can create an RPC binding handle to the IVolumeClient2 interface to call its methods.