Mercurial > libpst
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> |