3.4 Section Object Space Objects

Office

An object group list contains two types of FileNodes: those that define a Global ID Table, and those that declare Object Space Objects.

The section (root) object space in this example contains four objects. They are not declared directly within the revision manifest list, although they could be, and are in .onetoc2 files. Instead, they are declared in a separate object group list.

The four objects are:

  • The Section node, which is the content root. It is responsible for tracking the set of page series and their relative ordering.

  • A Page Series node, which corresponds to one top-level page. A page series can also track additional lower-level pages, but this example does not contain any.

  • A Section metadata, which is the metadata root. The metadata tracks the schema version that was used to serialize this object space, as well section properties such as color that are commonly frequently by higher levels such as notebooks.

  • A Page metadata, which ought to be a clone of the page metadata found in the actual page object space. OneNote 2010 caches copies of the metadata of child object spaces in parent object spaces.

Offset

Size

Structure

Value

00000F48

0120

FileNodeListFragment - FileNodeListFragment

00000F48

0010

    FileNodeListHeader - header

00000F48

0008

        UINT64 - uintMagic

11841787174971765956

00000F50

0004

        ULONG - FileNodeListID

0x00000013

00000F54

0004

        ULONG - nFragmentSequence

0

00000F58

0018

    FileNode - fnd[0]

00000F58

0004

        FileNodeHeader - header

0x808060B4

00000F5C

0014

        ObjectGroupStartFND - fnd

00000F5C

0014

            ExtendedGUID - oid

{{2A83AE62-6754-4383-8E2B-4033FF3CFBA1},1}

00000F70

0004

    FileNode - fnd[1]

00000F70

0004

        FileNodeHeader - header

0x80801022

00000F74

0018

    FileNode - fnd[2]

00000F74

0004

        FileNodeHeader - header

0x80806024

00000F78

0014

        GlobalIdTableEntryFNDX - fnd

00000F78

0004

            ULONG - index

0

00000F7C

0010

            GUID - guid

{63230A2C-F51E-01AC-217F-603847815F77}

00000F8C

0018

    FileNode - fnd[3]

00000F8C

0004

        FileNodeHeader - header

0x80806024

00000F90

0014

        GlobalIdTableEntryFNDX - fnd

00000F90

0004

            ULONG - index

1

00000F94

0010

            GUID - guid

{418BCA1D-C31E-4342-966B-B7949DA56A9F}

00000FA4

0018

    FileNode - fnd[4]

00000FA4

0004

        FileNodeHeader - header

0x80806024

00000FA8

0014

        GlobalIdTableEntryFNDX - fnd

00000FA8

0004

            ULONG - index

2

00000FAC

0010

            GUID - guid

{9A416C35-236A-49A1-91FE-BD73076400A4}

00000FBC

0004

    FileNode - fnd[5]

00000FBC

0004

        FileNodeHeader - header

0x80801028

00000FC0

0018

    FileNode - fnd[6]

00000FC0

0004

        FileNodeHeader - header

0x8080608C

00000FC4

0014

        DataSignatureGroupDefinitionFND - fnd

00000FC4

0014

            ExtendedGUID - DataSignatureGroup

{{7257E098-D9C8-4F9F-9EE1-E41D6AEF9D46},1}

00000FD8

0011

    FileNode - fnd[7]

00000FD8

0004

        FileNodeHeader - header

0x8D0044A4

00000FDC

000D

        ObjectDeclaration2RefCountFND - fnd

00000FDC

0003

            BlobReferenceWithIndirection - ref

00000FDC

0002

                USHORT - stp

0x01E5

00000FDE

0001

                BYTE - cb

0x04

00000FDF

0009

            ObjectDeclaration2Body - body

00000FDF

0004

                CompactID - oid

00000FDF

0001

                    BYTE - n

11

00000FE0

0003

                    ULONG - guidIndex

2

00000FE3

0004

                JCID - jcid

00000FE3

0002

                    USHORT - index

jcidSectionMetaData

00000FE5

0002

                    USHORT - flags

0x0002

00000FE7

1 bit

                BYTE - fHasOidReferences

0

00000FE7

1 bit

                BYTE - fHasOsidReferences

0

00000FE7

6 bits

                BYTE - fReserved2

0

00000FE8

0001

            BYTE - cRef

1

00000FE9

0011

    FileNode - fnd[8]

00000FE9

0004

        FileNodeHeader - header

0x8D0044A4

00000FED

000D

        ObjectDeclaration2RefCountFND - fnd

00000FED

0003

            BlobReferenceWithIndirection - ref

00000FED

0002

                USHORT - stp

0x01DE

00000FEF

0001

                BYTE - cb

0x07

00000FF0

0009

            ObjectDeclaration2Body - body

00000FF0

0004

                CompactID - oid

00000FF0

0001

                    BYTE - n

10

00000FF1

0003

                    ULONG - guidIndex

2

00000FF4

0004

                JCID - jcid

00000FF4

0002

                    USHORT - index

jcidSectionNode

00000FF6

0002

                    USHORT - flags

0x0006

00000FF8

1 bit

                BYTE - fHasOidReferences

1

00000FF8

1 bit

                BYTE - fHasOsidReferences

0

00000FF8

6 bits

                BYTE - fReserved2

0

00000FF9

0001

            BYTE - cRef

1

00000FFA

0011

    FileNode - fnd[9]

00000FFA

0004

        FileNodeHeader - header

0x8D0044A4

00000FFE

000D

        ObjectDeclaration2RefCountFND - fnd

00000FFE

0003

            BlobReferenceWithIndirection - ref

00000FFE

0002

                USHORT - stp

0x01D1

00001000

0001

                BYTE - cb

0x0D

00001001

0009

            ObjectDeclaration2Body - body

00001001

0004

                CompactID - oid

00001001

0001

                    BYTE - n

1

00001002

0003

                    ULONG - guidIndex

0

00001005

0004

                JCID - jcid

00001005

0002

                    USHORT - index

jcidPageMetaData

00001007

0002

                    USHORT - flags

0x0002

00001009

1 bit

                BYTE - fHasOidReferences

0

00001009

1 bit

                BYTE - fHasOsidReferences

0

00001009

6 bits

                BYTE - fReserved2

0

0000100A

0001

            BYTE - cRef

1

0000100B

0011

    FileNode - fnd[10]

0000100B

0004

        FileNodeHeader - header

0x8D0044A4

0000100F

000D

        ObjectDeclaration2RefCountFND - fnd

0000100F

0003

            BlobReferenceWithIndirection - ref

0000100F

0002

                USHORT - stp

0x01C8

00001011

0001

                BYTE - cb

0x09

00001012

0009

            ObjectDeclaration2Body - body

00001012

0004

                CompactID - oid

00001012

0001

                    BYTE - n

12

00001013

0003

                    ULONG - guidIndex

2

00001016

0004

                JCID - jcid

00001016

0002

                    USHORT - index

jcidPageSeries

00001018

0002

                    USHORT - flags

0x0006

0000101A

1 bit

                BYTE - fHasOidReferences

1

0000101A

1 bit

                BYTE - fHasOsidReferences

1

0000101A

6 bits

                BYTE - fReserved2

0

0000101B

0001

            BYTE - cRef

1

0000101C

0004

    FileNode - fnd[11]

0000101C

0004

        FileNodeHeader - header

0x808010B8

00001020

0048

    Blob - padding and footer

...

fnd[0].header: 0x808060B4 specifies that the FileNode is of type "ObjectGroupStartFND", that it contains 20 bytes of data beyond the header, and that the data does not contain a reference to another part of the file.

fnd[0].fnd.oid: {{2A83AE62-6754-4383-8E2B-4033FF3CFBA1},1} specifies the identity of the object group. It matches the ObjectGroupID field in the ObjectGroupListReferenceFND FileNode in the previous example.

fnd[1].header: 0x80801022 specifies that the FileNode is of type "GlobalIdTableStart2FND", and that it contains zero bytes of data beyond the header.

fnd[2].header: 0x80806024 specifies that the FileNode is of type "GlobalIdTableEntryFNDX", that it contains 20 bytes of data beyond the header, and that the data does not contain a reference to another part of the file.

fnd[2].fnd.index: 0 specifies that CompactIDs in this object group that specify 0x0 for their index are to be matched with this.

fnd[2].fnd.guid: {63230A2C-F51E-01AC-217F-603847815F77} specifies that CompactIDs that specify 0x0 as their guidIndex can be converted to ExtendedGUIDs using this GUID.

fnd[3].header: 0x80806024 specifies that the FileNode is of type "GlobalIdTableEntryFNDX", that it contains 20 bytes of data beyond the header, and that the data does not contain a reference to another part of the file.

fnd[3].fnd.index: 1 specifies that CompactIDs in this object group that specify 0x1 for their index are to be matched with this.

fnd[3].fnd.guid: {418BCA1D-C31E-4342-966B-B7949DA56A9F} specifies that CompactIDs that specify 0x1 as their guidIndex can be converted to ExtendedGUIDs using this GUID.

fnd[4].header: 0x80806024 specifies that the FileNode is of type "GlobalIdTableEntryFNDX", that it contains 20 bytes of data beyond the header, and that the data does not contain a reference to another part of the file.

fnd[4].fnd.index: 2 specifies that CompactIDs in this object group that specify 0x2 for their index are to be matched with this.

fnd[4].fnd.guid: {9A416C35-236A-49A1-91FE-BD73076400A4} specifies that CompactIDs that specify 0x2 as their guidIndex can be converted to ExtendedGUIDs using this GUID.

fnd[5].header: 0x80801028 specifies that the FileNode is of type "GlobalIdTableEndFNDX", and that it contains zero bytes of data beyond the header.

fnd[6].header: 0x8080608C specifies that the FileNode is of type "DataSignatureGroupDefinitionFND", that it contains 20 bytes of data beyond the header, and that the data does not contain a reference to another part of the file.

fnd[6].fnd.DataSignatureGroup: {{7257E098-D9C8-4F9F-9EE1-E41D6AEF9D46},1} specifies a signature for each object in this group. Subsequent occurrences of the same objects in other object groups will have a different signature if their data changes in any way. In this way, a client that already has a local copy of the object can tell if it needs to fetch a new copy or not, based on the signature of the copy it has and the signature in the newer object group.

fnd[7].header: 0x8D0044A4 specifies that the FileNode is of type "ObjectDeclaration2RefCountFND", that it contains 13 bytes of data beyond the header, and that the data does not contain a reference to another part of the file.

fnd[7].fnd.ref:  Specifies that the property set for this object is located at offset 0xF28 in the file, and is 0x20 bytes in length.

fnd[7].fnd.body.oid: By using the guidIndex to look up the GUID in the GlobalIdTable declared previously, the ExtendedGUID identity for this object is "{{9A416C35-236A-49A1-91FE-BD73076400A4}, 11}". Note that this is the ExtendedGUID that was identified as the metadata root of this object space by one of the RootObjectReference3FND FileNodes in the previous example.

fnd[7].fnd.body.jcid: The flags field specifies that this object is a basic property set. The index field specifies that the properties are for the section metadata.

fnd[7].fnd.body.fHasOidReferences: 0 specifies that this object does not have references to other objects in this object space.

fnd[7].fnd.body.fHasOsidReferences: 0 specifies that this object does not have references to other  object spaces.

fnd[7].fnd.cRef: 1 specifies that one other item references this object. That item is the object space itself, because this is a root.

fnd[8].header: 0x8D0044A4 specifies that the FileNode is of type "ObjectDeclaration2RefCountFND", that it contains 13 bytes of data beyond the header, and that the data does not contain a reference to another part of the file.

fnd[8].fnd.ref: Specifies that the property set for this object is located at offset 0xEF0 in the file, and is 0x38 bytes in length.

fnd[8].fnd.body.oid:  By using the guidIndex to look up the GUID in the GlobalIdTable declared previously, the ExtendedGUID identity for this object is "{{9A416C35-236A-49A1-91FE-BD73076400A4}, 10}". Note that this is the ExtendedGUID that was identified as the default content root of this object space by one of the RootObjectReference3FND FileNodes in the previous example.

fnd[8].fnd.body.jcid: The flags field specifies that this object is a property set as well as a graph node. The index field specifies that it is a section node.

fnd[8].fnd.body.fHasOidReferences: 1 specifies that the properties of this object contain references to other objects in this object space. Specifically, the ElementChildNodes property refers to the PageSeries object.

fnd[8].fnd.body.fHasOsidReferences: Zero specifies that this object does not have references to other object spaces.

fnd[8].fnd.cRef: 1 specifies that 1 other item references this object. That item is the object space itself, because this is a root.

fnd[9].header: 0x8D0044A4 specifies that the FileNode is of type "ObjectDeclaration2RefCountFND", that it contains 13 bytes of data beyond the header, and that the data does not contain a reference to another part of the file.

fnd[9].fnd.ref:  Specifies that the property set for this object is located at offset 0xE88 in the file, and is 0x68 bytes in length.

fnd[9].fnd.body.oid: By using the guidIndex to look up the GUID in the GlobalIdTable declared previously, the ExtendedGUID identity for this object is "{{63230A2C-F51E-01AC-217F-603847815F77}, 1}".

fnd[9].fnd.body.jcid: The flags field specifies that this object is a basic property set. The index field specifies that it is a page metadata.

fnd[9].fnd.body.fHasOidReferences: Zero specifies that this object does not have references to other objects in this object space.

fnd[9].fnd.body.fHasOsidReferences: Zero specifies that this object does not have references to other object spaces.

fnd[9].fnd.cRef: 1 specifies that 1 other item references this object. That item is the page series node.

fnd[10].header: 0x8D0044A4 specifies that the FileNode is of type "ObjectDeclaration2RefCountFND", that it contains 13 bytes of data beyond the header, and that the data does not contain a reference to another part of the file.

fnd[10].fnd.ref: Specifies that the property set for this object is located at offset 0xE40 in the file, and is 0x48 bytes in length.

fnd[10].fnd.body.oid: By using the guidIndex to look up the GUID in the GlobalIdTable declared previously, the ExtendedGUID identity for this object is "{{9A416C35-236A-49A1-91FE-BD73076400A4}, 12}".

fnd[10].fnd.body.jcid: The flags field specifies that this object is a property set as well as a graph node. The index field specifies that it is a page series node.

fnd[10].fnd.body.fHasOidReferences: 1 specifies that the properties of this object contain references to other objects in this object space. Specifically, the MetaDataObjectsAboveGraphSpace property refers to the PageMetaData object.

fnd[10].fnd.body.fHasOsidReferences: 1 specifies that this object does have references to other  object spaces. Specifically, the ChildGraphSpaceElementNodes property refers to the object space of the page.

fnd[10].fnd.cRef: 1 specifies that 1 other item references this object. That item is the section node.

fnd[11].header: 0x808010B8 specifies that the FileNode is of type "ObjectGroupEndFND", and that it contains zero bytes of data beyond the header.

Show: