3.1.2.1 Abstract Data Model

This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The organization is provided to explain how the protocol behaves.

This document does not mandate that an implementation adhere to this model, as long as its external behavior is consistent with that specified in this document.

Object resolvers MUST maintain the following data elements:

CLSID table: A table of entries to object exporters managed by the resolver, keyed by CLSID. Each entry MUST contain:

  • The CLSID of the object class.

  • A pointer to an application-defined state for implementation of a class factory interface.

  • The OXID entry of the object exporter of the object class.

  • Application identifier: An optional value that, if present, identifies a specific application or higher-layer protocol that is associated with the object class.

OXID table: A table of entries to object exporters managed by the resolver, keyed by OXID. Each entry MUST contain:

  • The OXID of the object exporter.

  • The RPC binding information for the object exporter.

  • The IPID of the IRemUnknown interface of the object exporter.

  • An authentication-level hint for the object exporter.

  • The COMVERSION of the object exporter.

SETID table: A table of ping set entries allocated by the resolver, keyed by SETID. Each entry MUST contain:

  • The SETID of the ping set.

  • A list of OIDs that are in the ping set.

  • A sequence number.

  • A ping set timer.

OID table: A table of OID entries allocated by the resolver, keyed by OID. Each entry MUST contain:

  • An OID.

  • A count of the number of SETID entries that reference the OID entry.

  • The OXID of the object exporter of the OID.