1.3.3 Object Exporter

An object exporter is a conceptual container where objects are created, called, and released. An object is required to be contained within a single object exporter and is required to not span multiple object exporters. The protocol is intentionally vague about what an object exporter actually entails. An object exporter can be a thread, a process, or a machine. It is recommended that clients not assume implementation details about object exporters. For example, if two objects belong to the same object exporter, it is recommended that clients not assume that both of the objects reside in the same thread, process, or machine.

An object exporter listens on the network by way of RPC protocols.

An object exporter contains a remote unknown object, which supports the following ORPC interfaces:

IRemUnknown interface: An ORPC interface that contains methods used to call QueryInterface, AddRef, and Release on remote objects.

IRemUnknown2 interface: An ORPC interface that extends the functionality of IRemUnknown.

The client uses the AddRef and Release methods to manage the lifetime of objects contained in the object exporter. The client uses the QueryInterface method to obtain object references for additional interface types implemented by an object.

An object exporter is identified by its object exporter identifier (OXID). When a client receives an OXID as part of an object reference, it needs to determine the RPC binding information required to communicate with the remote unknown object of the object exporter. The client uses the OXID resolution (see section 3.2.4.1.2.2) mechanism to achieve this.