Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This is an example of a DocumentParts property (VtVecUnalignedLpstr property (section 2.3.3.1.10)).
The DocumentParts property ought to be viewed together with the HeadingPairs Property (section 3.2.2.6) because the data in the two are closely related. This relationship is illustrated by the following diagram.

Figure 21: Relationship between the DocumentParts property and the HeadingPairs property
In the figure, the first element of the HeadingPairs property has a headingString value of "Title", meaning it is associated with the title group in the DocumentParts property. The value of the headerParts field is 1, meaning there is only 1 element in the DocumentParts property that is in the title group, LpstrElement-1. The headingString of the second element in the HeadingPairs property is "Headings", meaning this element is associated with the headings group in the DocumentParts property. HeaderParts equals 8, meaning there are 8 elements in the DocumentParts property that are in the headings group. They are LpstrElement-2 through LpstrElement-9.
|
Offset |
Size |
Structure |
Value |
|---|---|---|---|
|
00000154 |
010D |
TypedPropertyValue - GKPIDDSI_DOCPARTS |
|
|
00000154 |
0002 |
WORD - wType |
0x101E |
|
00000156 |
0002 |
WORD - padding |
0x0000 |
|
00000158 |
0109 |
VtVecUnalignedLpstrValue - UnalignedLpstr Vector |
|
|
00000158 |
0004 |
DWORD - cElements |
0x00000009 |
|
0000015C |
0105 |
Array of UnalignedLpstr - rgString |
|
|
0000015C |
0020 |
UnalignedLpstr - LpstrElement-1 |
|
|
0000015C |
0004 |
DWORD - cch |
0x0000001C |
|
00000160 |
001C |
Array of CHAR - value |
Invoice Approval Procedures |
|
0000017C |
0017 |
UnalignedLpstr - LpstrElement-2 |
|
|
0000017C |
0004 |
DWORD - cch |
0x00000013 |
|
00000180 |
0013 |
Array of CHAR - value |
Approval Procedure |
|
00000193 |
0019 |
UnalignedLpstr - LpstrElement-3 |
|
|
00000193 |
0004 |
DWORD - cch |
0x00000015 |
|
00000197 |
0015 |
Array of CHAR - value |
Manager Approval |
|
000001AC |
001C |
UnalignedLpstr - LpstrElement-4 |
|
|
000001AC |
0004 |
DWORD - cch |
0x00000018 |
|
000001B0 |
0018 |
Array of CHAR - value |
Skip-level Approval |
|
000001C8 |
0021 |
UnalignedLpstr - LpstrElement-5 |
|
|
000001C8 |
0004 |
DWORD - cch |
0x0000001D |
|
000001CC |
001D |
Array of CHAR - value |
Organizational Chart |
|
000001E9 |
0024 |
UnalignedLpstr - LpstrElement-6 |
|
|
000001E9 |
0004 |
DWORD - cch |
0x00000020 |
|
000001ED |
0020 |
Array of CHAR - value |
Skip-level verification |
|
0000020D |
0017 |
UnalignedLpstr - LpstrElement-7 |
|
|
0000020D |
0004 |
DWORD - cch |
0x00000013 |
|
00000211 |
0013 |
Array of CHAR - value |
Verification Steps |
|
00000224 |
001D |
UnalignedLpstr - LpstrElement-8 |
|
|
00000224 |
0004 |
DWORD - cch |
0x00000019 |
|
00000228 |
0019 |
Array of CHAR - value |
Manager Verification |
|
00000241 |
0020 |
UnalignedLpstr - LpstrElement-9 |
|
|
00000241 |
0004 |
DWORD - cch |
0x0000001C |
|
00000245 |
001C |
Array of CHAR - value |
Skip-level Verification |
Figure 22: Structure of a DocumentParts property
In this example, the LpstrElements share the same structure. For brevity, only one of them is explained in the following section. LpstrElement-2 is explained because it is more representative in the calculation of count of bytes.
GKPIDDSI_DOCPARTS: DocumentParts.
wType: 0x101E indicates this property value is an array of single-byte character strings. In the case of DocumentParts this indicates the property is a VtVecUnalignedLpstr property (section 2.3.3.1.10).
UnalignedLpstr Vector.cElements: 0x00000009 indicates there are 9 elements in the VtVecUnalignedLpstr (section 2.3.3.1.10).
UnalignedLpstr Vector.rgString.LpstrElement-2: The second UnalignedLpstr (section 2.3.3.1.5) in this vector.
UnalignedLpstr Vector.rgString.LpstrElement-2.cch: 0x00000013 (19) is the count of bytes of the value field of the UnalignedLpstr (section 2.3.3.1.5) ("Approval Procedure" followed by a terminating NULL character). The UnalignedLpstr (section 2.3.3.1.5) structure does not require padding. Therefore, in this example, even though 19 is not a multiple of 4 bytes, no padding is added to the value field.
UnalignedLpstr Vector.rgString.LpstrElement-2.value: "Approval Procedure" is the value of the value field of this UnalignedLpstr (section 2.3.3.1.5).
The rest of the UnalignedLpstr (section 2.3.3.1.5) structures in this example have the same format as the Vector.rgString.LpstrElement-2 structure defined previous.