3.2.4.1.1.1 Determining RPC Binding Information for Activation

The client MUST call the IObjectExporter::ServerAlive2 method using the first RPC protocol sequence listed in section 3.1.2.3, unless the client COMVERSION is less than 5.6, in which case the client MUST call the IObjectExporter::ServerAlive method. The client MUST specify the RPC endpoint information to contain the remote server name on which the application wants to activate the object and the well-known endpoint of the object resolver.

The client MUST NOT specify security on the call.

If the IObjectExporter::ServerAlive2/IObjectExporter::ServerAlive call fails with the RPC_S_UNKNOWN_IF error (as specified in [MS-ERREF] section 2.2) indicating that the interface is not registered with the endpoint mapper of the server:

  • The client MUST perform dynamic endpoint resolution as specified in [C706] section 2.2.3.

  • The client MUST call the IObjectExporter::ServerAlive2 and IObjectExporter::ServerAlive methods again.

If the client calls the IObjectExporter::ServerAlive2 method, and if the call fails with the RPC_S_PROCNUM_OUT_OF_RANGE error (as specified in [MS-ERREF] section 2.2) indicating that the opnum is not in range:

  • The client MUST pick the RPC binding information used for the current IObjectExporter::ServerAlive2 call to be used for the activation request.

  • The client MUST assume a server COMVERSION of 5.1.

  • The client SHOULD proceed to issue the activation request, as described in section 3.2.4.1.1.2.

Otherwise, if the call fails with any other RPC error:

  • The client MUST pick the next RPC protocol sequence listed in section 3.1.2.3.

  • The client MUST call the IObjectExporter::ServerAlive2 and IObjectExporter::ServerAlive methods again and MUST treat RPC_S_UNKNOWN_IF and RPC_S_PROCNUM_OUT_OF_RANGE errors as specified previously.

If the call succeeds:

  • The client MUST pick the RPC binding information used for the current ServerAlive/ServerAlive2 call to be used for the activation request.

  • The client SHOULD proceed to issue the activation request as described in section 3.2.4.1.1.2.

If the client cannot determine the RPC binding information to be used for the activation request after using all the RPC protocol sequences listed in section 3.1.2.3, the client MUST fail the activation request from the DCOM application and SHOULD return RPC_S_SERVER_UNAVAILABLE (as specified in [MS-ERREF] section 2.2).

When the call completes, the client MUST perform capability negotiation as described in section 1.7. For the server's COM version, the client MUST use the COMVERSION obtained from the IObjectExporter::ServerAlive2 method. If the IObjectExporter::ServerAlive2 method failed with the RPC_S_PROCNUM_OUT_OF_RANGE error (as specified in [MS-ERREF] section 2.2), or, if the client used the IObjectExporter::ServerAlive method, the client MUST use 5.1 as the server's COM version.