3.1.1.3 Initialization

Object exporters MUST listen by way of RPC protocols described in section 3.1.2.3 and as specified in [C706] section 3.1.20 (rpc_server_use_protseq). Because listening is potentially expensive, such initialization SHOULD be delayed until an object reference is marshaled from the object exporter.

The object exporter MUST listen on an RPC protocol before returning the object exporter bindings that specify that RPC protocol sequence identifier in the response to the activation or OXID resolution requests.

The object exporter MUST obtain its OXID from the resolver.

The object exporter MUST obtain the OID of the Remote Unknown object from the resolver.

The object exporter MUST obtain the ping period from the resolver; for details, see section 3.1.2.2.

Each object exporter instance MUST create an IPID entry for its IRemUnknown interface. If an object exporter instance is at COMVERSION 5.6 or above, it MUST also create an IPID entry for the IRemUnknown2 interface. An object exporter instance MUST create its IPID entry as follows:

  • It MUST allocate an IPID and set it in the IPID entry.

  • It MUST set the IID in the IPID entry to the IID for the IRemUnknown interface or the IRemUnknown2 interface.

  • It MUST instruct RPC to listen on the IRemUnknown interface or the IRemUnknown2 interface, as specified in [C706] section 3.1.20 (rpc_server_register_if).

  • It MUST set the object pointer in the entry to the object pointer of the object exporter's implementation of the IRemUnknown interface or the IRemUnknown2 interface.

  • It MUST set the OID and the OXID in the IPID entry to the corresponding values obtained from the resolver.

  • It MUST add the IPID entry to the IPID table.