1.3.1 Embedded Objects

The logical layout of a container document that contains an embedded object is shown in the following figure.

Embedded object container document

Figure 1: Embedded object container document

The document contains data that is specific to the container application, an identifier of the creating application, the native data of the embedded object, and the presentation data of the embedded object. The native data allows the container application to pass the object back to its creating application for possible changes.

The container application data is private to the container application and is not specified in this document. The rest of the data that make up the embedded object file format are specified in this document as follows:

Creating Application Identifier

  • When using the OLE1.0 Format (section 1.3.3), the creating application identifier is specified in the ClassName field of the ObjectHeader structure (section 2.2.4).

  • When using the OLE2.0 Format (section 1.3.3), the creating application identifier is specified as follows:

    • For embedded objects, the creating application identifier is specified by the object class globally unique identifier (GUID) contained in the class identifier (CLSID) field of the Compound File Directory Entry ([MS-CFB] section 2.6.1) of the OLE Compound File Storage object ([MS-CFB] section 1.3) that contains the OLESTREAM structure (section 2.3.3) that specifies the embedded object.

    • For linked objects, the creating application identifier is specified by the object class GUID contained in the Clsid field of the OLESTREAM structure (section 2.3.3) that specifies the linked object.

Embedded Object Native Data

  • When using the OLE1.0 Format (section 1.3.3), the embedded object native data is specified in the NativeData field of EmbeddedObject structure (section 2.2.5).

  • When using the OLE2.0 Format (section 1.3.3), the embedded object native data is specified in the following two ways, which can be used interchangeably:

    • An OLE Compound File Stream object that uses the name "\1Ole10Native" is created within the OLE Compound File Storage object that corresponds to the linked object or embedded object. The stream object is used to contain the native data, as specified in the NativeData field of the OLENativeStream structure (section 2.3.6).

    • OLE Compound File Stream objects are created by the creating application within the OLE Compound File Storage object that corresponds to the linked object or embedded object. The stream objects are used to contain the native data. Such stream objects are private to the creating application and are not specified in this document.

Embedded Object Presentation Data

  • When using the OLE1.0 Format (section 1.3.3), the embedded object presentation data is specified in the Presentation field of EmbeddedObject structure (section 2.2.5).

  • When using the OLE2.0 Format (section 1.3.3), the embedded object presentation data is specified in OLE Compound File Stream objects with names that contain the prefix "\2OlePres" within the OLE Compound File Storage object. The names correspond to the linked object or embedded object. Each of these streams contains an instance of the OLEPresentationStream structure (section 2.3.4).