4.2 Starting a New Session on a Remote Server Using the IDMRemoteServer Interface

The following diagram shows how the client would start a new session on a remote server by using the IDMRemoteServer interface.

Steps to start a new session on a remote server using IDmRemoteServer interface

Figure 2: Steps to start a new session on a remote server using IDmRemoteServer interface

  1. The client starts a new session of the local disk management server by invoking DCOM with the class GUID of the disk management server and requests for the IUnknown interface.

  2. The local server returns a reference to the IUnknown interface.

  3. The client requests binding to the IDmRemoteServer interface.

  4. The local server returns a reference to the IDmRemoteServer interface.

  5. The client calls the IDMRemoteServer::CreateRemoteObject (Opnum 3) method passing it the name of the remote server.

  6. The local server does the following:

    • Starts the disk management server on the remote server by invoking DCOM with the class GUID of the disk management server and remote server name, and, requests the IUnknown interface.

    • Receives an IUnknown interface pointer to the remote server.

    • Stores the reference to the IUnknown interface of the remote server.

  7. The client requests binding to the IVolumeClient3 interface.

  8. The local server in turn calls in to the remote server by using the stored IUnknown interface pointer and requests binding to the IVolumeClient3 interface. The local server returns a reference to the IVolumeClient3 interface on the remote server to the client.

  9. The client can now release the IDmRemoteServer interface, because it now holds an interface pointer to the remote server.

  10. The client calls the IVolumeClient3::Initialize() method, passing it a reference to its notification callback interface IDMNotify.

  11. The remote server stores the client's IDMNotify notification callback, finishes the initialization, and returns success to the client.