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.
469 lines
100 KiB
469 lines
100 KiB
{\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 020b0604030504040204}Verdana;}{\f55\fnil\fcharset0\fprq1{\*\panose 00000000000000000000}Small Fonts;}{\f56\froman\fcharset238\fprq2 Times New Roman CE;}{\f57\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f59\froman\fcharset161\fprq2 Times New Roman Greek;}{\f60\froman\fcharset162\fprq2 Times New Roman Tur;}{\f61\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f68\fmodern\fcharset238\fprq1 Courier New CE;}{\f69\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f71\fmodern\fcharset161\fprq1 Courier New Greek;}{\f72\fmodern\fcharset162\fprq1 Courier New Tur;}{\f73\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f146\fswiss\fcharset238\fprq2 Tahoma CE;}{\f147\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f149\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f150\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f151\fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f200\fmodern\fcharset238\fprq1 Lucida Console CE;}{\f201\fmodern\fcharset204\fprq1 Lucida Console Cyr;}{\f203\fmodern\fcharset161\fprq1 Lucida Console Greek;}{\f204\fmodern\fcharset162\fprq1 Lucida Console Tur;}{\f206\fswiss\fcharset238\fprq2 Lucida Sans Unicode CE;}{\f207\fswiss\fcharset204\fprq2 Lucida Sans Unicode Cyr;}{\f209\fswiss\fcharset161\fprq2 Lucida Sans Unicode Greek;}{\f210\fswiss\fcharset162\fprq2 Lucida Sans Unicode Tur;}{\f212\fswiss\fcharset238\fprq2 Arial Narrow CE;}{\f213\fswiss\fcharset204\fprq2 Arial Narrow Cyr;}{\f215\fswiss\fcharset161\fprq2 Arial Narrow Greek;}{\f216\fswiss\fcharset162\fprq2 Arial Narrow Tur;}{\f217\fswiss\fcharset186\fprq2 Arial Narrow Baltic;}{\f218\fswiss\fcharset238\fprq2 Arial Black CE;}{\f219\fswiss\fcharset204\fprq2 Arial Black Cyr;}{\f221\fswiss\fcharset161\fprq2 Arial Black Greek;}{\f222\fswiss\fcharset162\fprq2 Arial Black Tur;}{\f223\fswiss\fcharset186\fprq2 Arial Black Baltic;}{\f236\froman\fcharset238\fprq2 Bookman Old Style CE;}{\f237\froman\fcharset204\fprq2 Bookman Old Style Cyr;}{\f239\froman\fcharset161\fprq2 Bookman Old Style Greek;}{\f240\froman\fcharset162\fprq2 Bookman Old Style Tur;}{\f241\froman\fcharset186\fprq2 Bookman Old Style Baltic;}{\f308\froman\fcharset238\fprq2 Garamond CE;}{\f309\froman\fcharset204\fprq2 Garamond Cyr;}{\f311\froman\fcharset161\fprq2 Garamond Greek;}{\f312\froman\fcharset162\fprq2 Garamond Tur;}{\f313\froman\fcharset186\fprq2 Garamond Baltic;}{\f314\fswiss\fcharset238\fprq2 Impact CE;}{\f315\fswiss\fcharset204\fprq2 Impact Cyr;}{\f317\fswiss\fcharset161\fprq2 Impact Greek;}{\f318\fswiss\fcharset162\fprq2 Impact Tur;}{\f319\fswiss\fcharset186\fprq2 Impact Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \snext0 Normal;}{\s1\qj\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\outlinelevel0\adjustright \b\fs28\cf2\cgrid \sbasedon44 \snext44 heading 1;}{\s2\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\ilvl1\outlinelevel1\adjustright \fs28\cf2\cgrid \sbasedon1 \snext44 heading 2;}{\s3\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl2\outlinelevel2\adjustright \cf2\cgrid \sbasedon2 \snext44 heading 3;}{\s4\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl3\outlinelevel3\adjustright \b\fs20\cf2\cgrid \sbasedon3 \snext44 heading 4;}{\s5\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl4\outlinelevel4\adjustright \fs20\cf2\cgrid \sbasedon4 \snext44 heading 5;}{\s6\qj\ri3600\sb240\sa86\keep\keepn\nowidctlpar\widctlpar\ls1\ilvl5\outlinelevel5\adjustright \i\fs20\cf2\cgrid \sbasedon5 \snext44 heading 6;}{\s7\qj\ri720\sb240\sa86\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \ls1\ilvl6\outlinelevel6\adjustright \f4\fs20\cgrid \sbasedon47 \snext47 heading 7;}{\s8\qj\ri720\sb240\sa86\keepn\nowidctlpar\widctlpar\ls1\ilvl7\outlinelevel7\adjustright \f4\fs20\cgrid \sbasedon7 \snext44 heading 8;}{\s9\qj\ri720\sb240\sa86\keepn\nowidctlpar\widctlpar\jclisttab\tx360\ls1\ilvl8\outlinelevel8\adjustright \i\f4\fs20\cgrid \sbasedon8 \snext38 heading 9;}{\*\cs10 \additive Default Paragraph Font;}{\*\cs15 \additive \b\f5\fs16\lang1033 \sbasedon10 annotation reference;}{\s16\fi-630\li630\nowidctlpar\widctlpar\adjustright \f5\fs16\cgrid \snext16 annotation text;}{\s17\qj\li5040\ri720\nowidctlpar\widctlpar\tldot\tx8280\tqr\tx8640\adjustright \f4\fs20\cgrid \sbasedon24 \snext17 toc 8;}{\s18\qj\li4320\ri720\nowidctlpar\widctlpar\tldot\tx8280\tqr\tx8640\adjustright \f4\fs20\cgrid \sbasedon24 \snext18 toc 7;}{\s19\qj\li3600\ri720\nowidctlpar\widctlpar\tldot\tx8280\tqr\tx8640\adjustright \f4\fs20\cgrid \sbasedon24 \snext19 toc 6;}{\s20\qj\li2880\ri720\nowidctlpar\widctlpar\tldot\tx8280\tqr\tx8640\adjustright \f4\fs20\cgrid \sbasedon24 \snext20 toc 5;}{\s21\qj\li2160\ri720\nowidctlpar\widctlpar\tldot\tx8280\tqr\tx8640\adjustright \f4\fs20\cgrid \sbasedon24 \snext21 toc 4;}{\s22\qj\li1440\ri720\nowidctlpar\widctlpar\tldot\tx8280\tqr\tx8640\adjustright \f4\fs20\cgrid \sbasedon24 \snext22 toc 3;}{\s23\qj\li720\ri720\nowidctlpar\widctlpar\tldot\tx8280\tqr\tx8640\adjustright \f4\fs20\cgrid \sbasedon24 \snext23 toc 2;}{\s24\qj\ri720\nowidctlpar\widctlpar\tldot\tx8280\tqr\tx8640\adjustright \f4\fs20\cgrid \sbasedon44 \snext24 toc 1;}{\s25\li2160\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon31 \snext25 index 7;}{\s26\li1800\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon31 \snext26 index 6;}{\s27\li1440\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon31 \snext27 index 5;}{\s28\li1080\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon31 \snext28 index 4;}{\s29\li720\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon31 \snext29 index 3;}{\s30\li360\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon31 \snext30 index 2;}{\s31\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon0 \snext31 index 1;}{\*\cs32 \additive \sbasedon10 line number;}{\s33\qj\sb240\sa58\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \adjustright \b\f4\fs20\cgrid \sbasedon44 \snext31 index heading;}{\s34\keepn\nowidctlpar\widctlpar\tqc\tx4320\tqr\tx8640\adjustright \f5\fs16\cgrid \sbasedon35 \snext35 footer;}{\s35\keepn\nowidctlpar\widctlpar\tqc\tx4320\tqr\tx8640\adjustright \f5\fs16\cgrid \snext35 header;}{\*\cs36 \additive \fs16\up6 \sbasedon10 footnote reference;}{\s37\qj\fi-101\li86\nowidctlpar\widctlpar\adjustright \f4\fs16\cgrid \sbasedon44 \snext37 footnote text;}{\s38\li720\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon0 \snext38 Normal Indent;}{\*\cs39 \additive \f1\fs16\lang1024 \sbasedon10 CodeText;}{\*\cs40 \additive \sbasedon10 page number;}{\s41\nowidctlpar\widctlpar\adjustright \i\fs20\cgrid \sbasedon0 \snext43 Revision Date;}{\s42\li1440\ri1584\sa60\nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \scaps\f1\fs16\cf6\cgrid \sbasedon0 \snext42 Legal Info;}{\s43\qj\sb720\sa480\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon44 \snext1 Abstract;}{\s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon0 \snext44 Body;}{\s45\qj\li1440\ri720\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon49 \snext45 Body Sub Sub Sub;}{\s46\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw30\brsp60 \brdrbtw\brdrs\brdrw30\brsp60 \adjustright \b\fs36\cf2\cgrid \sbasedon0 \snext43 Title;}{\s47\qj\li720\ri720\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon44 \snext47 Body Sub;}{\s48\qj\fi-360\li1080\ri720\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon44 \snext48 Body Sub-Hang;}{\s49\qj\li1080\ri720\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon47 \snext49 Body Sub Sub;}{\s50\li288\sa58\sl202\slmult0\keep\nowidctlpar\widctlpar\adjustright \f5\fs18\cgrid \sbasedon44 \snext44 Annotation;}{\s51\sa60\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15 \brdrbtw\brdrs\brdrw15 \adjustright \f4\fs18\cgrid \sbasedon44 \snext51 Table Entry;}{\s52\sa60\keep\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15 \brdrbtw\brdrs\brdrw15 \adjustright \b\f4\fs18\cgrid \sbasedon44 \snext52 Table Label;}{\s53\sb120\sa58\keepn\nowidctlpar\widctlpar\adjustright \b\f4\fs18\cgrid \sbasedon44 \snext53 Table Head;}{\s54\li288\sa58\sl202\slmult0\keep\nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \f5\fs18\cgrid \sbasedon50 \snext44 Annotation Box;}{\s55\nowidctlpar\widctlpar\adjustright \i\f4\fs18\cgrid \sbasedon0 \snext43 Byline;}{\s56\qj\li720\ri720\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \i\f4\fs20\cgrid \sbasedon47 \snext44 Illustration;}{\s57\sa60\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15 \brdrbtw\brdrs\brdrw15 \tx360\tx720\tx1080\tx1440\tx1800\tx2160\adjustright \f5\fs12\cgrid \sbasedon51 \snext57 Table Entry - Small;}{\s58\sb120\sa58\keepn\nowidctlpar\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\adjustright \b\f5\fs12\cgrid \sbasedon53 \snext58 Table Head - Small;}{\s59\qc\sb240\sa240\sl216\slmult0\keepn\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon44 \snext68 Figure;}{\s60\sa60\keep\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15 \brdrbtw\brdrs\brdrw15 \adjustright \b\f5\fs12\cgrid \sbasedon52 \snext60 Table Label - Small;}{\s61\sb60\sa120\keep\nowidctlpar\widctlpar\adjustright \f6\fs20\cgrid \sbasedon0 \snext61 Pseudocode;}{\s62\li2160\sa120\nowidctlpar\widctlpar\brdrt\brdrs\brdrw30\brsp20 \brdrbtw\brdrs\brdrw30\brsp20 \phmrg\posyt\adjustright \b\f5\fs48\cgrid \sbasedon63 \snext63 Title Large;}{\s63\li2160\sa120\nowidctlpar\widctlpar\phmrg\posyt\adjustright \b\f5\fs28\cgrid \sbasedon0 \snext64 Title Medium;}{\s64\li2160\sa120\nowidctlpar\widctlpar\phmrg\posyt\adjustright \i\f5\fs20\cgrid \sbasedon0 \snext64 Title Small;}{\s65\li2160\sa120\nowidctlpar\widctlpar\phmrg\posyt\adjustright \v\f5\fs12\cgrid \sbasedon64 \snext65 Time Stamp;}{\s66\nowidctlpar\widctlpar\absw1800\dxfrtext187\dfrmtxtx187\dfrmtxty187\adjustright \f4\fs20\cgrid \sbasedon0 \snext62 Logo;}{\s67\qj\fi-360\li1440\ri720\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon48 \snext67 Body Sub Sub-Hang;}{\s68\qj\li1440\ri720\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs18\cgrid \sbasedon47 \snext44 caption;}{\s69\sa60\keep\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15 \brdrbtw\brdrs\brdrw15 \adjustright \b\f4\fs18\cgrid \sbasedon44 \snext69 Table Lable;}{\s70\qj\fi-180\li900\ri720\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon47 \snext70 Term Definition;}{\s71\qc\sb240\sa240\sl216\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid \sbasedon44 \snext71 Picture Paragraph;}{\s72\sa60\keep\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15 \brdrbtw\brdrs\brdrw15 \adjustright \b\f5\fs12\cgrid \sbasedon69 \snext72 Table Lable -Small;}{\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 \snext73 Code;}{\s74\fi-1440\li1800\sb58\nowidctlpar\widctlpar\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\adjustright \f4\fs20\cgrid \sbasedon44 \snext74 Method Clause;}{\s75\fi-720\li360\ri-720\sb360\keep\nowidctlpar\widctlpar\box\brdrsh\brdrs\brdrw15\brsp20 \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 \sbasedon73 \snext74 Method Heading;}{\s76\qj\li720\ri720\sb240\sa240\sl216\slmult0\nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \b\f5\fs16\cgrid \sbasedon47 \snext76 Annotation Public;}{\s77\nowidctlpar\widctlpar\adjustright \cbpat9 \f15\fs20\cgrid \sbasedon0 \snext77 Document Map;}}{\*\listtable{\list\listtemplateid-1{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelold\levelspace144\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\s1}{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelold\levelspace144\levelindent0{\leveltext\'03\'00.\'01;}{\levelnumbers\'01\'03;}\s2}{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelold\levelspace144\levelindent0{\leveltext\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\s3}{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelold\levelspace144\levelindent0{\leveltext\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\s4}{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelold\levelspace144\levelindent0{\leveltext\'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}\s5}{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelold\levelspace144\levelindent0{\leveltext
|
|
\'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
|
|
\'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
|
|
\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}{
|
|
\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.}}}{
|
|
\par }\pard\plain \nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {
|
|
\par
|
|
\par
|
|
\par
|
|
\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
|
|
\par 2. Sector Types\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782783 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782783 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
|
|
\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
|
|
\par 2.2 Fat Sectors\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782785 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782785 }}{\fldrslt {\lang1024 2}}}}}{\lang1024
|
|
\par 2.3 MiniFat Sectors\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782786 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782786 }}{\fldrslt {\lang1024 2}}}}}{\lang1024
|
|
\par 2.4 DIF Sectors\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782787 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782787 }}{\fldrslt {\lang1024 3}}}}}{\lang1024
|
|
\par 2.5 Directory Sectors\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782788 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782788 }}{\fldrslt {\lang1024 3}}}}}{\lang1024
|
|
\par 2.6 Storage Sectors\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782789 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782789 }}{\fldrslt {\lang1024 5}}}}}{\lang1024
|
|
\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
|
|
\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
|
|
\par 3.2 SECT 0: First (Only) FAT Sector\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782792 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782792 }}{\fldrslt {\lang1024 5}}}}}{\lang1024
|
|
\par 3.3 SECT 1: First (Only) Directory Sector\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782793 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782793 }}{\fldrslt {\lang1024 5}}}}}{\lang1024
|
|
\par 3.4 SECT 3: MiniFat Sector\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc351782794 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc351782794 }}{\fldrslt {\lang1024 7}}}}}{\lang1024
|
|
\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
|
|
\par }\pard\plain \nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid }}\pard\plain \nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {
|
|
\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.
|
|
\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.}{
|
|
\par }\pard \s34\keepn\nowidctlpar\widctlpar\tqc\tx4320\tqr\tx8640\adjustright {
|
|
\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 {
|
|
\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}
|
|
\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.
|
|
\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.
|
|
\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.
|
|
\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}{.
|
|
\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}
|
|
\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;
|
|
\par \tab }{\cs39\revised\lang1024\revauth2\revdttm637768397 [2 bytes]\tab \tab }{\cs39\lang1024 typedef unsigned short USHORT;
|
|
\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}}}{;
|
|
\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}}}{;
|
|
\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}}}{;
|
|
\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}}}{;
|
|
\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
|
|
\par \tab [1 byte]\tab \tab typedef unsigned char }{\revised\revauth2\revdttm637768398 BYTE;
|
|
\par \tab [2 bytes]\tab \tab typedef unsigned short WORD;
|
|
\par \tab [4 bytes]\tab \tab typedef unsigned long DWORD;
|
|
\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
|
|
\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 ;
|
|
\par \tab [16 bytes]\tab \tab typedef CLSID GUID;
|
|
\par
|
|
\par }{\cf6\revised\revauth2\revdttm637768399 \tab [8 bytes]\tab \tab typedef struct tagFILETIME}{\cf6\revised\revauth2\revdttm637768400 }{\cf6\revised\revauth2\revdttm637768399 \{
|
|
\par \tab \tab DWORD dwLowDateTime;
|
|
\par \tab \tab DWORD dwHighDateTime;
|
|
\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
|
|
\par }{
|
|
\par
|
|
\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;
|
|
\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;
|
|
\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;
|
|
\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;
|
|
\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}
|
|
\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]}{
|
|
\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,
|
|
\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)
|
|
\par }{\tab \tab \tab \tab \tab \tab \tab \tab \tab }{\i\fs14 // which are also supported by the reference implementation}{
|
|
\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)}{
|
|
\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}{
|
|
\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}{
|
|
\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}{
|
|
\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)}{
|
|
\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)}{
|
|
\par \tab \tab USHORT\tab \tab _usReserved;\tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768403 [022H,02] }{\i\fs14 reserved, must be zero}{
|
|
\par \tab \tab ULONG\tab \tab _ulReserved1;\tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768403 [024H,04] }{\i\fs14 reserved, must be zero}{
|
|
\par \tab \tab ULONG\tab \tab _ulReserved2;\tab \tab }{\i\fs14 // }{\i\fs14\revised\revauth2\revdttm637768403 [028H,04] }{\i\fs14 reserved, must be zero}{
|
|
\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}{
|
|
\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}{
|
|
\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}{
|
|
\par \tab \tab \tab \tab \tab \tab \tab \tab \tab }{\i\fs14 // does not support transactioning}{
|
|
\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}{
|
|
\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}{
|
|
\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}{
|
|
\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}{
|
|
\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}{
|
|
\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}{
|
|
\par \tab \tab \};
|
|
\par }\pard\plain \s44\qj\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright \f4\fs20\cgrid {\f0
|
|
\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.
|
|
\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}
|
|
\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.
|
|
\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.
|
|
\par }\pard \s44\qc\sa60\sl220\slmult0\nowidctlpar\widctlpar\adjustright {\f0 {\pict\wmetafile8\picw9604\pich2963\picwgoal5445\pichgoal1680 \bin3776 [ / & ÿÿÿÿ ø˜œ 8
|
|
|