# 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.