Export (0) Print
Expand All

3.8.4 OLE Object Example

Office

This example shows how to locate the pie chart on presentation slide 5 as shown in figure titled "Presentation slide 5" in section 3.1.

The child-record hierarchy of the DrawingContainer (section 2.5.13) record A from the table titled "SlideContainer record J child-record hierarchy" in section 3.5.2 is shown expanded in the following table.

OfficeArtSpContainer child-record hierarchy

Offset

Size

Structure

00003EAB

01B8

DrawingContainer - drawing

00003EAB

0008

    RecordHeader- rh

00003EB3

01B0

    OfficeArtDgContainer - OfficeArtDg

00003EB3

0008

        OfficeArtRecordHeader - rh

00003EBB

0010

        OfficeArtFDG - drawingData

00003ECB

0148

        OfficeArtSpgrContainer - groupShape

00003ECB

0008

            OfficeArtRecordHeader - rh

00003ED3

0030

            OfficeArtSpContainer - case of msofbtSpContainer

00003F03

007A

            OfficeArtSpContainer - case of msofbtSpContainer

00003F7D

0096

            A: OfficeArtSpContainer - case of msofbtSpContainer

00004013

0050

        OfficeArtSpContainer - shape

The child-record hierarchy of the OfficeArtSpContainer ([MS-ODRAW] section 2.2.14) record A from the previous table is shown expanded in the following table.

OfficeArtSpContainer child-record hierarchy

Offset

Size

Structure

00003F7D

0096

OfficeArtSpContainer - case of msofbtSpContainer

00003F7D

0008

    OfficeArtRecordHeader - rh

00003F85

0010

    OfficeArtFSP - shapeProp

00003F95

004A

    OfficeArtFOPT - shapePrimaryOptions

00003FDF

0010

    OfficeArtClientAnchor- clientAnchor

00003FEF

0024

    A: OfficeArtClientData- clientData

The child-record hierarchy of the OfficeArtClientData (section 2.7.3) record A from the previous table is shown expanded in the following table.

OfficeArtClientData record A child-record hierarchy

Offset

Size

Structure

Value

00003FEF

0024

A: OfficeArtClientData - clientData

00003FEF

0008

    OfficeArtRecordHeader - rh

00003FF7

000C

    ExObjRefAtom- exObjRefAtom

00003FF7

0008

        RecordHeader - rh

00003FFF

0004

        unsigned integer - exObjIdRef

0x00000014

00004003

0010

    PlaceholderAtom- placeholderAtom

exObjRefAtom.exObjIdRef: 0x00000014 specifies the identifier reference to the external object in the ExObjListContainer record (section 2.10.1) at the document level.

The child-record hierarchy of the ExObjListContainer record F from the table titled "DocumentContainer child-record hierarchy" in section 3.4 is shown expanded in the following table.

ExObjListContainer child-record hierarchy

Offset

Size

Structure

Value

00005CA1

0152

ExObjListContainer - exObjList

00005CA1

0008

    RecordHeader - rh

00005CA9

000C

    ExObjListAtom- exObjListAtom

00005CB5

00A2

    ExOleEmbedContainer- case of RT_ExternalOleEmbed

00005CB5

0008

        RecordHeader - rh

00005CB5

4 bits

            unsigned integer - recVer

0xF

00005CB5

12 bits

            unsigned integer - recInstance

0x000

00005CB7

0002

            RecordType- recType

0x0FCC

00005CB9

0004

            unsigned integer - recLen

0x0000009A

00005CBD

0010

        A: ExOleEmbedAtom- exOleEmbedAtom

00005CCD

0020

        B: ExOleObjAtom- exOleObjAtom

00005CED

0012

        C: MenuNameAtom- menuNameAtom

00005CFF

0026

        D: ProgIDAtom- progIdAtom

00005D25

0032

        E: ClipboardNameAtom- clipboardNameAtom

00005D57

003E

    F: ExMCIMovieContainer- case of RT_ExternalMciMovie

00005D95

005E

    H: ExHyperlinkContainer- case of RT_ExternalHyperlink

The child-record hierarchy of the ExOleEmbedAtom record A from the previous table is shown expanded in the following table.

ExOleEmbedAtom record A child-record hierarchy

Offset

Size

Structure

Value

00005CBD

0010

A: ExOleEmbedAtom - exOleEmbedAtom

00005CBD

0008

    RecordHeader - rh

00005CC5

0004

    ExColorFollowEnum- exColorFollow

0x00000001

00005CC9

0001

    unsigned integer - fCantLockServer

0x00

00005CCA

0001

    unsigned integer - fNoSizeToServer

0x00

00005CCB

0001

    unsigned integer - fIsTable

0x00

exColorFollow: 0x00000001 specifies that the OLE object follows the color scheme.

fCantLockServer: 0x00 specifies that the OLE server can be locked.

fNoSizeToServer: 0x00 specifies that sending dimensions to the OLE server is required.

fIsTable: 0x00 specifies that the OLE object is not a table.

The child-record hierarchy of the ExOleObjAtom (section 2.10.12) record B from the table titled "ExObjListContainer child-record hierarchy" in this section is shown expanded in the following table.

ExOleObjAtom record B child-record hierarchy

Offset

Size

Structure

Value

00005CCD

0020

B: ExOleObjAtom - exOleObjAtom

00005CCD

0008

    RecordHeader - rh

00005CD5

0004

    DataViewAspectEnum - drawAspect

0x00000001

00005CD9

0004

    ExOleObjTypeEnum- type

0x00000000

00005CDD

0004

    unsigned integer - exObjId

0x00000014

00005CE1

0004

    ExOleObjSubTypeEnum- subType

0x00000004

00005CE5

0004

    PersistIdRef- persistIdRef

0x00000007

00005CE9

0004

    BOOL - unused

0x00139600

drawAspect: 0x00000001 specifies that it is preferable to display the OLE object as an embedded object inside of the container document.

type: 0x00000000 specifies that this OLE object is serialized and saved with the document.

exObjId: 0x00000014 specifies the identifier of this OLE object.

subType: 0x00000004 specifies that the OLE object is created by ProgID "MSGraph.Chart" or "MSGraph".

persistIdRef: 0x00000007 specifies the value to look up in the persist object directory, shown in the second table in section 3.2, to find the persist object stream offset 0x00004D69. This offset matches the offset for the ExOleObjStg (section 2.10.34) record P in the table titled "Top-level record sequence in the PowerPoint Document Stream from sample.ppt" in section 3.3. This ExOleObjStg record represents the OLE object as shown in figure titled "Presentation slide 5" in section 3.1.

The child-record hierarchy of the ExOleObjStg record P from the table titled "Top-level record sequence in the PowerPoint Document Stream from sample.ppt" in section 3.3 is shown expanded in the following table.

ExOleObjStg record P child-record hierarchy

Offset

Size

Structure

Value

00004D69

0E88

P: ExOleObjStg

00004D69

0E88

    ExOleObjStgCompressedAtom- case of 1

00004D69

0008

        RecordHeader - rh

00004D69

4 bits

            unsigned integer - recVer

0x0

00004D69

12 bits

            unsigned integer - recInstance

0x001

00004D6B

0002

            RecordType - recType

0x1011

00004D6D

0004

            unsigned integer - recLen

0x00000E80

00004D71

0004

        unsigned integer - decompressedSize

0x00006A00

00004D75

0E7C

        array of bytes - oleStgCompressed

78 9C ED 5C 7B 70 94 D5 15 ...

case of 1.rh.recInstance: 0x001 specifies that this is an ExOleObjStgCompressedAtom record.

case of 1.decompressedSize: 0x00006A00 specifies that the storage length is 0x00006A00 bytes after decompression.

case of 1.oleStgCompressed: 78 9C ED 5C 7B 70 94 D5 15 ... specifies the array data of the compressed OLE object.

The child-record hierarchy of the MenuNameAtom record C from the table titled "ExObjListContainer child-record hierarchy" in this section is shown expanded in the following table.

MenuNameAtom record C child-record hierarchy

Offset

Size

Structure

Value

00005CED

0012

C: MenuNameAtom - menuNameAtom

00005CED

0008

    RecordHeader - rh

00005CED

4 bits

        unsigned integer - recVer

0x0

00005CED

12 bits

        unsigned integer - recInstance

0x001

00005CEF

0002

        RecordType - recType

0x0FBA

00005CF1

0004

        unsigned integer - recLen

0x0000000A

00005CF5

000A

    PrintableUnicodeString- menuName

Chart

menuName: "Chart" specifies the short name of the OLE object.

The child-record hierarchy of the ProgIDAtom record D from the table titled "ExObjListContainer child-record hierarchy" in this section is shown expanded in the following table.

ProgIDAtom record D child-record hierarchy

Offset

Size

Structure

Value

00005CFF

0026

D: ProgIDAtom - progIdAtom

00005CFF

0008

    RecordHeader - rh

00005CFF

4 bits

        unsigned integer - recVer

0x0

00005CFF

12 bits

        unsigned integer - recInstance

0x002

00005D01

0002

        RecordType - recType

0x0FBA

00005D03

0004

        unsigned integer - recLen

0x0000001E

00005D07

001E

    PrintableUnicodeString - progId

MSGraph.Chart.8

progId: "MSGraph.Chart.8" specifies the ProgID of the OLE object.

The child-record hierarchy of the ClipboardNameAtom record E from the table titled "ExObjListContainer child-record hierarchy" in this section is shown expanded in the following table.

ClipboardNameAtom record E child-record hierarchy

Offset

Size

Structure

Value

00005D25

0032

E: ClipboardNameAtom - clipboardNameAtom

00005D25

0008

    RecordHeader - rh

00005D25

4 bits

        unsigned integer - recVer

0x0

00005D25

12 bits

        unsigned integer - recInstance

0x003

00005D27

0002

        RecordType - recType

0x0FBA

00005D29

0004

        unsigned integer - recLen

0x0000002A

00005D2D

002A

    PrintableUnicodeString - clipboardName

Microsoft Graph Chart

clipboardName: "Microsoft Graph Chart" specifies the long name of the OLE object.

Show:
© 2014 Microsoft