comparison xml/libpst.in @ 49:17654fbdf76b

more fixes for 64 bit format
author carl
date Sat, 19 Jan 2008 10:47:16 -0800
parents f66078abed38
children fb3818370dd6
comparison
equal deleted inserted replaced
48:f66078abed38 49:17654fbdf76b
1365 These pairs are (start,end+1) offsets of items in this block. So we 1365 These pairs are (start,end+1) offsets of items in this block. So we
1366 have count+2 integers following the count value. 1366 have count+2 integers following the count value.
1367 </para> 1367 </para>
1368 <para> 1368 <para>
1369 Note the b5offset of 0x0020, which is a type that I will call an index 1369 Note the b5offset of 0x0020, which is a type that I will call an index
1370 reference. Such index references have at least two different forms, and 1370 reference. Such index references have at least two different forms,
1371 may point to data either in this block, or in some other block. 1371 and may point to data either in this block, or in some other block.
1372 External pointer references have the low order 4 bits all set, and are 1372 External pointer references have the low order 4 bits all set, and are
1373 ID2 values that can be used to fetch data. This value of 0x0020 is an 1373 ID2 values that can be used to fetch data. This value of 0x0020 is an
1374 internal pointer reference, which needs to be right shifted by 4 bits to 1374 internal pointer reference, which needs to be right shifted by 4 bits
1375 become 0x0002, which is then a byte offset to be added to the above 1375 to become 0x0002, which is then a byte offset to be added to the above
1376 indexOffset plus two (to skip the count), so it points to the (0xc, 1376 indexOffset plus two (to skip the count), so it points to the (0xc,
1377 0x14) pair. 1377 0x14) pair.
1378 </para>
1379 <para>
1380 So far we have only described internal index references where the high
1381 order 16 bits are zero. That suffices for single descriptor
1382 blocks. But in the case of the type 0x0101 descriptor block, we have
1383 an array of subblocks. In this case, the high order 16 bits of an
1384 internal index reference are used to select the subblock. Each
1385 subblock starts with a 16 bit indexOffset which points to the count
1386 and array of 16 bit integer pairs which are offsets in the current
1387 subblock.
1378 </para> 1388 </para>
1379 <para> 1389 <para>
1380 Finally, we have the offset and size of the "b5" block located at offset 0xc 1390 Finally, we have the offset and size of the "b5" block located at offset 0xc
1381 with a size of 8 bytes in this descriptor block. The "b5" block has the 1391 with a size of 8 bytes in this descriptor block. The "b5" block has the
1382 following format: 1392 following format:
1431 0x1102 - Array of Binary data 1441 0x1102 - Array of Binary data
1432 ]]></literallayout> 1442 ]]></literallayout>
1433 <para> 1443 <para>
1434 The following item types are known, but not all of these 1444 The following item types are known, but not all of these
1435 are implemented in the code yet. 1445 are implemented in the code yet.
1436 Note: it appears that some types can have a IPOS value or a ID2 value
1437 depending on the size of the field in question. It is safer to check
1438 every field than for me to say what the "usually" contain. Absolute
1439 values though, are generally going to be constant.
1440 </para> 1446 </para>
1441 <literallayout class="monospaced"><![CDATA[ 1447 <literallayout class="monospaced"><![CDATA[
1442 0002 AutoForward allowed 1448 0002 AutoForward allowed
1443 0003 Extended Attributes Table 1449 0003 Extended Attributes Table
1444 0017 Importance Level 1450 0017 Importance Level
1776 </refsect1> 1782 </refsect1>
1777 1783
1778 <refsect1 id='pst.file.desc3.32.5'> 1784 <refsect1 id='pst.file.desc3.32.5'>
1779 <title>32 bit Associated Descriptor Item 0x0101</title> 1785 <title>32 bit Associated Descriptor Item 0x0101</title>
1780 <para> 1786 <para>
1781 This descriptor block contains a list of ID1 values. It is used when an 1787 This descriptor block contains a list of ID1 values. It is used when
1782 ID1 (that would normally point to a type 0x7cec or 0xbcec descriptor block) 1788 an ID1 (that would normally point to a type 0x7cec or 0xbcec
1783 contains more data than can fit in any single descriptor of those types. 1789 descriptor block) contains more data than can fit in any single
1784 In this case, it points to a type 0x0101 block, which contains a list 1790 descriptor of those types. In this case, it points to a type 0x0101
1785 of ID1 values that themselves point to the actual descriptor blocks. 1791 block, which contains a list of ID1 values that themselves point to
1786 The descriptor blocks that are pointed to by this list of ID1 values 1792 the actual descriptor blocks. The total length value in the 0x0101
1787 are almost but not quite the same as the standard 0xbcec blocks. Decoding 1793 header is the sum of the lengths of the blocks pointed to by the list
1788 these blocks is still incomplete. 1794 of ID1 values. The result is an array of subblocks, that may contain
1795 index references where the high order 16 bits specify which descriptor
1796 subblock to use. Only the first descriptor subblock contains the
1797 signature (0xbcec or 0x7cec).
1789 </para> 1798 </para>
1790 <literallayout class="monospaced"><![CDATA[ 1799 <literallayout class="monospaced"><![CDATA[
1791 0000 01 01 02 00 26 28 00 00 18 77 0c 00 b8 04 00 00 1800 0000 01 01 02 00 26 28 00 00 18 77 0c 00 b8 04 00 00
1792 1801
1793 0000 signature [2 bytes] 0x0101 constant 1802 0000 signature [2 bytes] 0x0101 constant
1794 0002 count [2 bytes] 0x0002 in this case 1803 0002 count [2 bytes] 0x0002 in this case
1795 0004 unknown [4 bytes] 0x002826 in this case 1804 0004 total length [4 bytes] 0x002826 in this case
1796 repeating 1805 repeating
1797 0008 id [4 bytes] 0x0c7718 in this case 1806 0008 id1 [4 bytes] 0x0c7718 in this case
1798 000c id [4 bytes] 0x0004b8 in this case 1807 000c id1 [4 bytes] 0x0004b8 in this case
1799 ]]></literallayout> 1808 ]]></literallayout>
1800 </refsect1> 1809 </refsect1>
1801 1810
1802 <refsect1 id='pst.file.desc3.64.5'> 1811 <refsect1 id='pst.file.desc3.64.5'>
1803 <title>64 bit Associated Descriptor Item 0x0101</title> 1812 <title>64 bit Associated Descriptor Item 0x0101</title>
1808 0000 01 01 02 00 ea 29 00 00 10 83 00 00 00 00 00 00 1817 0000 01 01 02 00 ea 29 00 00 10 83 00 00 00 00 00 00
1809 0010 1c 83 00 00 00 00 00 00 1818 0010 1c 83 00 00 00 00 00 00
1810 1819
1811 0000 signature [2 bytes] 0x0101 constant 1820 0000 signature [2 bytes] 0x0101 constant
1812 0002 count [2 bytes] 0x0002 in this case 1821 0002 count [2 bytes] 0x0002 in this case
1813 0004 unknown [4 bytes] 0x0029ea in this case 1822 0004 total length [4 bytes] 0x0029ea in this case
1814 repeating 1823 repeating
1815 0008 id [8 bytes] 0x008310 in this case 1824 0008 id1 [8 bytes] 0x008310 in this case
1816 0010 id [8 bytes] 0x00831c in this case 1825 0010 id1 [8 bytes] 0x00831c in this case
1817 ]]></literallayout> 1826 ]]></literallayout>
1818 </refsect1> 1827 </refsect1>
1819 1828
1820 </refentry> 1829 </refentry>
1821 </reference> 1830 </reference>