### Invoking Remote Procedure Calls

This step is the culmination of all the foregoing steps; here the client makes its first remote call to the server. This call, which will obviously be application specific (its definition was specified in the application's .idl file, and possibly modified by the .acf file), will look something like the following:

my_rpc_op(binding_handle, arg1, arg2, arg3);

Note that the presence of the binding handle as a parameter means that explicit binding handles are being used.

Note also that after all the preceding talk about interfaces, no interface handle appears in the parameter list. The RPC runtime takes care internally of making sure that the interface offered by the server exactly matches what the client expects. The my_rpc_op( ) routine was (or should have been) defined as part of the application's interface. When the client calls my_rpc_op( ) in the present step, the client stub code (which was generated during the IDL compilation step) will include the correct UUID for the interface the routine is associated with in the data sent out on the network. The RPC runtime uses the interface specification included with each RPC as a "fingerprint" to ensure that the operation being requested of a server is in fact implemented by that server. This ensures that interface compatibility is never dependent on the vagaries of application code.

More:

The Possibility of Binding Failure

The Result of Successful Binding

####