Sample
Dictionary
The stock
market data transfer example (see Transferring Data Contained in Property
Sets, in the Storage chapter of this Guide) might include a displayable name
of Stock Quote for the entire set, and Ticker Symbol for PID_SYMBOL. If a
property set contained just a symbol and the dictionary, the property set
section would have a byte stream that looked like the following:
Offset
Bytes
; Start of section
0000 5C 01
00 00 ; DWORD size of section
0004 04 00
00 00 ; DWORD number of properties in
section
; Start of PropID/Offset pairs
0008 01 00
00 00 ; DWORD Property ID (1 == code
page)
000C 28 00
00 00 ; DWORD offset to property ID
0010 00 00
00 80 ; DWORD Property ID (0x80000000
== locale
ID)
0014 30 00
00 00 ; DWORD offset to property ID
0018 00 00
00 00 ; DWORD Property ID (0 ==
dictionary)
001C 38 00 00
00 ; DWORD offset to property ID
0020 07 00
00 00 ; DWORD Property ID (3 ==
PID_SYMBOL)
0024 5C 01
00 00 ; DWORD offset to property ID
; Start of Property 1 (code page)
0028 01 00
00 00 ; DWORD type indicator (VT_12)
002C B0 04 ; USHORT codepage (0x04b0 == 1200 ==
unicode)
002E 00
00 ; Pad to 32-bit boundary
; Start of Property 0x80000000 (Local ID)
0030 13 00
00 00 ; DWORD type indicator (VT_U14)
0034 09 04
00 00 ; ULONG locale ID (0x0409 ==
American
English)
; Start of Property 0 (the dictionary)
0038 08 00
00 00 ; DWORD number of entries in
dictionary
(Note: No type indicator)
003C 00 00
00 00 ; DWORD propid == 0 (the
dictionary)
0040 0C 00
00 00 ; DWORD cch == wcslen(L Stock
Quote ) +
sizeof(L \0 ) == 12
0044
L Stock Quote ; wchar_t wsz(12)
005C 05 00
00 00 ; DWORD propid == 5 (PID_HIGH)
0060 0B 00
00 00 ; DWORD cch == wcslen(L High
Price ) +
sizeof(L \0 ) == 11
0064 L High
Price\0 ; wchar_t wsz(11)
007A 00
00 ; padding for 32-bit
alignment (necessary
because the codepage is unicode)
007C 07 00
00 00 ; DWORD propid == 7 (PID_SYMBOL)
0080 0E 00
00 00 ; DWORD cch - wcslen(L Ticker
Symbol\0 )
== 14
0084
L Ticker Symbol\0 ; wchar_t wsz(14)
//The dictionary would continue, but may not contain
entries
//for every
possible property, and may contain entries for
//properties that are not present. Also, entries need not be in
//order.