Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

468 lines
100 KiB

  1. {\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial{\*\falt Helvetica};}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f4\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Times;}{\f5\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Helvetica;}{\f6\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Courier;}{\f7\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Geneva;}{\f8\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Tms Rmn;}{\f9\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Helv;}{\f10\froman\fcharset0\fprq2{\*\panose 00000000000000000000}MS Serif;}{\f11\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MS Sans Serif;}{\f12\froman\fcharset0\fprq2{\*\panose 00000000000000000000}New York;}{\f13\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}System;}{\f14\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f15\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f16\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}AvantGarde;}{\f17\froman\fcharset0\fprq2{\*\panose 00000000000000000000}ITC Bookman;}{\f18\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Helvetica-Narrow;}{\f19\froman\fcharset0\fprq2{\*\panose 00000000000000000000}NewCenturySchlbk;}{\f20\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Palatino;}{\f21\froman\fcharset0\fprq2{\*\panose 00000000000000000000}ZapfChancery;}{\f22\fdecor\fcharset2\fprq2{\*\panose 00000000000000000000}ZapfDingbats;}{\f23\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Marlett;}{\f24\fmodern\fcharset0\fprq1{\*\panose 020b0609040504020204}Lucida Console;}{\f25\fswiss\fcharset0\fprq2{\*\panose 020b0602030504020204}Lucida Sans Unicode;}{\f26\fswiss\fcharset0\fprq2{\*\panose 020b0506020202030204}Arial Narrow;}{\f27\fswiss\fcharset0\fprq2{\*\panose 020b0a04020102020204}Arial Black;}{\f28\fswiss\fcharset0\fprq2{\*\panose 020f0704030504030204}Arial Rounded MT Bold;}{\f29\froman\fcharset0\fprq2{\*\panose 02040602050305030304}Book Antiqua;}{\f30\froman\fcharset0\fprq2{\*\panose 02050604050505020204}Bookman Old Style;}{\f31\fswiss\fcharset0\fprq2{\*\panose 020b0502020202020204}Century Gothic;}{\f32\froman\fcharset0\fprq2{\*\panose 02040604050505020304}Century Schoolbook;}{\f33\fnil\fcharset2\fprq2{\*\panose 01010601010101010101}Monotype Sorts;}{\f34\fswiss\fcharset0\fprq2{\*\panose 020b0706040902060204}Haettenschweiler;}{\f35\fdecor\fcharset0\fprq2{\*\panose 04020705040a02060702}Algerian;}{\f36\fdecor\fcharset0\fprq2{\*\panose 04030b070d0b02020403}Braggadocio;}{\f37\fswiss\fcharset0\fprq2{\*\panose 020b0903060703020204}Britannic Bold;}{\f38\fscript\fcharset0\fprq2{\*\panose 03060802040406070304}Brush Script MT;}{\f39\fdecor\fcharset0\fprq2{\*\panose 04020805060202030203}Colonna MT;}{\f40\fdecor\fcharset0\fprq2{\*\panose 04020505020e03040504}Desdemona;}{\f41\froman\fcharset0\fprq2{\*\panose 0204060206030a020304}Footlight MT Light;}{\f42\froman\fcharset0\fprq2{\*\panose 02020404030301010803}Garamond;}{\f43\fswiss\fcharset0\fprq2{\*\panose 020b0806030902050204}Impact;}{\f44\fdecor\fcharset0\fprq2{\*\panose 040307050d0c02020703}Kino MT;}{\f45\froman\fcharset0\fprq2{\*\panose 020a0a07050505020404}Wide Latin;}{\f46\fscript\fcharset0\fprq2{\*\panose 03020802060602070202}Matura MT Script Capitals;}{\f47\fdecor\fcharset0\fprq2{\*\panose 040506030a0602020202}Playbill;}{\f48\fswiss\fcharset0\fprq2{\*\panose 020b0506030101010103}Abadi MT Condensed;}{\f49\froman\fcharset2\fprq2{\*\panose 05020102010507070707}Wingdings 2;}{\f50\froman\fcharset2\fprq2{\*\panose 05040102010807070707}Wingdings 3;}{\f51\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}MS Outlook;}{\f52\fscript\fcharset0\fprq2{\*\panose 030f0702030302020204}Comic Sans MS;}{\f53\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Bookshelf Symbol 3;}{\f54\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040
  2. \'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\s6}{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelold\levelspace144\levelindent0{\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\s7}{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelold\levelspace144\levelindent0{\leveltext\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\s8}{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelold\levelspace144\levelindent0{\leveltext
  3. \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\s9}{\listname ;}\listid-5}}{\*\listoverridetable{\listoverride\listid-5\listoverridecount0\ls1}}{\*\revtbl {Unknown;}{Markus Horstmann;}{Nat Brown;}}{\info{\title Compound File Binary Format}{\doccomm This document describes the on-disk format of the Compound File, used as the underpinnings of the structured storage support for OLE 2.0.}{\operator Markus Horstmann}{\creatim\yr1997\mo1\dy3\hr14\min26}{\revtim\yr1997\mo1\dy3\hr14\min27}{\version3}{\edmins2}{\nofpages10}{\nofwords3871}{\nofchars19621}{\*\company Microsoft Corporation}{\nofcharsws24394}{\vern71}}\widowctrl\ftnbj\aenddoc\revisions\noextrasprl\prcolbl\cvmme\sprsspbf\brkfrm\swpbdr\lytprtmet\hyphcaps0\fracwidth\viewkind4\viewscale111\viewzk2\pgbrdrhead\pgbrdrfoot \fet0{\*\template C:\\WINWORD\\CAIRO.DOT}\sectd \sbkodd\pgnrestart\pgnlcrm\linex0\endnhere\titlepg\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \ri-270\nowidctlpar\widctlpar\brdrt\brdrs\brdrw30\brsp20 \brdrbtw\brdrs\brdrw30\brsp20 \outlinelevel0\adjustright \f4\fs20\cgrid {\field{\*\fldinst {\b\fs36 title }}{\fldrslt {\b\fs36 Compound File Binary Format}}}{\b\fs36
  4. \par }\pard\plain \s41\nowidctlpar\widctlpar\adjustright \i\fs20\cgrid {\revised\revauth1\revdttm-1508828266 {\*\bkmkstart DraftDate}3 January}{\deleted\revauthdel1\revdttmdel-1508828266 15 March}{, 199}{\deleted\revauthdel1\revdttmdel-1508828266 {\*\bkmkend DraftDate}6}{\revised\revauth1\revdttm-1508828266 7}{
  5. \par }\pard\plain \s43\qj\sb240\sa240\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {\field{\*\fldinst { COMMENTS \\* MERGEFORMAT }}{\fldrslt {This document describes the on-disk format of the Compound File, used as the underpinnings of the structured storage support for OLE 2.0.}}}{
  6. \par }\pard\plain \nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {
  7. \par
  8. \par
  9. \par
  10. \par }\pard\plain \s24\qj\ri720\nowidctlpar\widctlpar\tldot\tx8280\tqr\tx8640\adjustright \f4\fs20\cgrid {\field\fldedit{\*\fldinst {TOC \\o "1-2"}}{\fldrslt {\lang1024 1. Overview\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782782 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782782 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
  11. \par 2. Sector Types\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782783 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782783 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
  12. \par }\pard\plain \s23\qj\li720\ri720\nowidctlpar\widctlpar\tldot\tx8280\tqr\tx8640\adjustright \f4\fs20\cgrid {\lang1024 2.1 Header\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782784 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782784 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
  13. \par 2.2 Fat Sectors\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782785 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782785 }}{\fldrslt {\lang1024 2}}}}}{\lang1024
  14. \par 2.3 MiniFat Sectors\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782786 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782786 }}{\fldrslt {\lang1024 2}}}}}{\lang1024
  15. \par 2.4 DIF Sectors\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782787 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782787 }}{\fldrslt {\lang1024 3}}}}}{\lang1024
  16. \par 2.5 Directory Sectors\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782788 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782788 }}{\fldrslt {\lang1024 3}}}}}{\lang1024
  17. \par 2.6 Storage Sectors\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782789 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782789 }}{\fldrslt {\lang1024 5}}}}}{\lang1024
  18. \par }\pard\plain \s24\qj\ri720\nowidctlpar\widctlpar\tldot\tx8280\tqr\tx8640\adjustright \f4\fs20\cgrid {\lang1024 3. Examples\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782790 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782790 }}{\fldrslt {\lang1024 5}}}}}{\lang1024
  19. \par }\pard\plain \s23\qj\li720\ri720\nowidctlpar\widctlpar\tldot\tx8280\tqr\tx8640\adjustright \f4\fs20\cgrid {\lang1024 3.1 Sector 0: Header\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782791 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782791 }}{\fldrslt {\lang1024 5}}}}}{\lang1024
  20. \par 3.2 SECT 0: First (Only) FAT Sector\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782792 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782792 }}{\fldrslt {\lang1024 5}}}}}{\lang1024
  21. \par 3.3 SECT 1: First (Only) Directory Sector\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782793 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782793 }}{\fldrslt {\lang1024 5}}}}}{\lang1024
  22. \par 3.4 SECT 3: MiniFat Sector\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782794 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782794 }}{\fldrslt {\lang1024 7}}}}}{\lang1024
  23. \par 3.5 SECT 4: MiniStream (Data of \ldblquote Stream 1\rdblquote )\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782795 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782795 }}{\fldrslt {\lang1024 7}}}}}{\lang1024
  24. \par }\pard\plain \nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid }}\pard\plain \nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {
  25. \par }\pard\plain \s42\li1440\ri1584\sa60\nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \scaps\f1\fs16\cf6\cgrid {\b Note:}{ This document is meant to accompany the Microsoft Structured Storage Reference Implementation, heretoafter referred to as the \ldblquote software\rdblquote . Some of the information in this documentation may be inaccurate or may not be an accurate representation of the actual func\-tionality of the software. When this document and the functionality of the software conflict, The actual functionality of the software represents the correct functionality. Microsoft assumes no responsibility for any damages that might occur either directly or indirectly from these discrepencies or inaccuracies. Microsoft may have trademarks, copyrights, patents or pending patent applications, or other intellectual property rights covering subject matter in this document and in the software. The furnishing of this document does not give you a license to these trademarks, copyrights, patents, or other intellectual property rights.
  26. \par }\pard\plain \nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {\sect }\sectd \marglsxn1440\margrsxn1440\binfsxn258\binsxn258\pgnrestart\pgnlcrm\linex0\endnhere\sectdefaultcl {\footer \pard\plain \s34\keepn\nowidctlpar\widctlpar\tqc\tx4320\tqr\tx9360\adjustright \f5\fs16\cgrid {\i Copyright 1992-1995 Microsoft Corporation}{\tab page: }{\field{\*\fldinst {\cs40 PAGE }}{\fldrslt {\cs40\lang1024 i}}}{\cs40 \tab }{\cs40\i All Rights Reserved.}{
  27. \par }\pard \s34\keepn\nowidctlpar\widctlpar\tqc\tx4320\tqr\tx8640\adjustright {
  28. \par }}\pard\plain \s24\qj\ri720\nowidctlpar\widctlpar\tldot\tx8280\tqr\tx8640\adjustright \f4\fs20\cgrid {\sect }\sectd \marglsxn1440\margrsxn1440\binfsxn258\binsxn258\pgnrestart\linex0\endnhere\sectdefaultcl {\header \pard\plain \s35\keepn\nowidctlpar\widctlpar\tqc\tx4320\tqr\tx8640\adjustright \f5\fs16\cgrid {
  29. \par }}{\*\bkmkstart INTERN_LINK2}{\*\bkmkstart INTERN_LINK1}{\*\bkmkstart _Toc345472308}{\*\bkmkstart _Toc345963637}{\*\bkmkstart _Toc351782782}{\listtext\pard\plain\s1 \b\fs28\cf2\cgrid \hich\af0\dbch\af0\loch\f0 1.\tab}\pard\plain \s1\qj\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\outlinelevel0\ls1\outlinelevel0\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst2\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrstop6\pnrstart1\pnrrgb1\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc1\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr1\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \b\fs28\cf2\cgrid {Overview{\*\bkmkend _Toc345472308}{\*\bkmkend _Toc345963637}{\*\bkmkend _Toc351782782}
  30. \par }\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {A Compound File is made up of a number of }{\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \v\f4\fs20\cgrid {\xe {virtual stream}}}{\b virtual streams}{. These are collections of data that behave as a linear stream, although their on-disk format may be fragmented. Virtual streams can be user data, or they can be control structures used to maintain the file. Note that the file itself can also be considered a virtual stream.
  31. \par All allocations of space within a Compound File are done in units called }{\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \v\f4\fs20\cgrid {\xe {sector}}}{\b sectors}{. The size of a sector is definable at creation time of a Compound File, but for the purposes of this document will be 512 bytes. A virtual stream is made up of a sequence of sectors.
  32. \par The Compound File uses several different types of sector: }{\i Fat}{, }{\i Directory}{, }{\i Minifat}{, }{\i DIF}{, and }{\i Storage}{. A separate type of 'sector' is a }{\i Header}{, the primary difference being that a Header is always 512 bytes long (regardless of the sector size of the rest of the file) and is always located at offset zero (0). With the exception of the header, sectors of any type can be placed anywhere within the file. The function of the various sector types is discussed below.
  33. \par In the discussion below, the term }{\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \v\f4\fs20\cgrid {\xe {SECT}}}{\b SECT}{ is used to describe the location of a sector within a virtual stream (in most cases this virtual stream is the file itself). Internally, a }{\cs39\f1\fs16\lang1024 SECT}{ is represented as a }{\cs39\f1\fs16\lang1024 ULONG}{.
  34. \par {\*\bkmkstart _Toc345472309}{\*\bkmkstart _Toc345963638}{\*\bkmkstart _Toc351782783}{\listtext\pard\plain\s1 \b\fs28\cf2\cgrid \hich\af0\dbch\af0\loch\f0 2.\tab}}\pard\plain \s1\qj\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\outlinelevel0\ls1\outlinelevel0\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst2\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrstop6\pnrstart1\pnrrgb1\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr2\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \b\fs28\cf2\cgrid {Sector Types{\*\bkmkend _Toc345472309}{\*\bkmkend _Toc345963638}{\*\bkmkend _Toc351782783}
  35. \par }\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \shading500 \f1\fs16\cgrid {\cs39\lang1024 \tab }{\cs39\revised\lang1024\revauth2\revdttm637768397 [4 bytes]\tab \tab }{\cs39\lang1024 typedef unsigned long ULONG;
  36. \par \tab }{\cs39\revised\lang1024\revauth2\revdttm637768397 [2 bytes]\tab \tab }{\cs39\lang1024 typedef unsigned short USHORT;
  37. \par }{\tab }{\revised\revauth2\revdttm637768397 [2 bytes]\tab \tab }{typedef short }{\b OFFSET}{\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 OFFSET}}}{;
  38. \par \tab }{\revised\revauth2\revdttm637768397 [4 bytes]\tab \tab }{typedef ULONG }{\b SECT}{\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 SECT}}}{;
  39. \par \tab }{\revised\revauth2\revdttm637768397 [4 bytes]\tab \tab }{typedef ULONG }{\b FSINDEX}{\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 FSINDEX}}}{;
  40. \par \tab }{\revised\revauth2\revdttm637768397 [2 bytes]\tab \tab }{typedef USHORT }{\b FSOFFSET}{\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 FSOFFSET}}}{;
  41. \par \tab }{\revised\revauth2\revdttm637768397 [4 bytes]\tab \tab }{typedef ULONG }{\b DFSIGNATURE}{\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 DFSIGNATURE}}}{;}{\revised\revauth2\revdttm637768397
  42. \par \tab [1 byte]\tab \tab typedef unsigned char }{\revised\revauth2\revdttm637768398 BYTE;
  43. \par \tab [2 bytes]\tab \tab typedef unsigned short WORD;
  44. \par \tab [4 bytes]\tab \tab typedef unsigned long DWORD;
  45. \par \tab [2 bytes]\tab \tab typedef WORD }{\b\revised\revauth2\revdttm637768398 DFPROPTYPE}{\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \v\fs12\revised\revauth2\revdttm637768399\cgrid {\xe {\f0\fs12\revised\revauth2\revdttm637768399 DFPROPTYPE}}}{\revised\revauth2\revdttm637768398 ;}{\revised\revauth2\revdttm637768399
  46. \par \tab [4 bytes]\tab \tab typedef ULONG }{\b\revised\revauth2\revdttm637768399 SID}{\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \v\fs12\revised\revauth2\revdttm637768399\cgrid {\xe {\f0\fs12\revised\revauth2\revdttm637768399 SID}}}{\revised\revauth2\revdttm637768399 ;
  47. \par \tab [16 bytes]\tab \tab typedef CLSID GUID;
  48. \par
  49. \par }{\cf6\revised\revauth2\revdttm637768399 \tab [8 bytes]\tab \tab typedef struct tagFILETIME}{\cf6\revised\revauth2\revdttm637768400 }{\cf6\revised\revauth2\revdttm637768399 \{
  50. \par \tab \tab DWORD dwLowDateTime;
  51. \par \tab \tab DWORD dwHighDateTime;
  52. \par \tab }{\cf6\revised\revauth2\revdttm637768400 \tab }{\cf6\revised\revauth2\revdttm637768399 \} }{\b\cf6\revised\revauth2\revdttm637768399 FILETIME}{\revised\revauth2\revdttm637768400 , }{\b\revised\revauth2\revdttm637768400 TIME_T}{\revised\revauth2\revdttm637768400 ;}{\cf6\revised\revauth2\revdttm637768399
  53. \par }{
  54. \par
  55. \par \tab }{\revised\revauth2\revdttm637768400 [4 bytes]\tab \tab }{const SECT }{\b DIFSECT}{\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 DIFSECT}}}{\tab \tab = 0xFFFFFFFC;
  56. \par \tab }{\revised\revauth2\revdttm637768400 [4 bytes]\tab \tab }{const SECT }{\b FATSECT}{\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 FATSECT}}}{\tab \tab = 0xFFFFFFFD;
  57. \par \tab }{\revised\revauth2\revdttm637768400 [4 bytes]\tab \tab }{const SECT }{\b ENDOFCHAIN}{\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 ENDOFCHAIN}}}{\tab = 0xFFFFFFFE;
  58. \par \tab }{\revised\revauth2\revdttm637768400 [4 bytes]\tab \tab }{const SECT }{\b FREESECT}{\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 FREESECT}}}{\tab \tab = 0xFFFFFFFF;
  59. \par {\*\bkmkstart _Toc345472310}{\*\bkmkstart _Toc345963639}{\*\bkmkstart _Toc351782784}{\listtext\pard\plain\s2 \fs28\cf2\cgrid \hich\af0\dbch\af0\loch\f0 2.1\tab}}\pard\plain \s2\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\ilvl1\outlinelevel1\ls1\ilvl1\outlinelevel1\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst3\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrstop8\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc1\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr2\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr1\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \fs28\cf2\cgrid {Header{\*\bkmkend _Toc345472310}{\*\bkmkend _Toc345963639}{\*\bkmkend _Toc351782784}
  60. \par }\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \shading500 \f1\fs16\cgrid {\tab struct StructuredStorageHeader \{}{\revised\revauth2\revdttm637768401 \tab \tab }{\i\fs14\revised\revauth2\revdttm637768401 // [offset from start in bytes, length in bytes]}{
  61. \par \tab \tab BYTE\tab \tab _abSig[8];\tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768401 [0}{\i\fs14\revised\revauth2\revdttm637768402 00}{\i\fs14\revised\revauth2\revdttm637768401 H,}{\i\fs14\revised\revauth2\revdttm637768402 0}{\i\fs14\revised\revauth2\revdttm637768401 8] }{\i\fs14 \{0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1\} for current version,
  62. \par }{\tab \tab \tab \tab \tab \tab \tab \tab \tab }{\i\fs14 // was \{0x0e, 0x11, 0xfc, 0x0d, 0xd0, 0xcf, 0x11, 0xe0\} on old, beta 2 files (late \rquote 92)
  63. \par }{\tab \tab \tab \tab \tab \tab \tab \tab \tab }{\i\fs14 // which are also supported by the reference implementation}{
  64. \par \tab \tab CLSID\tab \tab _clid;\tab \tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768402 [008H,16] }{\i\fs14 class id (set with WriteClassStg, retrieved with GetClassFile/ReadClassStg)}{
  65. \par \tab \tab USHORT\tab \tab _uMinorVersion;\tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768402 [018H,02] }{\i\fs14 minor version of the format: 33 is written by reference implementation}{
  66. \par \tab \tab USHORT\tab \tab _uDllVersion;\tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768402 [01AH,02] }{\i\fs14 major version of the dll/format: 3 is written by reference implementation}{
  67. \par \tab \tab USHORT\tab \tab _uByteOrder;\tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768402 [01CH,02] }{\i\fs14 0xFFFE: indicates Intel byte-ordering}{
  68. \par \tab \tab USHORT\tab \tab _uSectorShift;\tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768403 [01EH,02] }{\i\fs14 size of sectors in power-of-two (typically 9, indicating 512-byte sectors)}{
  69. \par \tab \tab USHORT\tab \tab _uMiniSectorShift;\tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768403 [020H,02] }{\i\fs14 size of mini-sectors in power-of-two (typically 6, indicating 64-byte mini-sectors)}{
  70. \par \tab \tab USHORT\tab \tab _usReserved;\tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768403 [022H,02] }{\i\fs14 reserved, must be zero}{
  71. \par \tab \tab ULONG\tab \tab _ulReserved1;\tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768403 [024H,04] }{\i\fs14 reserved, must be zero}{
  72. \par \tab \tab ULONG\tab \tab _ulReserved2;\tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768403 [028H,04] }{\i\fs14 reserved, must be zero}{
  73. \par \tab \tab FSINDEX\tab \tab _csectFat;\tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768403 [02CH,04] }{\i\fs14 number of SECTs in the FAT chain}{
  74. \par \tab \tab SECT\tab \tab _sectDirStart;\tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768404 [030H,04] }{\i\fs14 first SECT in the }{\i\deleted\fs14\revauthdel2\revdttmdel-1509873007 FAT }{\i\fs14\revised\revauth2\revdttm-1509873007 Directory }{\i\fs14 chain}{
  75. \par \tab \tab DFSIGNATURE\tab _signature;\tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768404 [034H,04] }{\i\fs14 signature used for transactionin: must be zero. The reference implementation}{
  76. \par \tab \tab \tab \tab \tab \tab \tab \tab \tab }{\i\fs14 // does not support transactioning}{
  77. \par \tab \tab ULONG\tab \tab _ulMiniSectorCutoff;}{\i\fs14 \tab // }{\i\fs14\revised\revauth2\revdttm637768404 [038H,04] }{\i\fs14 maximum size for mini-streams: typically 4096 bytes}{
  78. \par \tab \tab SECT\tab \tab _sectMiniFatStart;\tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768404 [03CH,04] }{\i\fs14 first SECT in the mini-FAT chain}{
  79. \par \tab \tab FSINDEX\tab \tab _csectMiniFat;\tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768404 [040H,04] }{\i\fs14 number of SECTs in the mini-FAT chain}{
  80. \par \tab \tab SECT\tab \tab _sectDifStart;\tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768404 [044H,04] }{\i\fs14 first SECT in the DIF chain}{
  81. \par \tab \tab FSINDEX\tab \tab _csectDif;\tab \tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768404 [048H,04] }{\i\fs14 number of SECTs in the DIF chain}{
  82. \par \tab \tab SECT\tab \tab _sectFat[109];\tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768404 [04CH,436] }{\i\fs14 the SECTs of the first 109 FAT sectors}{
  83. \par \tab \tab \};
  84. \par }\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {\f0
  85. \par }{The }{\i Header}{ contains vital information for the instantiation of a Compound File. Its total length is 512 bytes. There is exactly one }{\i Header }{in any Compound File, and it is always located beginning at offset zero in the file.
  86. \par {\*\bkmkstart _Toc345472311}{\*\bkmkstart _Toc345963640}{\*\bkmkstart _Toc351782785}{\listtext\pard\plain\s2 \fs28\cf2\cgrid \hich\af0\dbch\af0\loch\f0 2.2\tab}}\pard\plain \s2\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\ilvl1\outlinelevel1\ls1\ilvl1\outlinelevel1\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst3\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrstop8\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc2\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr2\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr2\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \fs28\cf2\cgrid {Fat Sectors{\*\bkmkend _Toc345472311}{\*\bkmkend _Toc345963640}{\*\bkmkend _Toc351782785}
  87. \par }\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {The }{\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \v\f4\fs20\cgrid {\xe {Fat}}}{\b Fat}{ is the main allocator for space within a Compound File. Every sector in the file is represented within the Fat in some fashion, including those sectors that are unallocated (free). The Fat is a virtual stream made up of one or more Fat Sectors.
  88. \par Fat sectors are arrays of }{\cs39\f1\fs16\lang1024 SECT}{s that represent the allocation of space within the file. Each stream is represented in the Fat by a }{\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \v\f4\fs20\cgrid {\xe {chain}}}{\b chain}{, in much the same fashion as a }{\cs39\f1\fs16\lang1024 DOS}{ file-allocation-table (FAT). To elaborate, the set of Fat Sectors can be considered together to be a single array -- each cell in that array contains the }{\cs39\f1\fs16\lang1024 SECT}{ of the next sector in the chain, and this SECT can be used as an index into the Fat array to continue along the chain. Special values are reserved for chain terminators (}{\cs39\f1\fs16\lang1024 ENDOFCHAIN = 0xFFFFFFFE}{), free sectors (}{\cs39\f1\fs16\lang1024 FREESECT = 0xFFFFFFFF}{), and sectors that contain storage for Fat Sectors (}{\cs39\f1\fs16\lang1024 FATSECT = 0xFFFFFFFD}{) or DIF Sectors (}{\cs39\f1\fs16\lang1024 DIFSECT = 0xFFFFFFC}{), which are not chained in the same way as the others.
  89. \par }\pard \s44\qc\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright {\f0 {\pict\wmetafile8\picw9604\pich2963\picwgoal5445\pichgoal1680 \bin3776  [/&�������8
  90. &
  91. ����&$����TNPPMicrosoft PowerPoint & TNPPP
  92. &
  93. ����&TNPP �� ��/����������������������������������������45&����#�Y!&�����_���-�-�_��
  94. &
  95. ����&������q������Arial��-.
  96.   2
  97. q�3,
  98. &
  99. ����&����J��������Arialh�-�.
  100.   2
  101. qu�5,
  102. &
  103. ����&������������Arialۚ-�.
  104.   2
  105. q;�1,
  106. &
  107. ����&������@������Arial��-�.
  108.   2
  109. q��E5
  110. &
  111. ����&�������������--���"System-��s�+��-y��#��--�'��
  112. &
  113. ����&����|����--�$����-y|�#|�--�'��
  114. &
  115. ����&����.�6��--������-y.�#.�--�'��
  116. &
  117. ����&���������--���?��-y��#��--�'��
  118. &
  119. ����&���������--�9����-y��#��--�'��
  120. &
  121. ����&����B�J��--������-yB�#B�--�'��
  122. &
  123. ����&���������--���T��-y��#��--�'��
  124. &
  125. ����&���������--�M���-y��#��--�'��
  126. &
  127. ����&����<�a��- @�
  128. a��b��
  129. &
  130. ����&����#�H� �D�D��f�#��--
  131. $'�
  132. ~��@��
  133. &
  134. ����&����#����
  135. -- #����_���#�
  136. &
  137. ����&��������� ����O�g���]�--
  138. $��
  139. S����
  140. &
  141. ����&�������;�--  ���7�u�����
  142. &
  143. ����&����4���� �8����u���~�--
  144. $�� ������
  145. &
  146. ����&����^�?��-- ���?���k?^�--
  147. $b�
  148. ���|��
  149. &
  150. ����&������������Arial��-.
  151.  2
  152. ^ �
  153. Pointer in%  ����Arial�-�.
  154.  2
  155. � �from Directory/( 
  156. &
  157. ����&�������y�9����Arial��-�.
  158.  2
  159. 
  160. �Chaining:,-,,-
  161. &
  162. ����
  163. &
  164. ����&TNPP
  165. &
  166. ����--��-�}}{
  167. \par }\pard \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright {The locations of Fat Sectors are read from the DIF (Double-indirect Fat), which is described below. The Fat is represented in itself, but not by a chain \endash a special reserved }{\cs39\f1\fs16\lang1024 SECT}{ value (}{\cs39\f1\fs16\lang1024 FATSECT = 0xFFFFFFFD}{) is used to mark sectors allocated to the Fat.
  168. \par A }{\cs39\f1\fs16\lang1024 SECT}{ can be converted into a byte offset into the file by using the following formula: }{\cs39\f1\fs16\lang1024 SECT << ssheader._uSectorShift + sizeof(ssheader)}{. This implies that sector 0 of the file begins at byte offset 512, not at 0.
  169. \par {\*\bkmkstart _Toc345472312}{\*\bkmkstart _Toc345963641}{\*\bkmkstart _Toc351782786}{\listtext\pard\plain\s2 \fs28\cf2\cgrid \hich\af0\dbch\af0\loch\f0 2.3\tab}}\pard\plain \s2\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\ilvl1\outlinelevel1\ls1\ilvl1\outlinelevel1\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst3\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrstop8\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr2\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \fs28\cf2\cgrid {MiniFat Sectors{\*\bkmkend _Toc345472312}{\*\bkmkend _Toc345963641}{\*\bkmkend _Toc351782786}
  170. \par }\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {Since space for streams is always allocated in sector-sized blocks, there can be considerable waste when storing objects much smaller than sectors (typically 512 bytes). As a solution to this problem, we introduced the concept of the }{\b MiniFat}{\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 MiniFat}}}{. The MiniFat is structurally equivalent to the Fat, but is used in a different way. The virtual sector size for objects represented in the Minifat is }{\cs39\f1\fs16\lang1024 1 << ssheader._uMiniSectorShift}{ (typically 64 bytes) instead of }{\cs39\f1\fs16\lang1024 1 << ssheader._uSectorShift}{ (typically 512 bytes). The storage for these objects comes from a virtual stream within the Multistream (called the }{\b Ministream}{\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 Ministream}}}{).
  171. \par The locations for MiniFat sectors are stored in a standard chain in the Fat, with the beginning of the chain stored in the header.
  172. \par A Minifat sector number can be converted into a byte offset into the ministream by using the following formula: }{\cs39\f1\fs16\lang1024 SECT << ssheader._uMiniSectorShift}{. (This formula is different from the formula used to convert a SECT into a byte offset in the file, since no header is stored in the Ministream)
  173. \par The Ministream is chained within the Fat in exactly the same fashion as any normal stream. It is referenced by the first Directory Entry (}{\cs39\f1\fs16\lang1024 SID}{ 0).
  174. \par {\*\bkmkstart _Toc345472313}{\*\bkmkstart _Toc345963642}{\*\bkmkstart _Toc351782787}{\listtext\pard\plain\s2 \fs28\cf2\cgrid \hich\af0\dbch\af0\loch\f0 2.4\tab}}\pard\plain \s2\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\ilvl1\outlinelevel1\ls1\ilvl1\outlinelevel1\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst3\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrstop8\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc4\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr2\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr4\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \fs28\cf2\cgrid {DIF Sectors{\*\bkmkend _Toc345472313}{\*\bkmkend _Toc345963642}{\*\bkmkend _Toc351782787}
  175. \par }\pard\plain \s44\qc\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {\f0 {\pict\wmetafile8\picw6058\pich3862\picwgoal3435\pichgoal2190 \bin1600  1&������N�@�
  176. &
  177. ����&$����TNPPMicrosoft PowerPoint & TNPPP
  178. &
  179. ����&TNPP N��� l^1�������������������������������������������45&����{���gC&��������A!����Arial-.
  180.  .2
  181. ����Pointer to next DIF sector   #  
  182. &
  183. ����&����������g����-����-�-g������
  184. &
  185. ����&��������g����-�-�-�g����
  186. &
  187. ����&�������� C�-��- �� 0��C �� ��-�-
  188. $��?H
  189. &
  190. ����&����i�N�&�������Arial?�-�.
  191.  2
  192. ����
  193. DIF Sector4,0((,
  194. &
  195. ����&��������z�`�����Arial-�.
  196.  *2
  197. 8� �Pointers to FAT sectors% "&"
  198. &
  199. ����
  200. &
  201. ����&TNPP
  202. &
  203. ����--����"System-�}}{
  204. \par }\pard \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright {The }{\b Double-Indirect Fat}{\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 Double-Indirect Fat}}}{\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 DIF}}}{ is used to represent storage of the Fat. The DIF is also represented by an array of }{\cs39\f1\fs16\lang1024 SECT}{s, and is chained by the terminating cell in each sector array (see the diagram above). As an optimization, the first 109 Fat Sectors are represented within the header itself, so no DIF sectors will be found in a small (< 7 MB) Compound File.
  205. \par The DIF represents the Fat in a different manner than the Fat represents a chain. A given index into the DIF will contain the }{\cs39\f1\fs16\lang1024 SECT }{of the Fat Sector found at that offset in the Fat virtual stream. For instance, index 3 in the DIF would contain the }{\cs39\f1\fs16\lang1024 SECT }{for Sector #3 of the Fat.
  206. \par The storage for DIF Sectors is reserved in the Fat, but is not chained there (space for it is reserved by a special }{\cs39\f1\fs16\lang1024 SECT}{ value , }{\cs39\f1\fs16\lang1024 DIFSECT=0xFFFFFFFC}{). The location of the first DIF sector is stored in the header.
  207. \par }\pard\plain \nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {A value of }{\cs39\f1\fs16\lang1024 ENDOFCHAIN=0xFFFFFFFE}{ is stored in the pointer to the next DIF sector of the last DIF sector.
  208. \par {\*\bkmkstart _Toc345472314}{\*\bkmkstart _Toc345963643}{\*\bkmkstart _Toc351782788}{\listtext\pard\plain\s2 \fs28\cf2\cgrid \hich\af0\dbch\af0\loch\f0 2.5\tab}}\pard\plain \s2\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\ilvl1\outlinelevel1\ls1\ilvl1\outlinelevel1\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst3\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrstop8\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc5\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr2\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr5\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \fs28\cf2\cgrid {Directory Sectors{\*\bkmkend _Toc345472314}{\*\bkmkend _Toc345963643}{\*\bkmkend _Toc351782788}
  209. \par }\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \shading500 \f1\fs16\cgrid {\tab typedef enum tagSTGTY \{
  210. \par \tab \tab STGTY_INVALID\tab \tab = 0,
  211. \par \tab \tab STGTY_STORAGE\tab \tab = 1,
  212. \par \tab \tab STGTY_STREAM\tab \tab = 2,
  213. \par \tab \tab STGTY_LOCKBYTES\tab = 3,
  214. \par \tab \tab STGTY_PROPERTY\tab = 4,
  215. \par \tab \tab STGTY_ROOT\tab \tab = 5,
  216. \par \tab \tab \} }{\b STGTY}{\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 STGTY}}}{;
  217. \par
  218. \par \tab typedef enum tagDECOLOR \{
  219. \par \tab \tab DE_RED\tab \tab \tab \tab = 0,
  220. \par \tab \tab DE_BLACK\tab \tab \tab = 1,
  221. \par \tab \tab \} }{\b DECOLOR}{\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 DECOLOR}}}{;
  222. \par
  223. \par \tab struct StructuredStorageDirectoryEntry \{}{\revised\revauth2\revdttm637768405 \tab \tab \tab }{\i\fs14\revised\revauth2\revdttm637768405 // [offset from start in bytes, length in bytes]}{
  224. \par \tab \tab BYTE\tab \tab _ab[32*sizeof(WCHAR)];\tab \tab // }{\i\fs14\revised\revauth2\revdttm637768405 [}{\i\fs14\revised\revauth2\revdttm637768406 000H,64}{\i\fs14\revised\revauth2\revdttm637768405 ] }{64 bytes. The Element name in Unicode, padded with zeros to
  225. \par \tab \tab \tab \tab \tab \tab \tab \tab \tab \tab \tab // fill this byte array
  226. \par \tab \tab WORD\tab \tab _cb;\tab \tab \tab \tab \tab \tab // }{\i\fs14\revised\revauth2\revdttm637768406 [040H,02] }{Length of the Element name in characters, not bytes
  227. \par \tab \tab BYTE\tab \tab _mse;\tab \tab \tab \tab \tab // }{\i\fs14\revised\revauth2\revdttm637768406 [042H,01] }{Type of object: value taken from the STGTY enumeration
  228. \par \tab \tab BYTE\tab \tab _bflags;\tab \tab \tab \tab \tab // }{\i\fs14\revised\revauth2\revdttm637768406 [043H,01] }{Value taken from DECOLOR enumeration.
  229. \par \tab \tab SID\tab \tab \tab _sidLeftSib;\tab \tab \tab \tab // }{\i\fs14\revised\revauth2\revdttm637768406 [044H,04] }{SID of the left-sibling of this entry in the directory tree
  230. \par \tab \tab SID\tab \tab \tab _sidRightSib;\tab \tab \tab \tab // }{\i\fs14\revised\revauth2\revdttm637768406 [}{\i\fs14\revised\revauth2\revdttm637768407 048H,04}{\i\fs14\revised\revauth2\revdttm637768406 ] }{SID of the right-sibling of this entry in the directory tree
  231. \par \tab \tab SID\tab \tab \tab _sidChild;\tab \tab \tab \tab \tab // }{\i\fs14\revised\revauth2\revdttm637768406 [}{\i\fs14\revised\revauth2\revdttm637768407 04CH,04}{\i\fs14\revised\revauth2\revdttm637768406 ] }{SID of the }{\deleted\revauthdel2\revdttmdel-1509872999 first }{child }{\revised\revauth2\revdttm-1509872998 acting as the root of all the children }{of this}{\revised\revauth2\revdttm-1509872998
  232. \par \tab \tab \tab \tab \tab \tab \tab \tab \tab \tab \tab // }{ element (if _mse=STGTY_STORAGE)
  233. \par \tab \tab GUID\tab \tab _clsId;\tab \tab \tab \tab \tab // }{\i\fs14\revised\revauth2\revdttm637768406 [}{\i\fs14\revised\revauth2\revdttm637768407 050H,16}{\i\fs14\revised\revauth2\revdttm637768406 ] }{CLSID of this storage (if _mse=STGTY_STORAGE)
  234. \par \tab \tab DWORD\tab \tab _dwUserFlags;\tab \tab \tab \tab // }{\i\fs14\revised\revauth2\revdttm637768406 [}{\i\fs14\revised\revauth2\revdttm637768407 060H,04}{\i\fs14\revised\revauth2\revdttm637768406 ] }{User flags of this storage (if _mse=STGTY_STORAGE)
  235. \par \tab \tab TIME_T\tab \tab _time[2];\tab \tab \tab \tab \tab // }{\i\fs14\revised\revauth2\revdttm637768406 [}{\i\fs14\revised\revauth2\revdttm637768407 064H,16}{\i\fs14\revised\revauth2\revdttm637768406 ] }{Create/Modify time-stamps (if _mse=STGTY_STORAGE)
  236. \par \tab \tab SECT\tab \tab _sectStart;\tab \tab \tab \tab // }{\i\fs14\revised\revauth2\revdttm637768406 [}{\i\fs14\revised\revauth2\revdttm637768407 074H,04}{\i\fs14\revised\revauth2\revdttm637768406 ] }{starting SECT of the stream (if _mse=STGTY_STREAM)
  237. \par \tab \tab ULONG\tab \tab _ulSize;\tab \tab \tab \tab \tab // }{\i\fs14\revised\revauth2\revdttm637768406 [}{\i\fs14\revised\revauth2\revdttm637768407 078H,04}{\i\fs14\revised\revauth2\revdttm637768406 ] }{size of stream in bytes (if _mse=STGTY_STREAM)
  238. \par \tab \tab DFPROPTYPE\tab _dptPropType;\tab \tab \tab // }{\i\fs14\revised\revauth2\revdttm637768406 [}{\i\fs14\revised\revauth2\revdttm637768407 07CH,02}{\i\fs14\revised\revauth2\revdttm637768406 ] }{Reserved for future use. Must be zero.
  239. \par \tab \tab \};
  240. \par }\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {
  241. \par The }{\b Directory}{\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 Directory}}}{ is a structure used to contain per-stream information about the streams in a Compound File, as well as to maintain a tree-styled containment structure. It is a virtual stream made up of one or more Directory Sectors. The Directory is represented as a standard chain of sectors within the Fat. The first sector of the Directory chain (the Root Directory Entry)
  242. \par Each level of the containment hierarchy (i.e. each set of siblings) is represented as a red-black tree. The parent of this set of sibilings will have a pointer to the top of this tree. This red-black tree must maintain the following conditions in order for it to be valid:
  243. \par }\pard \s44\qj\fi-360\li360\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright {\tab 1.\tab The root node must always be black.}{\revised\revauth1\revdttm-1508828265 Since the root }{\revised\revauth1\revdttm-1508828264 directory }{\revised\revauth1\revdttm-1508828263 (see below) }{\revised\revauth1\revdttm-1508828265 does not have siblings, it's color is irrelevant and may therefore be either red or black.}{
  244. \par \tab 2.\tab No two consecutive nodes may both be red.
  245. \par \tab 3.\tab The left child must always be less than the right child. This relationship is defined as:
  246. \par \tab \tab }{\field\flddirty{\*\fldinst {SYMBOL 183 \\f "Symbol" \\s 10 \\h}}{\fldrslt }}{ A node with a shorter name is less than a node with a longer name (i.e. compare length of the name)
  247. \par \tab \tab }{\field\flddirty{\*\fldinst {SYMBOL 183 \\f "Symbol" \\s 10 \\h}}{\fldrslt }}{ For nodes with the same length names, compare the two names.
  248. \par }\pard \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright {The simplest implementation of the above invariants would be to mark every node as black, in which case the tree is simply a binary tree.
  249. \par A Directory Sector is an array of Directory Entries, a structure represented in the diagram below. Each user stream within a Compound File is represented by a single Directory Entry. The Directory is considered as a large array of Directory Entries. It is useful to note that the Directory Entry for a stream remains at the same index in the Directory array for the life of the stream \endash thus, this index (called an }{\b SID}{\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 SID}}}{) can be used to readily identify a given stream.
  250. \par }{\f0 The directory entry is then padded out with zeros to make a total size of 128 bytes.
  251. \par }{Directory entries are grouped into blocks of four to form Directory Sectors.
  252. \par {\listtext\pard\plain\s3 \cf2\cgrid \hich\af0\dbch\af0\loch\f0 2.5.1\tab}}\pard\plain \s3\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl2\outlinelevel2\s3\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl2\outlinelevel2\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst5\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrxst46\pnrxst0\pnrxst2\pnrxst0\pnrstop12\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb5\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc5\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr2\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr5\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr1\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \cf2\cgrid {Root Directory Entry
  253. \par }\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {The first sector of the Directory chain (also referred to as the first element of the Directory array, or }{\cs39\f1\fs16\lang1024 SID}{ 0) is known as the }{\b Root Directory Entry}{\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \b\v\fs12\cgrid {\xe {\b\f0\fs12 Root Directory Entry}}}{ and is reserved for two purposes: First, it provides a root parent for all objects stationed at the root of the multi-stream. Second, its function is overloaded to store the size and starting sector for the Mini-stream.
  254. \par The Root Directory Entry behaves as both a stream and a storage. All of the fields in the Directory Entry are valid for the root. The Root Directory Entry\rquote s Name field typically contains the string \ldblquote RootEntry\rdblquote in Unicode, although some versions of structured storage (particularly the preliminary reference implementation and the Macintosh version) store only the first letter of this string, \ldblquote R\rdblquote in the name. This string is always ignored, since the Root Directory Entry is known by its position at }{\cs39\f1\fs16\lang1024 SID}{ 0 rather than by its name, and its name is not otherwise used. New implementations should write \ldblquote RootEntry\rdblquote properly in the Root Directory Entry for consistency and support manipulating files created with only the \ldblquote R\rdblquote name.
  255. \par {\listtext\pard\plain\s3 \cf2\cgrid \hich\af0\dbch\af0\loch\f0 2.5.2\tab}}\pard\plain \s3\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl2\outlinelevel2\s3\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl2\outlinelevel2\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst5\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrxst46\pnrxst0\pnrxst2\pnrxst0\pnrstop12\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb5\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc5\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr2\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr5\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr2\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \cf2\cgrid {Other Directory Entries
  256. \par }\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {Non-root directory entries are marked as either stream (}{\cs39\f1\fs16\lang1024 STGTY_STREAM}{) or storage (}{\cs39\f1\fs16\lang1024 STGTY_STORAGE}{) elements. Storage elements have a }{\cs39\f1\fs16\lang1024 _clsid}{, }{\cs39\f1\fs16\lang1024 _time[]}{, and }{\cs39\f1\fs16\lang1024 _sidChild}{ values; stream elements may not. Stream elements have valid }{\cs39\f1\fs16\lang1024 _sectStart}{ and }{\cs39\f1\fs16\lang1024 _ulSize}{ members, whereas these fields are set to zero for storage elements (except as noted above for the Root Directory Entry).
  257. \par To determine the physical file location of actual stream data from a stream directory entry, it is necessary to determine which FAT (normal or mini) the stream exists within. Streams whose }{\cs39\f1\fs16\lang1024 _ulSize}{ member is less than the }{\cs39\f1\fs16\lang1024 _ulMiniSectorCutoff}{ value for the file exist in the ministream, and so the }{\cs39\f1\fs16\lang1024 _startSect}{ is used as an index into the MiniFat (which starts at }{\cs39\f1\fs16\lang1024 _sectMiniFatStart}{) to track the chain of mini-sectors through the mini-stream (which is, as noted earlier, the standard (non-mini) stream referred to by the Root Directory Entry\rquote s }{\cs39\f1\fs16\lang1024 _sectStart}{ value). Streams whose }{\cs39\f1\fs16\lang1024 _ulSize}{ member is greater than the }{\cs39\f1\fs16\lang1024 _ulMiniSectorCutoff}{ value for the file exist as standard streams \endash their }{\cs39\f1\fs16\lang1024 _sectStart}{ value is used as an index into the standard FAT which describes the chain of full sectors containing their data).
  258. \par {\*\bkmkstart _Toc345472315}{\*\bkmkstart _Toc345963644}{\*\bkmkstart _Toc351782789}{\listtext\pard\plain\s2 \fs28\cf2\cgrid \hich\af0\dbch\af0\loch\f0 2.6\tab}}\pard\plain \s2\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\ilvl1\outlinelevel1\ls1\ilvl1\outlinelevel1\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst3\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrstop8\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc6\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr2\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr6\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \fs28\cf2\cgrid {Storage Sectors{\*\bkmkend _Toc345472315}{\*\bkmkend _Toc345963644}{\*\bkmkend _Toc351782789}
  259. \par }\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {Storage sectors are simply collections of arbitrary bytes. They are the building blocks of user streams, and no restrictions are imposed on their contents. Storage sectors are represented as chains in the Fat, and each storage chain (stream) will have a single Directory Entry associated with it.
  260. \par {\*\bkmkstart _Toc345472316}{\*\bkmkstart _Toc345963645}{\*\bkmkstart _Toc351782790}{\listtext\pard\plain\s1 \b\fs28\cf2\cgrid \hich\af0\dbch\af0\loch\f0 3.\tab}}\pard\plain \s1\qj\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\outlinelevel0\ls1\outlinelevel0\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst2\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrstop6\pnrstart1\pnrrgb1\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \b\fs28\cf2\cgrid {Examples{\*\bkmkend _Toc345472316}{\*\bkmkend _Toc345963645}{\*\bkmkend _Toc351782790}
  261. \par }\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {This section contains a hexadecimal dump of an example structured storage file to clarify the binary file format.
  262. \par {\*\bkmkstart _Toc345472317}{\*\bkmkstart _Toc345963646}{\*\bkmkstart _Toc351782791}{\*\bkmkend INTERN_LINK2}{\*\bkmkend INTERN_LINK1}{\listtext\pard\plain\s2 \fs28\cf2\cgrid \hich\af0\dbch\af0\loch\f0 3.1\tab}}\pard\plain \s2\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\ilvl1\outlinelevel1\ls1\ilvl1\outlinelevel1\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst3\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrstop8\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc1\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr1\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \fs28\cf2\cgrid {Sector 0: Header{\*\bkmkend _Toc345472317}{\*\bkmkend _Toc345963646}{\*\bkmkend _Toc351782791}
  263. \par }\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \shading500 \f1\fs16\cgrid {\f2 \tab _abSig\tab \tab \tab \tab \tab = DOCF 11E0 A1B1 1AE1
  264. \par _clid\tab \tab \tab \tab \tab = 0000 0000 0000 0000 0000 0000 0000 0000
  265. \par _uMinorVersion\tab \tab \tab = 003B
  266. \par _uDllVersion\tab \tab \tab = 3
  267. \par _uByteOrder\tab \tab \tab = FFFE (Intel byte order)
  268. \par _uSectorShift\tab \tab \tab = 9 (512 bytes)
  269. \par _uMiniSectorShift\tab \tab = 6 (64 bytes)
  270. \par _usReserved\tab \tab \tab = 0000
  271. \par _ulReserved1\tab \tab \tab = 00000000
  272. \par _ulReserved2\tab \tab \tab = 00000000
  273. \par _csectFat\tab \tab \tab \tab = 00000001
  274. \par _sectDirStart\tab \tab \tab = 00000001
  275. \par _signature\tab \tab \tab \tab = 00000000
  276. \par _ulMiniSectorCutoff\tab = 00001000 (4096 bytes)
  277. \par _sectMiniFatStart\tab \tab = 00000002
  278. \par _csectMiniFat\tab \tab \tab = 00000001
  279. \par _sectDifStart\tab \tab \tab = FFFFFFFE (no DIF, file is < 7Mb)
  280. \par _csectDIF\tab \tab \tab \tab = 00000000
  281. \par _sectFat[]\tab \tab \tab \tab = 00000000 FFFFFFFF . . . (continues with FFFFFFFF)
  282. \par
  283. \par 000000: D0CF 11E0 A1B1 1AE1 0000 0000 0000 0000 ................
  284. \par 000010: 0000 0000 0000 0000 3B00 0300 FEFF 0900 ........;.......
  285. \par 000020: 0600 0000 0000 0000 0000 0000 0100 0000 ................
  286. \par 000030: 0100 0000 0000 0000 0010 0000 0200 0000 ................
  287. \par 000040: 0100 0000 FEFF FFFF 0000 0000 0000 0000 ................
  288. \par 000050: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF ................
  289. \par . . .
  290. \par 0001F0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF ................
  291. \par {\*\bkmkstart _Toc345472318}{\*\bkmkstart _Toc345963647}{\*\bkmkstart _Toc351782792}{\listtext\pard\plain\s2 \fs28\cf2\cgrid \hich\af0\dbch\af0\loch\f0 3.2\tab}}\pard\plain \s2\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\ilvl1\outlinelevel1\ls1\ilvl1\outlinelevel1\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst3\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrstop8\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc2\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr2\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \fs28\cf2\cgrid {SECT 0: First (Only) FAT Sector{\*\bkmkend _Toc345472318}{\*\bkmkend _Toc345963647}{\*\bkmkend _Toc351782792}
  292. \par }\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \shading500 \f1\fs16\cgrid {\f2 \tab SECT 0: FFFFFFFD = FATSECT: marks this sector as a FAT sector.
  293. \par \tab \tab \tab \tab Referred to in header by _sectFat[0]
  294. \par \tab SECT 1: FFFFFFFE = ENDOFCHAIN: marks the end of the directory chain,
  295. \par \tab \tab \tab \tab referred to in header by _sectDirStart
  296. \par \tab SECT 2: FFFFFFFE = ENDOFCHAIN: marks the end of the mini-fat, referred to
  297. \par \tab \tab \tab \tab in header by _sectMiniFatStart
  298. \par \tab SECT 3: 00000004 = pointer to the next sector in the \ldblquote Stream 1\rdblquote data. This sector is
  299. \par \tab \tab \tab \tab the first sector of \ldblquote Stream 1\rdblquote , it is referred to by the Directory Entry
  300. \par \tab SECT 4: ENDOFCHAIN (0xFFFFFFFE): marks the end of the \ldblquote Stream 1\rdblquote stream data.
  301. \par \tab Further Entries are empty (FREESECT = 0xFFFFFFFF)
  302. \par
  303. \par 000200: FDFF FFFF FEFF FFFF FEFF FFFF 0400 0000 ................
  304. \par 000210: FEFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF ................
  305. \par . . .
  306. \par 0003F0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF ................
  307. \par {\*\bkmkstart _Toc345472319}{\*\bkmkstart _Toc345963648}{\*\bkmkstart _Toc351782793}{\listtext\pard\plain\s2 \fs28\cf2\cgrid \hich\af0\dbch\af0\loch\f0 3.3\tab}}\pard\plain \s2\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\ilvl1\outlinelevel1\ls1\ilvl1\outlinelevel1\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst3\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrstop8\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \fs28\cf2\cgrid {SECT 1: First (Only) Directory Sector{\*\bkmkend _Toc345472319}{\*\bkmkend _Toc345963648}{\*\bkmkend _Toc351782793}
  308. \par }\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \shading500 \f1\fs16\cgrid {\f2 SID 0: Root SID: Root Name = "R"
  309. \par SID 1: Element 1 SID: Name = "Storage 1"
  310. \par SID 2: Element 2 SID: Name = "Stream 1"
  311. \par SID 3: Unused
  312. \par {\listtext\pard\plain\s3 \cf2\cgrid \hich\af0\dbch\af0\loch\f0 3.3.1\tab}}\pard\plain \s3\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl2\outlinelevel2\s3\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl2\outlinelevel2\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst5\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrxst46\pnrxst0\pnrxst2\pnrxst0\pnrstop12\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb5\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr1\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \cf2\cgrid {SID 0: Root Directory Entry
  313. \par }\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \shading500 \f1\fs16\cgrid {\f2 _ab = ("R") (this should be \ldblquote Root Entry\rdblquote )
  314. \par _cb = 000}{\f2\revised\revauth2\revdttm637768409 4}{\deleted\f2\revauthdel2\revdttmdel637768409 2}{\f2 (}{\f2\revised\revauth2\revdttm637768409 4}{\deleted\f2\revauthdel2\revdttmdel637768409 2}{\f2 bytes, }{\deleted\f2\revauthdel2\revdttmdel637768409 do}{\deleted\f2\revauthdel2\revdttmdel637768410 es not }{\f2 include}{\f2\revised\revauth2\revdttm637768410 s}{\f2 double-null terminator)
  315. \par _mse = 05 (STGTY_ROOT)
  316. \par _bflags = 00 (DE_RED)
  317. \par _sidLeftSib = FFFFFFFF (none)
  318. \par _sidRightSib = FFFFFFFF (none)
  319. \par _sidChild = 00000001 (SID 1: \ldblquote Storage 1\rdblquote )
  320. \par _clsid = 0067 6156 54C1 CE11 8553 00AA 00A1 F95B
  321. \par _dwUserFlags = 00000000 (n/a for STGTY_ROOT)
  322. \par _time[0] = CreateTime = 0000 0000 0000 0000 (none set)
  323. \par _time[1] = ModifyTime = 801E 9213 4BB4 BA01 (??)
  324. \par _sectStart = 00000003 (starting sector of MiniStream)
  325. \par _ulSize = 00000240 (length of MiniStream in bytes)
  326. \par _dptPropType = 0000 (n/a)
  327. \par
  328. \par 000400: 0052 0000 0000 0000 0000 0000 0000 0000 .R..............
  329. \par 000410: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  330. \par 000420: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  331. \par 000430: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  332. \par 000440: 0}{\f2\revised\revauth2\revdttm637768410 4}{\deleted\f2\revauthdel2\revdttmdel637768410 2}{\f2 00 0500 FFFF FFFF FFFF FFFF 0100 0000 ................
  333. \par 000450: 0067 6156 54C1 CE11 8553 00AA 00A1 F95B .gaVT....S.....[
  334. \par 000460: 0000 0000 0000 0000 0000 0000 801E 9213 ................
  335. \par 000470: 4BB4 BA01 0300 0000 4002 0000 0000 0000 K.......@.......
  336. \par {\listtext\pard\plain\s3 \cf2\cgrid \hich\af0\dbch\af0\loch\f0 3.3.2\tab}}\pard\plain \s3\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl2\outlinelevel2\s3\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl2\outlinelevel2\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst5\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrxst46\pnrxst0\pnrxst2\pnrxst0\pnrstop12\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb5\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr2\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \cf2\cgrid {SID 1: \ldblquote Storage 1\rdblquote
  337. \par }\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \shading500 \f1\fs16\cgrid {\f2 _ab = ("Storage 1")
  338. \par _cb = 0014 (20 bytes, including double-null terminator)
  339. \par _mse = 01 (STGTY_STORAGE)
  340. \par _bflags = 01 (DE_BLACK)
  341. \par _sidLeftSib = FFFFFFFF (none)
  342. \par _sidRightSib = FFFFFFFF (none)
  343. \par _sidChild = 00000002 (SID 2: \ldblquote Stream 1\rdblquote )
  344. \par _clsid = 0000 0000 0000 0000 0000 0000 0000 0000 (none set)
  345. \par _dwUserFlags = 00000000 (none set)
  346. \par _time[0] = CreateTime = 00000000 00000000 (none set)
  347. \par _time[1] = ModifyTime = 00000000 00000000 (none set)
  348. \par _sectStart = 00000000 (n/a)
  349. \par _ulSize = 00000000 (n/a)
  350. \par _dptPropType = 0000 (n/a)
  351. \par
  352. \par 000480: 5300 7400 6F00 7200 6100 6700 6500 2000 S.t.o.r.a.g.e. .
  353. \par 000490: 3100 0000 0000 0000 0000 0000 0000 0000 1...............
  354. \par 0004A0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  355. \par 0004B0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  356. \par 0004C0: 1400 0101 FFFF FFFF FFFF FFFF 0200 0000 ................
  357. \par 0004D0: 0061 6156 54C1 CE11 8553 00AA 00A1 F95B .aaVT....S.....[
  358. \par 0004E0: 0000 0000 0088 F912 4BB4 BA01 801E 9213 ........K.......
  359. \par 0004F0: 4BB4 BA01 0000 0000 0000 0000 0000 0000 K...............
  360. \par {\listtext\pard\plain\s3 \cf2\cgrid \hich\af0\dbch\af0\loch\f0 3.3.3\tab}}\pard\plain \s3\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl2\outlinelevel2\s3\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl2\outlinelevel2\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst5\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrxst46\pnrxst0\pnrxst2\pnrxst0\pnrstop12\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb5\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \cf2\cgrid {SID 2: \ldblquote Stream 1\rdblquote
  361. \par }\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \shading500 \f1\fs16\cgrid {\f2 _ab = ("Stream 1")
  362. \par _cb = 0012 (18 bytes, including double-null terminator)
  363. \par _mse = 02 (STGTY_STREAM)
  364. \par _bflags = 01 (DE_BLACK)
  365. \par _sidLeftSib = FFFFFFFF (none)
  366. \par _sidRightSib = FFFFFFFF (none)
  367. \par _sidChild = FFFFFFFF (n/a for STGTY_STREAM)
  368. \par _clsid = 0000 0000 0000 0000 0000 0000 0000 0000 (n/a)
  369. \par _dwUserFlags = 00000000 (n/a)
  370. \par _time[0] = CreateTime = 00000000 00000000 (n/a)
  371. \par _time[1] = ModifyTime = 00000000 00000000 (n/a)
  372. \par _startSect = 00000000 (SECT in mini-fat, since _ulSize is smaller than _ulMiniSectorCutoff)
  373. \par _ulSize = 00000220 (< ssheader._ulMiniSectorCutoff, so _sectStart is in Mini)
  374. \par _dptPropType = 0000 (n/a)
  375. \par
  376. \par 000500: 5300 7400 7200 6500 6100 6D00 2000 3100 S.t.r.e.a.m. .1.
  377. \par 000510: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  378. \par 000520: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  379. \par 000530: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  380. \par 000540: 1200 0201 FFFF FFFF FFFF FFFF FFFF FFFF ................
  381. \par 000550: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  382. \par 000560: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  383. \par 000570: 0000 0000 0000 0000 2002 0000 0000 0000 ........ .......
  384. \par 000580: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  385. \par {\listtext\pard\plain\s3 \cf2\cgrid \hich\af0\dbch\af0\loch\f0 3.3.4\tab}}\pard\plain \s3\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl2\outlinelevel2\s3\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl2\outlinelevel2\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst5\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrxst46\pnrxst0\pnrxst2\pnrxst0\pnrstop12\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb5\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr4\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \cf2\cgrid {SID 3: Unused
  386. \par }\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \shading500 \f1\fs16\cgrid {\f2 000590: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  387. \par 0005A0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  388. \par 0005B0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  389. \par 0005C0: 0000 0000 FFFF FFFF FFFF FFFF FFFF FFFF ................
  390. \par 0005D0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  391. \par 0005E0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  392. \par 0005F0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  393. \par {\*\bkmkstart _Toc345472320}{\*\bkmkstart _Toc345963649}{\*\bkmkstart _Toc351782794}{\listtext\pard\plain\s2 \fs28\cf2\cgrid \hich\af0\dbch\af0\loch\f0 3.4\tab}}\pard\plain \s2\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\ilvl1\outlinelevel1\ls1\ilvl1\outlinelevel1\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst3\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrstop8\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc4\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr4\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \fs28\cf2\cgrid {SECT 3: MiniFat Sector{\*\bkmkend _Toc345472320}{\*\bkmkend _Toc345963649}{\*\bkmkend _Toc351782794}
  394. \par }\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \shading500 \f1\fs16\cgrid {\f2 \tab SECT 0: 00000001: pointer to the second sector in the \ldblquote Stream 1\rdblquote data. This sector is
  395. \par \tab \tab \tab \tab the first sector of \ldblquote Stream 1\rdblquote , it is referred to by _sectStart of SID 2
  396. \par \tab SECT 1: 00000002: pointer to the third sector in the \ldblquote Stream 1\rdblquote data. This sector is
  397. \par \tab \tab \tab \tab the second sector of \ldblquote Stream 1\rdblquote , it is referred to in MiniFat SECT 0, above.
  398. \par . . .
  399. \par }\pard \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\outlinelevel0\adjustright \shading500 {\f2 SECT 8: FFFFFFFE = ENDOFCHAIN: marks the end of the \ldblquote Stream 1\rdblquote data.
  400. \par }\pard \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \shading500 {\f2
  401. \par }\pard \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\outlinelevel0\adjustright \shading500 {\f2 \tab Further Entries are empty (FREESECT = 0xFFFFFFFF)
  402. \par }\pard \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \shading500 {\f2
  403. \par 000600: 0100 0000 0200 0000 0300 0000 0400 0000 ................
  404. \par 000610: 0500 0000 0600 0000 0700 0000 0800 0000 ................
  405. \par 000620: FEFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF ................
  406. \par . . .
  407. \par 0007F0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF ................
  408. \par {\*\bkmkstart _Toc345472321}{\*\bkmkstart _Toc345963650}{\*\bkmkstart _Toc351782795}{\listtext\pard\plain\s2 \fs28\cf2\cgrid \hich\af0\dbch\af0\loch\f0 3.5\tab}}\pard\plain \s2\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\ilvl1\outlinelevel1\ls1\ilvl1\outlinelevel1\pnrauth1\pnrdate-1508828266\pnrstart0\pnrxst3\pnrxst0\pnrxst0\pnrxst0\pnrxst46\pnrxst0\pnrxst1\pnrxst0\pnrstop8\pnrstart1\pnrrgb1\pnrrgb3\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrrgb0\pnrstop9\pnrstart2\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc3\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc5\pnrnfc0\pnrnfc0\pnrstop18\pnrstart3\pnrpnbr3\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr5\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrstop36\adjustright \fs28\cf2\cgrid {SECT 4: MiniStream (Data of \ldblquote Stream 1\rdblquote ){\*\bkmkend _Toc345472321}{\*\bkmkend _Toc345963650}{\*\bkmkend _Toc351782795}
  409. \par }\pard\plain \s73\fi-720\li360\ri-720\nowidctlpar\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\adjustright \shading500 \f1\fs16\cgrid {\i\f2\fs14 // referred to by SECTs in MiniFat of SECT 3, above
  410. \par }{\f2
  411. \par 000800: 4461 7461 2066 6F72 2073 7472 6561 6D20 Data for stream
  412. \par 000810: 3144 6174 6120 666F 7220 7374 7265 616D 1Data for stream
  413. \par 000820: 2031 4461 7461 2066 6F72 2073 7472 6561 1Data for strea
  414. \par . . .
  415. \par 000A00: 7461 2066 6F72 2073 7472 6561 6D20 3144 ta for stream 1D
  416. \par 000A10: 6174 6120 666F 7220 7374 7265 616D 2031 ata for stream 1
  417. \par
  418. \par }{\i\f2\fs14 // data ends at 000A1F, MiniSector is filled to the end with known data (a copy of the header or
  419. \par // FFFFFFF to prevent random disk or memory contents from contaminating the file on-disk.
  420. \par }{\f2
  421. \par 000A20: 0000 0000 0000 0000 3B00 03FF FE00 0900 ........;.......
  422. \par 000A30: 0600 0000 0000 0000 0000 0000 0000 0100 ................
  423. \par 000A40: D0CF 11E0 A1B1 1AE1 0000 0000 0000 0000 ................
  424. \par 000A50: 0000 0000 0000 0000 003B 0003 FFFE 0009 .........;......
  425. \par 000A60: 0006 0000 0000 0000 0000 0000 0000 0001 ................
  426. \par 000A70: 0000 0001 0000 0000 0000 1000 0000 0002 ................
  427. \par 000A80: 0000 0001 FFFF FFFE 0000 0000 0000 0000 ................
  428. \par 000A90: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF ................
  429. \par . . .
  430. \par 000BF0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF ................}{
  431. \par }\pard\plain \nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {\f0 \sect }\sectd \marglsxn1440\margrsxn1440\binfsxn258\binsxn258\pgnrestart\pgnlcrm\linex0\endnhere\sectdefaultcl {\header \pard\plain \s35\keepn\nowidctlpar\widctlpar\tqc\tx4320\tqr\tx8640\adjustright \f5\fs16\cgrid {
  432. \par }}\pard\plain \s46\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw30\brsp60 \brdrbtw\brdrs\brdrw30\brsp60 \outlinelevel0\adjustright \b\fs36\cf2\cgrid {Index
  433. \par }\pard\plain \s43\qj\sb720\sa480\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {\f0 \sect }\sectd \marglsxn1440\margrsxn1440\binfsxn258\binsxn258\sbknone\pgnrestart\pgnlcrm\linex0\cols2\endnhere\sectdefaultcl {\header \pard\plain \s35\keepn\nowidctlpar\widctlpar\tqc\tx4320\tqr\tx8640\adjustright \f5\fs16\cgrid {\field{\*\fldinst {ref ProjectName}}{\fldrslt {\b Error! Reference source not found.}}}{\tab }{\field{\*\fldinst {title }}{\fldrslt {Compound File Binary Format}}}{\tab Draft: }{\field{\*\fldinst {ref Version}}{\fldrslt {\b Error! Reference source not found.}}}{; }{\field{\*\fldinst {DATE}}{\fldrslt {\lang1024 01/03/97}}}{
  434. \par }}{\footer \pard\plain \s34\keepn\nowidctlpar\widctlpar\tqc\tx4320\tqr\tx8640\adjustright \f5\fs16\cgrid {\f3 \'d3}{\f1 Microsoft Corporation, 1992. All Rights Reserved.\tab }{\field{\*\fldinst {\f1 if }{\field{\*\fldinst {\f1 seq chapt \\c}}{\fldrslt {\f1\lang1024 0}}}{\f1 <> 0 "}{\field{\*\fldinst {\f1 info subject}}{\fldrslt }}{\f1 }{\field{\*\fldinst {\f1 seq chapt \\c}}{\fldrslt {\f1\lang1024 0}}}{\f1 -" ""}}}{\field\flddirty{\*\fldinst {\f1 PAGE}}{\fldrslt {\f1 i}}}{\f1 \tab Microsoft Confidential}{\v\f1 (printed }{\field{\*\fldinst {\v\f1 date \\@ "M/d/yy h:mm AM/PM"}}{\fldrslt {\v\f1\lang1024 1/3/97 2:20 PM}}}{\v\f1 )}{\f1
  435. \par }{
  436. \par }}\pard\plain \s33\qj\sb240\sa58\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \outlinelevel0\adjustright \b\f4\fs20\cgrid {\field{\*\fldinst {\f0 INDEX \\h "A"}}{\fldrslt {\b0\f0\lang1024 C
  437. \par }\pard\plain \s31\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {\lang1024 chain, 2
  438. \par }\pard\plain \s33\qj\sb240\sa58\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \outlinelevel0\adjustright \b\f4\fs20\cgrid {\b0\f0\lang1024 D
  439. \par }\pard\plain \s31\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {\b\lang1024 DECOLOR}{\lang1024 , 3
  440. \par }\pard \s31\nowidctlpar\widctlpar\outlinelevel0\adjustright {\lang1024 DFPROPTYPE, 1
  441. \par }\pard \s31\nowidctlpar\widctlpar\adjustright {\b\lang1024 DFSIGNATURE}{\lang1024 , 1
  442. \par }{\b\lang1024 DIF}{\lang1024 , 3
  443. \par }{\b\lang1024 DIFSECT}{\lang1024 , 1
  444. \par }{\b\lang1024 Directory}{\lang1024 , 3
  445. \par }\pard \s31\nowidctlpar\widctlpar\outlinelevel0\adjustright {\b\lang1024 Double-Indirect Fat}{\lang1024 , 3
  446. \par }\pard\plain \s33\qj\sb240\sa58\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \outlinelevel0\adjustright \b\f4\fs20\cgrid {\b0\f0\lang1024 E
  447. \par }\pard\plain \s31\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {\b\lang1024 ENDOFCHAIN}{\lang1024 , 1
  448. \par }\pard\plain \s33\qj\sb240\sa58\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \outlinelevel0\adjustright \b\f4\fs20\cgrid {\b0\f0\lang1024 F
  449. \par }\pard\plain \s31\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {\lang1024 Fat, 2
  450. \par }{\b\lang1024 FATSECT}{\lang1024 , 1
  451. \par }{\b\lang1024 FREESECT}{\lang1024 , 1
  452. \par }{\b\lang1024 FSINDEX}{\lang1024 , 1
  453. \par }{\b\lang1024 FSOFFSET}{\lang1024 , 1
  454. \par }\pard\plain \s33\qj\sb240\sa58\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \adjustright \b\f4\fs20\cgrid {\b0\f0\lang1024 M
  455. \par }\pard\plain \s31\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {\b\lang1024 MiniFat}{\lang1024 , 2
  456. \par }{\b\lang1024 Ministream}{\lang1024 , 2
  457. \par }\pard\plain \s33\qj\sb240\sa58\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \adjustright \b\f4\fs20\cgrid {\b0\f0\lang1024 O
  458. \par }\pard\plain \s31\nowidctlpar\widctlpar\outlinelevel0\adjustright \f4\fs20\cgrid {\b\lang1024 OFFSET}{\lang1024 , 1
  459. \par }\pard\plain \s33\qj\sb240\sa58\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \adjustright \b\f4\fs20\cgrid {\b0\f0\lang1024 R
  460. \par }\pard\plain \s31\nowidctlpar\widctlpar\outlinelevel0\adjustright \f4\fs20\cgrid {\b\lang1024 Root Directory Entry}{\lang1024 , 4
  461. \par }\pard\plain \s33\qj\sb240\sa58\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \outlinelevel0\adjustright \b\f4\fs20\cgrid {\b0\f0\lang1024 S
  462. \par }\pard\plain \s31\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {\lang1024 SECT, 1
  463. \par sector, 1
  464. \par SID, 1, 4
  465. \par }{\b\lang1024 STGTY}{\lang1024 , 3
  466. \par }\pard\plain \s33\qj\sb240\sa58\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \outlinelevel0\adjustright \b\f4\fs20\cgrid {\b0\f0\lang1024 V
  467. \par }\pard\plain \s31\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {\lang1024 virtual stream, 1
  468. \par }}}\pard\plain \s31\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {\f0
  469. \par }}