/* * (c) Copyright Ascensio System SIA 2010-2017 * * This program is a free software product. You can redistribute it and/or * modify it under the terms of the GNU Affero General Public License (AGPL) * version 3 as published by the Free Software Foundation. In accordance with * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect * that Ascensio System SIA expressly excludes the warranty of non-infringement * of any third-party rights. * * This program is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html * * You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, * EU, LV-1021. * * The interactive user interfaces in modified source and object code versions * of the Program must display Appropriate Legal Notices, as required under * Section 5 of the GNU AGPL version 3. * * Pursuant to Section 7(b) of the License you must retain the original Product * logo when distributing the program. Pursuant to Section 7(e) we decline to * grant you any rights under trademark law for use of our trademarks. * * All the Product's GUI elements, including illustrations and icon sets, as * well as technical writing content are licensed under the terms of the * Creative Commons Attribution-ShareAlike 4.0 International. See the License * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode * */ #pragma once #include "VirtualStreamReader.h" #include "../../ASCOfficeXlsFile2/source/XlsFormat/Crypt/Decryptor.h" using namespace DocFormatUtils; namespace DocFileFormat { typedef enum FibVersion { Fib1993 = 0x0065, // Word 6.0 Fib1995 = 0x0068, // Word 7.0 (95) Fib1996 = 0x0069, // Word 8.0 (97) Fib1997 = 0x00C1, Fib2000 = 0x00D9, Fib2002 = 0x0101, Fib2003 = 0x010C, Fib2007 = 0x0112 } FibVersion; typedef struct FibBase { FibBase() : wIdent(0), nFib(Fib1997), lid(0), pnNext(0), fDot(false), fGlsy(false), fComplex(false), fHasPic(false), cQuickSaves(0), fEncrypted(false), fWhichTblStm(false), fReadOnlyRecommended(false), fWriteReservation(false), fExtChar(false), fLoadOverwrite(false), fFarEast(false), fObfuscation(false), nFibBack(0), lKey(0), envr(0), fMac(false), fEmptySpecial(false), fLoadOverridePage(false), fFutureSavedUndo(false), fWord97Saved(false), fcMin(0), fcMac(0) {} //------------------------------------------------------------ WORD wIdent; FibVersion nFib; WORD lid; WORD pnNext; bool fDot; bool fGlsy; bool fComplex; bool fHasPic; WORD cQuickSaves; bool fEncrypted; bool fWhichTblStm; bool fReadOnlyRecommended; bool fWriteReservation; bool fExtChar; bool fLoadOverwrite; bool fFarEast; bool fObfuscation; WORD nFibBack; int lKey; unsigned char envr; bool fMac; bool fEmptySpecial; bool fLoadOverridePage; bool fFutureSavedUndo; bool fWord97Saved; int fcMin; int fcMac; } FibBase; typedef struct RgW97 { WORD lidFE; } RgW97; typedef struct RgLw97 { RgLw97() : cbMac(0), ccpText(0), ccpFtn(0), ccpHdr(0), ccpAtn(0), ccpEdn(0), ccpTxbx(0), ccpHdrTxbx(0) {} //---------------------- int cbMac; int ccpText; int ccpFtn; int ccpHdr; int ccpAtn; int ccpEdn; int ccpTxbx; int ccpHdrTxbx; } RgLw97; typedef struct FibWord97 { FibWord97() : fcStshfOrig (0), lcbStshfOrig (0), fcStshf (0), lcbStshf (0), fcPlcffndRef (0), lcbPlcffndRef (0), fcPlcffndTxt (0), lcbPlcffndTxt (0), fcPlcfandRef (0), lcbPlcfandRef (0), fcPlcfandTxt (0), lcbPlcfandTxt (0), fcPlcfSed (0), lcbPlcfSed (0), fcPlcPad (0), lcbPlcPad (0), fcPlcfPhe (0), lcbPlcfPhe (0), fcSttbfGlsy (0), lcbSttbfGlsy (0), fcPlcfGlsy (0), lcbPlcfGlsy (0), fcPlcfHdd (0), lcbPlcfHdd (0), fcPlcfBteChpx (0), lcbPlcfBteChpx (0), fcPlcfBtePapx (0), lcbPlcfBtePapx (0), fcPlcfSea (0), lcbPlcfSea (0), fcSttbfFfn (0), lcbSttbfFfn (0), fcPlcfFldMom (0), lcbPlcfFldMom (0), fcPlcfFldHdr (0), lcbPlcfFldHdr (0), fcPlcfFldFtn (0), lcbPlcfFldFtn (0), fcPlcfFldAtn (0), lcbPlcfFldAtn (0), fcPlcfFldMcr (0), lcbPlcfFldMcr (0), fcSttbfBkmk (0), lcbSttbfBkmk (0), fcPlcfBkf (0), lcbPlcfBkf (0), fcPlcfBkl (0), lcbPlcfBkl (0), fcCmds (0), lcbCmds (0), fcSttbfMcr (0), lcbSttbfMcr (0), fcPrDrvr (0), lcbPrDrvr (0), fcPrEnvPort (0), lcbPrEnvPort (0), fcPrEnvLand (0), lcbPrEnvLand (0), fcWss (0), lcbWss (0), fcDop (0), lcbDop (0), fcSttbfAssoc (0), lcbSttbfAssoc (0), fcClx (0), lcbClx (0), fcPlcfPgdFtn (0), lcbPlcfPgdFtn (0), fcAutosaveSource (0), lcbAutosaveSource (0), fcGrpXstAtnOwners (0), lcbGrpXstAtnOwners (0), fcSttbfAtnBkmk (0), lcbSttbfAtnBkmk (0), fcPlcSpaMom (0), lcbPlcSpaMom (0), fcPlcSpaHdr (0), lcbPlcSpaHdr (0), fcPlcfAtnBkf (0), lcbPlcfAtnBkf (0), fcPlcfAtnBkl (0), lcbPlcfAtnBkl (0), fcPms (0), lcbPms (0), fcFormFldSttbs (0), lcbFormFldSttbs (0), fcPlcfendRef (0), lcbPlcfendRef (0), fcPlcfendTxt (0), lcbPlcfendTxt (0), fcPlcfFldEdn (0), lcbPlcfFldEdn (0), fcDggInfo (0), lcbDggInfo (0), fcSttbfRMark (0), lcbSttbfRMark (0), fcSttbfCaption (0), lcbSttbfCaption (0), fcSttbfAutoCaption (0), lcbSttbfAutoCaption (0), fcPlcfWkb (0), lcbPlcfWkb (0), fcPlcfSpl (0), lcbPlcfSpl (0), fcPlcftxbxTxt (0), lcbPlcftxbxTxt (0), fcPlcfFldTxbx (0), lcbPlcfFldTxbx (0), fcPlcfHdrtxbxTxt (0), lcbPlcfHdrtxbxTxt (0), fcPlcffldHdrTxbx (0), lcbPlcffldHdrTxbx (0), fcStwUser (0), lcbStwUser (0), fcSttbTtmbd (0), lcbSttbTtmbd (0), fcCookieData (0), lcbCookieData (0), fcPgdMotherOldOld (0), lcbPgdMotherOldOld (0), fcBkdMotherOldOld (0), lcbBkdMotherOldOld (0), fcPgdFtnOldOld (0), lcbPgdFtnOldOld (0),fcBkdFtnOldOld (0), lcbBkdFtnOldOld (0), fcPgdEdnOldOld (0), lcbPgdEdnOldOld (0), fcBkdEdnOldOld (0), lcbBkdEdnOldOld (0),fcSttbfIntlFld (0), lcbSttbfIntlFld (0), fcRouteSlip (0), lcbRouteSlip (0), fcSttbSavedBy (0), lcbSttbSavedBy (0), fcSttbFnm (0), lcbSttbFnm (0), fcPlfLst (0), lcbPlfLst (0), fcPlfLfo (0), lcbPlfLfo (0), fcPlcfTxbxBkd (0), lcbPlcfTxbxBkd (0), fcPlcfTxbxHdrBkd (0), lcbPlcfTxbxHdrBkd (0), fcDocUndoWord9 (0), lcbDocUndoWord9 (0),fcRgbUse (0), lcbRgbUse (0), fcUsp (0), lcbUsp (0), fcUskf (0), lcbUskf (0), fcPlcupcRgbUse (0), lcbPlcupcRgbUse (0), fcPlcupcUsp (0), lcbPlcupcUsp (0), fcSttbGlsyStyle (0), lcbSttbGlsyStyle (0), fcPlgosl (0), lcbPlgosl (0), fcPlcocx (0), lcbPlcocx (0), fcPlcfBteLvc (0), lcbPlcfBteLvc (0), dwLowDateTime (0), dwHighDateTime (0), fcPlcfLvcPre10 (0), lcbPlcfLvcPre10 (0), fcPlcfAsumy (0), lcbPlcfAsumy (0), fcPlcfGram (0), lcbPlcfGram (0), fcSttbListNames (0), lcbSttbListNames (0), fcSttbfUssr (0), lcbSttbfUssr (0) {} //----------------------------------------------------------------- unsigned int fcStshfOrig; unsigned int lcbStshfOrig; unsigned int fcStshf; unsigned int lcbStshf; unsigned int fcPlcffndRef; unsigned int lcbPlcffndRef; unsigned int fcPlcffndTxt; unsigned int lcbPlcffndTxt; unsigned int fcPlcfandRef; unsigned int lcbPlcfandRef; unsigned int fcPlcfandTxt; unsigned int lcbPlcfandTxt; unsigned int fcPlcfSed; unsigned int lcbPlcfSed; unsigned int fcPlcPad; unsigned int lcbPlcPad; unsigned int fcPlcfPhe; unsigned int lcbPlcfPhe; unsigned int fcSttbfGlsy; unsigned int lcbSttbfGlsy; unsigned int fcPlcfGlsy; unsigned int lcbPlcfGlsy; unsigned int fcPlcfHdd; unsigned int lcbPlcfHdd; unsigned int fcPlcfBteChpx; unsigned int lcbPlcfBteChpx; unsigned int fcPlcfBtePapx; unsigned int lcbPlcfBtePapx; unsigned int fcPlcfSea; unsigned int lcbPlcfSea; unsigned int fcSttbfFfn; unsigned int lcbSttbfFfn; unsigned int fcPlcfFldMom; unsigned int lcbPlcfFldMom; unsigned int fcPlcfFldHdr; unsigned int lcbPlcfFldHdr; unsigned int fcPlcfFldFtn; unsigned int lcbPlcfFldFtn; unsigned int fcPlcfFldAtn; unsigned int lcbPlcfFldAtn; unsigned int fcPlcfFldMcr; unsigned int lcbPlcfFldMcr; unsigned int fcSttbfBkmk; unsigned int lcbSttbfBkmk; unsigned int fcPlcfBkf; unsigned int lcbPlcfBkf; unsigned int fcPlcfBkl; unsigned int lcbPlcfBkl; unsigned int fcCmds; unsigned int lcbCmds; unsigned int fcSttbfMcr; unsigned int lcbSttbfMcr; unsigned int fcPrDrvr; unsigned int lcbPrDrvr; unsigned int fcPrEnvPort; unsigned int lcbPrEnvPort; unsigned int fcPrEnvLand; unsigned int lcbPrEnvLand; unsigned int fcWss; unsigned int lcbWss; unsigned int fcDop; unsigned int lcbDop; unsigned int fcSttbfAssoc; unsigned int lcbSttbfAssoc; unsigned int fcClx; unsigned int lcbClx; unsigned int fcPlcfPgdFtn; unsigned int lcbPlcfPgdFtn; unsigned int fcAutosaveSource; unsigned int lcbAutosaveSource; unsigned int fcGrpXstAtnOwners; unsigned int lcbGrpXstAtnOwners; unsigned int fcSttbfAtnBkmk; unsigned int lcbSttbfAtnBkmk; unsigned int fcPlcSpaMom; unsigned int lcbPlcSpaMom; unsigned int fcPlcSpaHdr; unsigned int lcbPlcSpaHdr; unsigned int fcPlcfAtnBkf; unsigned int lcbPlcfAtnBkf; unsigned int fcPlcfAtnBkl; unsigned int lcbPlcfAtnBkl; unsigned int fcPms; unsigned int lcbPms; unsigned int fcFormFldSttbs; unsigned int lcbFormFldSttbs; unsigned int fcPlcfendRef; unsigned int lcbPlcfendRef; unsigned int fcPlcfendTxt; unsigned int lcbPlcfendTxt; unsigned int fcPlcfFldEdn; unsigned int lcbPlcfFldEdn; unsigned int fcDggInfo; unsigned int lcbDggInfo; unsigned int fcSttbfRMark; unsigned int lcbSttbfRMark; unsigned int fcSttbfCaption; unsigned int lcbSttbfCaption; unsigned int fcSttbfAutoCaption; unsigned int lcbSttbfAutoCaption; unsigned int fcPlcfWkb; unsigned int lcbPlcfWkb; unsigned int fcPlcfSpl; unsigned int lcbPlcfSpl; unsigned int fcPlcftxbxTxt; unsigned int lcbPlcftxbxTxt; unsigned int fcPlcfFldTxbx; unsigned int lcbPlcfFldTxbx; unsigned int fcPlcfHdrtxbxTxt; unsigned int lcbPlcfHdrtxbxTxt; unsigned int fcPlcffldHdrTxbx; unsigned int lcbPlcffldHdrTxbx; unsigned int fcStwUser; unsigned int lcbStwUser; unsigned int fcSttbTtmbd; unsigned int lcbSttbTtmbd; unsigned int fcCookieData; unsigned int lcbCookieData; unsigned int fcPgdMotherOldOld; unsigned int lcbPgdMotherOldOld; unsigned int fcBkdMotherOldOld; unsigned int lcbBkdMotherOldOld; unsigned int fcPgdFtnOldOld; unsigned int lcbPgdFtnOldOld; unsigned int fcBkdFtnOldOld; unsigned int lcbBkdFtnOldOld; unsigned int fcPgdEdnOldOld; unsigned int lcbPgdEdnOldOld; unsigned int fcBkdEdnOldOld; unsigned int lcbBkdEdnOldOld; unsigned int fcSttbfIntlFld; unsigned int lcbSttbfIntlFld; unsigned int fcRouteSlip; unsigned int lcbRouteSlip; unsigned int fcSttbSavedBy; unsigned int lcbSttbSavedBy; unsigned int fcSttbFnm; unsigned int lcbSttbFnm; unsigned int fcPlfLst; unsigned int lcbPlfLst; unsigned int fcPlfLfo; unsigned int lcbPlfLfo; unsigned int fcPlcfTxbxBkd; unsigned int lcbPlcfTxbxBkd; unsigned int fcPlcfTxbxHdrBkd; unsigned int lcbPlcfTxbxHdrBkd; unsigned int fcDocUndoWord9; unsigned int lcbDocUndoWord9; unsigned int fcRgbUse; unsigned int lcbRgbUse; unsigned int fcUsp; unsigned int lcbUsp; unsigned int fcUskf; unsigned int lcbUskf; unsigned int fcPlcupcRgbUse; unsigned int lcbPlcupcRgbUse; unsigned int fcPlcupcUsp; unsigned int lcbPlcupcUsp; unsigned int fcSttbGlsyStyle; unsigned int lcbSttbGlsyStyle; unsigned int fcPlgosl; unsigned int lcbPlgosl; unsigned int fcPlcocx; unsigned int lcbPlcocx; unsigned int fcPlcfBteLvc; unsigned int lcbPlcfBteLvc; unsigned int dwLowDateTime; unsigned int dwHighDateTime; unsigned int fcPlcfLvcPre10; unsigned int lcbPlcfLvcPre10; unsigned int fcPlcfAsumy; unsigned int lcbPlcfAsumy; unsigned int fcPlcfGram; unsigned int lcbPlcfGram; unsigned int fcSttbListNames; unsigned int lcbSttbListNames; unsigned int fcSttbfUssr; unsigned int lcbSttbfUssr; } FibWord97; typedef struct FibWord2000 { unsigned int fcPlcfTch; unsigned int lcbPlcfTch; unsigned int fcRmdThreading; unsigned int lcbRmdThreading; unsigned int fcMid; unsigned int lcbMid; unsigned int fcSttbRgtplc; unsigned int lcbSttbRgtplc; unsigned int fcMsoEnvelope; unsigned int lcbMsoEnvelope; unsigned int fcPlcfLad; unsigned int lcbPlcfLad; unsigned int fcRgDofr; unsigned int lcbRgDofr; unsigned int fcPlcosl; unsigned int lcbPlcosl; unsigned int fcPlcfCookieOld; unsigned int lcbPlcfCookieOld; unsigned int fcPgdMotherOld; unsigned int lcbPgdMotherOld; unsigned int fcBkdMotherOld; unsigned int lcbBkdMotherOld; unsigned int fcPgdFtnOld; unsigned int lcbPgdFtnOld; unsigned int fcBkdFtnOld; unsigned int lcbBkdFtnOld; unsigned int fcPgdEdnOld; unsigned int lcbPgdEdnOld; unsigned int fcBkdEdnOld; unsigned int lcbBkdEdnOld; } FibWord2000; typedef struct FibWord2002 { unsigned int fcPlcfPgp; unsigned int lcbPlcfPgp; unsigned int fcPlcfuim; unsigned int lcbPlcfuim; unsigned int fcPlfguidUim; unsigned int lcbPlfguidUim; unsigned int fcAtrdExtra; unsigned int lcbAtrdExtra; unsigned int fcPlrsid; unsigned int lcbPlrsid; unsigned int fcSttbfBkmkFactoid; unsigned int lcbSttbfBkmkFactoid; unsigned int fcPlcfBkfFactoid; unsigned int lcbPlcfBkfFactoid; unsigned int fcPlcfcookie; unsigned int lcbPlcfcookie; unsigned int fcPlcfBklFactoid; unsigned int lcbPlcfBklFactoid; unsigned int fcFactoidData; unsigned int lcbFactoidData; unsigned int fcDocUndo; unsigned int lcbDocUndo; unsigned int fcSttbfBkmkFcc; unsigned int lcbSttbfBkmkFcc; unsigned int fcPlcfBkfFcc; unsigned int lcbPlcfBkfFcc; unsigned int fcPlcfBklFcc; unsigned int lcbPlcfBklFcc; unsigned int fcSttbfbkmkBPRepairs; unsigned int lcbSttbfbkmkBPRepairs; unsigned int fcPlcfbkfBPRepairs; unsigned int lcbPlcfbkfBPRepairs; unsigned int fcPlcfbklBPRepairs; unsigned int lcbPlcfbklBPRepairs; unsigned int fcPmsNew; unsigned int lcbPmsNew; unsigned int fcODSO; unsigned int lcbODSO; unsigned int fcPlcfpmiOldXP; unsigned int lcbPlcfpmiOldXP; unsigned int fcPlcfpmiNewXP; unsigned int lcbPlcfpmiNewXP; unsigned int fcPlcfpmiMixedXP; unsigned int lcbPlcfpmiMixedXP; unsigned int fcPlcffactoid; unsigned int lcbPlcffactoid; unsigned int fcPlcflvcOldXP; unsigned int lcbPlcflvcOldXP; unsigned int fcPlcflvcNewXP; unsigned int lcbPlcflvcNewXP; unsigned int fcPlcflvcMixedXP; unsigned int lcbPlcflvcMixedXP; } FibWord2002; typedef struct FibWord2003 { unsigned int fcHplxsdr; unsigned int lcbHplxsdr; unsigned int fcSttbfBkmkSdt; unsigned int lcbSttbfBkmkSdt; unsigned int fcPlcfBkfSdt; unsigned int lcbPlcfBkfSdt; unsigned int fcPlcfBklSdt; unsigned int lcbPlcfBklSdt; unsigned int fcCustomXForm; unsigned int lcbCustomXForm; unsigned int fcSttbfBkmkProt; unsigned int lcbSttbfBkmkProt; unsigned int fcPlcfBkfProt; unsigned int lcbPlcfBkfProt; unsigned int fcPlcfBklProt; unsigned int lcbPlcfBklProt; unsigned int fcSttbProtUser; unsigned int lcbSttbProtUser; unsigned int fcPlcfpmiOld; unsigned int lcbPlcfpmiOld; unsigned int fcPlcfpmiOldInline; unsigned int lcbPlcfpmiOldInline; unsigned int fcPlcfpmiNew; unsigned int lcbPlcfpmiNew; unsigned int fcPlcfpmiNewInline; unsigned int lcbPlcfpmiNewInline; unsigned int fcPlcflvcOld; unsigned int lcbPlcflvcOld; unsigned int fcPlcflvcOldInline; unsigned int lcbPlcflvcOldInline; unsigned int fcPlcflvcNew; unsigned int lcbPlcflvcNew; unsigned int fcPlcflvcNewInline; unsigned int lcbPlcflvcNewInline; unsigned int fcPgdMother; unsigned int lcbPgdMother; unsigned int fcBkdMother; unsigned int lcbBkdMother; unsigned int fcAfdMother; unsigned int lcbAfdMother; unsigned int fcPgdFtn; unsigned int lcbPgdFtn; unsigned int fcBkdFtn; unsigned int lcbBkdFtn; unsigned int fcAfdFtn; unsigned int lcbAfdFtn; unsigned int fcPgdEdn; unsigned int lcbPgdEdn; unsigned int fcBkdEdn; unsigned int lcbBkdEdn; unsigned int fcAfdEdn; unsigned int lcbAfdEdn; unsigned int fcAfd; unsigned int lcbAfd; } FibWord2003; typedef struct FibWord2007 { unsigned int fcPlcfmthd; unsigned int lcbPlcfmthd; unsigned int fcSttbfBkmkMoveFrom; unsigned int lcbSttbfBkmkMoveFrom; unsigned int fcPlcfBkfMoveFrom; unsigned int lcbPlcfBkfMoveFrom; unsigned int fcPlcfBklMoveFrom; unsigned int lcbPlcfBklMoveFrom; unsigned int fcSttbfBkmkMoveTo; unsigned int lcbSttbfBkmkMoveTo; unsigned int fcPlcfBkfMoveTo; unsigned int lcbPlcfBkfMoveTo; unsigned int fcPlcfBklMoveTo; unsigned int lcbPlcfBklMoveTo; unsigned int fcSttbfBkmkArto; unsigned int lcbSttbfBkmkArto; unsigned int fcPlcfBkfArto; unsigned int lcbPlcfBkfArto; unsigned int fcPlcfBklArto; unsigned int lcbPlcfBklArto; unsigned int fcArtoData; unsigned int lcbArtoData; unsigned int fcOssTheme; unsigned int lcbOssTheme; unsigned int fcColorSchemeMapping; unsigned int lcbColorSchemeMapping; } FibWord2007; struct FibNew { FibNew() : nFibNew(Fib1997), cQuickSavesNew(0) {} FibVersion nFibNew; WORD cQuickSavesNew; }; class FileInformationBlock { public: bool m_bOlderVersion; int m_CodePage; FibBase m_FibBase; RgW97 m_RgW97; RgLw97 m_RgLw97; FibWord97 m_FibWord97; FibWord2000 m_FibWord2000; FibWord2002 m_FibWord2002; FibWord2003 m_FibWord2003; FibWord2007 m_FibWord2007; FibNew m_FibNew; WORD csw; WORD cslw; WORD cbRgFcLcb; WORD cswNew; void reset( VirtualStreamReader reader ) { if (m_FibBase.nFib > 0 && m_FibBase.nFib <= Fib1995) { m_RgLw97.cbMac = reader.ReadInt32();//32 /*m_FibWord97.fcSpare0 = */reader.ReadInt32(); /*m_FibWord97.fcSpare1 = */reader.ReadInt32(); /*m_FibWord97.fcSpare2 = */reader.ReadInt32(); /*m_FibWord97.fcSpare3 = */reader.ReadInt32(); //48 m_RgLw97.ccpText = reader.ReadInt32(); m_RgLw97.ccpFtn = reader.ReadInt32(); m_RgLw97.ccpHdr = reader.ReadInt32(); /*m_FibWord97.ccpMcr = */reader.ReadInt32(); m_RgLw97.ccpAtn = reader.ReadInt32(); m_RgLw97.ccpEdn = reader.ReadInt32(); m_RgLw97.ccpTxbx = reader.ReadInt32(); m_RgLw97.ccpHdrTxbx = reader.ReadInt32(); /*m_FibWord97.ccpSpare2 = */reader.ReadInt32(); //84 m_FibWord97.fcStshfOrig = reader.ReadInt32(); m_FibWord97.lcbStshfOrig = reader.ReadInt32(); m_FibWord97.fcStshf = reader.ReadInt32(); m_FibWord97.lcbStshf = reader.ReadInt32(); m_FibWord97.fcPlcffndRef = reader.ReadInt32(); m_FibWord97.lcbPlcffndRef = reader.ReadInt32(); m_FibWord97.lcbPlcfandTxt = reader.ReadInt32();//112 m_FibWord97.lcbPlcffndTxt = reader.ReadInt32(); m_FibWord97.fcPlcfandRef = reader.ReadInt32(); m_FibWord97.lcbPlcfandRef = reader.ReadInt32(); m_FibWord97.fcPlcfandTxt = reader.ReadInt32(); m_FibWord97.lcbPlcfandTxt = reader.ReadInt32(); m_FibWord97.fcPlcfSed = reader.ReadInt32(); //136 m_FibWord97.lcbPlcfSed = reader.ReadInt32(); m_FibWord97.fcPlcPad = reader.ReadInt32(); m_FibWord97.lcbPlcPad = reader.ReadInt32(); m_FibWord97.fcPlcfPhe = reader.ReadInt32(); m_FibWord97.lcbPlcfPhe = reader.ReadInt32(); m_FibWord97.fcSttbfGlsy = reader.ReadInt32(); m_FibWord97.lcbSttbfGlsy = reader.ReadInt32(); m_FibWord97.fcPlcfGlsy = reader.ReadInt32(); m_FibWord97.lcbPlcfGlsy = reader.ReadInt32(); m_FibWord97.fcPlcfHdd = reader.ReadInt32(); m_FibWord97.lcbPlcfHdd = reader.ReadInt32(); m_FibWord97.fcPlcfBteChpx = reader.ReadInt32(); m_FibWord97.lcbPlcfBteChpx = reader.ReadInt32(); m_FibWord97.fcPlcfBtePapx = reader.ReadInt32(); m_FibWord97.lcbPlcfBtePapx = reader.ReadInt32(); m_FibWord97.fcPlcfSea = reader.ReadInt32(); m_FibWord97.lcbPlcfSea = reader.ReadInt32(); m_FibWord97.fcSttbfFfn = reader.ReadInt32(); m_FibWord97.lcbSttbfFfn = reader.ReadInt32(); m_FibWord97.fcPlcfFldMom = reader.ReadInt32(); //216 m_FibWord97.lcbPlcfFldMom = reader.ReadInt32(); m_FibWord97.fcPlcfFldHdr = reader.ReadInt32(); m_FibWord97.lcbPlcfFldHdr = reader.ReadInt32(); m_FibWord97.fcPlcfFldFtn = reader.ReadInt32(); m_FibWord97.lcbPlcfFldFtn = reader.ReadInt32(); m_FibWord97.fcPlcfFldAtn = reader.ReadInt32(); m_FibWord97.lcbPlcfFldAtn = reader.ReadInt32(); m_FibWord97.fcPlcfFldMcr = reader.ReadInt32(); m_FibWord97.lcbPlcfFldMcr = reader.ReadInt32(); m_FibWord97.fcSttbfBkmk = reader.ReadInt32(); m_FibWord97.lcbSttbfBkmk = reader.ReadInt32(); m_FibWord97.fcPlcfBkf = reader.ReadInt32(); m_FibWord97.lcbPlcfBkf = reader.ReadInt32(); m_FibWord97.fcPlcfBkl = reader.ReadInt32(); m_FibWord97.lcbPlcfBkl = reader.ReadInt32(); m_FibWord97.fcCmds = reader.ReadInt32(); m_FibWord97.lcbCmds = reader.ReadInt32(); /*m_FibWord97.fcPlcMcr = */reader.ReadInt32(); /*m_FibWord97.lcbPlcMcr = */reader.ReadInt32(); m_FibWord97.fcSttbfMcr = reader.ReadInt32(); m_FibWord97.lcbSttbfMcr = reader.ReadInt32(); m_FibWord97.fcPrDrvr = reader.ReadInt32(); m_FibWord97.lcbPrDrvr = reader.ReadInt32(); m_FibWord97.fcPrEnvPort = reader.ReadInt32(); m_FibWord97.lcbPrEnvPort = reader.ReadInt32(); //316 m_FibWord97.fcPrEnvLand = reader.ReadInt32(); m_FibWord97.lcbPrEnvLand = reader.ReadInt32(); m_FibWord97.fcWss = reader.ReadInt32(); m_FibWord97.lcbWss = reader.ReadInt32(); m_FibWord97.fcDop = reader.ReadInt32(); m_FibWord97.lcbDop = reader.ReadInt32(); m_FibWord97.fcSttbfAssoc = reader.ReadInt32(); m_FibWord97.lcbSttbfAssoc = reader.ReadInt32(); m_FibWord97.fcClx = reader.ReadInt32(); m_FibWord97.lcbClx = reader.ReadInt32(); m_FibWord97.fcPlcfPgdFtn = reader.ReadInt32(); m_FibWord97.lcbPlcfPgdFtn = reader.ReadInt32(); m_FibWord97.fcAutosaveSource = reader.ReadInt32(); m_FibWord97.lcbAutosaveSource = reader.ReadInt32(); m_FibWord97.fcGrpXstAtnOwners = reader.ReadInt32(); m_FibWord97.lcbGrpXstAtnOwners = reader.ReadInt32(); m_FibWord97.fcSttbfAtnBkmk = reader.ReadInt32(); m_FibWord97.lcbSttbfAtnBkmk = reader.ReadInt32(); /*m_FibWord97.wSpare4Fib = */reader.ReadInt16(); //392 /*m_FibWord97.pnChpFirst = */reader.ReadInt16(); /*m_FibWord97.pnPapFirst = */reader.ReadInt16(); /*m_FibWord97.cpnBteChp = */reader.ReadInt16(); /*m_FibWord97.cpnBtePap = */reader.ReadInt16(); m_FibWord97.fcPlcSpaMom = reader.ReadInt32(); m_FibWord97.lcbPlcSpaMom = reader.ReadInt32(); m_FibWord97.fcPlcSpaHdr = reader.ReadInt32(); /*fcPlcfdoaHdr*/ m_FibWord97.lcbPlcSpaHdr = reader.ReadInt32(); /*lcbPlcfdoaHdr*/ /*m_FibWord97.fcUnused1 =*/ reader.ReadInt32(); /*m_FibWord97.lcbUnused1 =*/ reader.ReadInt32(); /*m_FibWord97.fcUnused2 =*/ reader.ReadInt32(); /*m_FibWord97.lcbUnused2 =*/ reader.ReadInt32(); m_FibWord97.fcPlcfAtnBkf = reader.ReadInt32(); m_FibWord97.lcbPlcfAtnBkf = reader.ReadInt32(); m_FibWord97.fcPlcfAtnBkl = reader.ReadInt32(); m_FibWord97.lcbPlcfAtnBkl = reader.ReadInt32(); m_FibWord97.fcPms = reader.ReadInt32(); m_FibWord97.lcbPms = reader.ReadInt32(); m_FibWord97.fcFormFldSttbs/*f*/ = reader.ReadInt32(); m_FibWord97.lcbFormFldSttbs/*f*/= reader.ReadInt32(); m_FibWord97.fcPlcfendRef = reader.ReadInt32(); //466 m_FibWord97.lcbPlcfendRef = reader.ReadInt32(); m_FibWord97.fcPlcfendTxt = reader.ReadInt32(); m_FibWord97.lcbPlcfendTxt = reader.ReadInt32(); m_FibWord97.fcPlcfFldEdn = reader.ReadInt32(); m_FibWord97.lcbPlcfFldEdn = reader.ReadInt32(); /*m_FibWord97.fcPlcfpgdEdn =*/ reader.ReadInt32(); /*m_FibWord97.lcbPlcfpgdEdn =*/ reader.ReadInt32(); /*m_FibWord97.fcUnused3 =*/ reader.ReadInt32(); /*m_FibWord97.lcbUnused3 =*/ reader.ReadInt32(); m_FibWord97.fcSttbfRMark = reader.ReadInt32(); m_FibWord97.lcbSttbfRMark = reader.ReadInt32(); m_FibWord97.fcSttbfCaption = reader.ReadInt32(); m_FibWord97.lcbSttbfCaption = reader.ReadInt32(); m_FibWord97.fcSttbfAutoCaption = reader.ReadInt32(); m_FibWord97.lcbSttbfAutoCaption = reader.ReadInt32(); m_FibWord97.fcPlcfWkb = reader.ReadInt32(); //530 m_FibWord97.lcbPlcfWkb = reader.ReadInt32(); /*m_FibWord97.fcUnused4 =*/ reader.ReadInt32(); /*m_FibWord97.lcbUnused4 =*/ reader.ReadInt32(); m_FibWord97.fcPlcftxbxTxt = reader.ReadInt32(); m_FibWord97.lcbPlcftxbxTxt = reader.ReadInt32(); m_FibWord97.fcPlcfFldTxbx = reader.ReadInt32(); m_FibWord97.lcbPlcfFldTxbx = reader.ReadInt32(); m_FibWord97.fcPlcfHdrtxbxTxt = reader.ReadInt32(); m_FibWord97.lcbPlcfHdrtxbxTxt = reader.ReadInt32(); m_FibWord97.fcPlcffldHdrTxbx = reader.ReadInt32(); m_FibWord97.lcbPlcffldHdrTxbx = reader.ReadInt32(); m_FibWord97.fcStwUser = reader.ReadInt32(); m_FibWord97.lcbStwUser = reader.ReadInt32(); m_FibWord97.fcSttbTtmbd = reader.ReadInt32(); m_FibWord97.lcbSttbTtmbd = reader.ReadInt32(); /*m_FibWord97.fcPlcunused = */reader.ReadInt32(); /*m_FibWord97.lcbUnused = */reader.ReadInt32(); m_FibWord97.fcPgdMotherOldOld = reader.ReadInt32(); /*fcpgdMother.fcPgd*/ //602 m_FibWord97.lcbPgdMotherOldOld = reader.ReadInt32(); /*fcPgdMother.lcbPgd*/ m_FibWord97.fcBkdMotherOldOld = reader.ReadInt32(); /*fcPgdMother.fcBkd*/ m_FibWord97.lcbBkdMotherOldOld = reader.ReadInt32(); /*fcPgdMother.lcbBkd*/ // ???? size 2 ???? m_FibWord97.fcPgdFtnOldOld = reader.ReadInt32(); /*fcPgdFtn.fcPgd*/ m_FibWord97.lcbPgdFtnOldOld = reader.ReadInt32(); /*rgfcpgdFtn.lcbPgd*/ m_FibWord97.fcBkdFtnOldOld = reader.ReadInt32(); /*rgfcpgdFtn.fcBkd*/ m_FibWord97.lcbBkdFtnOldOld = reader.ReadInt32(); /*rgfcpgdFtn.lcbBkd*/ m_FibWord97.fcPgdEdnOldOld = reader.ReadInt32(); /*fcpgdFtn.fcPgd*/ m_FibWord97.lcbPgdEdnOldOld = reader.ReadInt32(); /*rgfcpgdFtn.lcbPgd*/ m_FibWord97.fcBkdEdnOldOld = reader.ReadInt32(); /*rgfcpgdFtn.fcBkd*/ m_FibWord97.lcbBkdEdnOldOld = reader.ReadInt32(); /*rgfcpgdFtn.lcbBkd*/ m_FibWord97.fcSttbfIntlFld = reader.ReadInt32(); m_FibWord97.lcbSttbfIntlFld = reader.ReadInt32(); m_FibWord97.fcRouteSlip = reader.ReadInt32(); //656 m_FibWord97.lcbRouteSlip = reader.ReadInt32(); m_FibWord97.fcSttbSavedBy = reader.ReadInt32(); m_FibWord97.lcbSttbSavedBy = reader.ReadInt32(); m_FibWord97.fcSttbFnm = reader.ReadInt32(); m_FibWord97.lcbSttbFnm = reader.ReadInt32(); //676 } if (m_FibBase.nFib > Fib1995 || m_FibBase.nFib == 0) { reader.ReadBytes(8, false); //68 m_RgLw97.ccpText = reader.ReadInt32(); //76 m_RgLw97.ccpFtn = reader.ReadInt32(); //80 m_RgLw97.ccpHdr = reader.ReadInt32(); //84 reader.ReadBytes( 4, false ); //88 m_RgLw97.ccpAtn = reader.ReadInt32(); //92 m_RgLw97.ccpEdn = reader.ReadInt32(); //96 m_RgLw97.ccpTxbx = reader.ReadInt32(); //100 m_RgLw97.ccpHdrTxbx = reader.ReadInt32(); //104 reader.ReadBytes(44, false); //108 cbRgFcLcb = reader.ReadUInt16(); //152 //Read the FibRgFcLcb97 m_FibWord97.fcStshfOrig = reader.ReadUInt32(); //154 m_FibWord97.lcbStshfOrig = reader.ReadUInt32(); //158 m_FibWord97.fcStshf = reader.ReadUInt32(); //162 m_FibWord97.lcbStshf = reader.ReadUInt32(); //166 m_FibWord97.fcPlcffndRef = reader.ReadUInt32(); //170 m_FibWord97.lcbPlcffndRef = reader.ReadUInt32(); //174 m_FibWord97.fcPlcffndTxt = reader.ReadUInt32(); //178 m_FibWord97.lcbPlcffndTxt = reader.ReadUInt32(); //182 m_FibWord97.fcPlcfandRef = reader.ReadUInt32(); //186 m_FibWord97.lcbPlcfandRef = reader.ReadUInt32(); //190 m_FibWord97.fcPlcfandTxt = reader.ReadUInt32(); //194 m_FibWord97.lcbPlcfandTxt = reader.ReadUInt32(); //198 m_FibWord97.fcPlcfSed = reader.ReadUInt32(); //202 m_FibWord97.lcbPlcfSed = reader.ReadUInt32(); //206 m_FibWord97.fcPlcPad = reader.ReadUInt32(); //210 m_FibWord97.lcbPlcPad = reader.ReadUInt32(); //214 m_FibWord97.fcPlcfPhe = reader.ReadUInt32(); //218 m_FibWord97.lcbPlcfPhe = reader.ReadUInt32(); //222 m_FibWord97.fcSttbfGlsy = reader.ReadUInt32(); //226 m_FibWord97.lcbSttbfGlsy = reader.ReadUInt32(); //230 m_FibWord97.fcPlcfGlsy = reader.ReadUInt32(); //234 m_FibWord97.lcbPlcfGlsy = reader.ReadUInt32(); //238 m_FibWord97.fcPlcfHdd = reader.ReadUInt32(); //242 m_FibWord97.lcbPlcfHdd = reader.ReadUInt32(); //246 m_FibWord97.fcPlcfBteChpx = reader.ReadUInt32(); //250 m_FibWord97.lcbPlcfBteChpx = reader.ReadUInt32(); //254 m_FibWord97.fcPlcfBtePapx = reader.ReadUInt32(); //258 m_FibWord97.lcbPlcfBtePapx = reader.ReadUInt32(); //262 m_FibWord97.fcPlcfSea = reader.ReadUInt32(); //266 m_FibWord97.lcbPlcfSea = reader.ReadUInt32(); //270 m_FibWord97.fcSttbfFfn = reader.ReadUInt32(); //274 m_FibWord97.lcbSttbfFfn = reader.ReadUInt32(); //278 m_FibWord97.fcPlcfFldMom = reader.ReadUInt32(); //282 m_FibWord97.lcbPlcfFldMom = reader.ReadUInt32(); //286 m_FibWord97.fcPlcfFldHdr = reader.ReadUInt32(); //290 m_FibWord97.lcbPlcfFldHdr = reader.ReadUInt32(); //294 m_FibWord97.fcPlcfFldFtn = reader.ReadUInt32(); //298 m_FibWord97.lcbPlcfFldFtn = reader.ReadUInt32(); //302 m_FibWord97.fcPlcfFldAtn = reader.ReadUInt32(); //306 m_FibWord97.lcbPlcfFldAtn = reader.ReadUInt32(); //310 m_FibWord97.fcPlcfFldMcr = reader.ReadUInt32(); //314 m_FibWord97.lcbPlcfFldMcr = reader.ReadUInt32(); //318 m_FibWord97.fcSttbfBkmk = reader.ReadUInt32(); //322 m_FibWord97.lcbSttbfBkmk = reader.ReadUInt32(); //326 m_FibWord97.fcPlcfBkf = reader.ReadUInt32(); //330 m_FibWord97.lcbPlcfBkf = reader.ReadUInt32(); //334 m_FibWord97.fcPlcfBkl = reader.ReadUInt32(); //338 m_FibWord97.lcbPlcfBkl = reader.ReadUInt32(); //342 m_FibWord97.fcCmds = reader.ReadUInt32(); //346 m_FibWord97.lcbCmds = reader.ReadUInt32(); //350 reader.ReadUInt32(); // 354 reader.ReadUInt32(); // 358 m_FibWord97.fcSttbfMcr = reader.ReadUInt32(); // 362 m_FibWord97.lcbSttbfMcr = reader.ReadUInt32(); // 366 m_FibWord97.fcPrDrvr = reader.ReadUInt32(); // 370 m_FibWord97.lcbPrDrvr = reader.ReadUInt32(); // 374 m_FibWord97.fcPrEnvPort = reader.ReadUInt32(); // 378 m_FibWord97.lcbPrEnvPort = reader.ReadUInt32(); // 382 m_FibWord97.fcPrEnvLand = reader.ReadUInt32(); // 386 m_FibWord97.lcbPrEnvLand = reader.ReadUInt32(); // 390 m_FibWord97.fcWss = reader.ReadUInt32(); // 394 m_FibWord97.lcbWss = reader.ReadUInt32(); // 398 m_FibWord97.fcDop = reader.ReadUInt32(); // 402 m_FibWord97.lcbDop = reader.ReadUInt32(); // 406 m_FibWord97.fcSttbfAssoc = reader.ReadUInt32(); // 410 m_FibWord97.lcbSttbfAssoc = reader.ReadUInt32(); // 414 m_FibWord97.fcClx = reader.ReadUInt32(); // 418 m_FibWord97.lcbClx = reader.ReadUInt32(); // 422 m_FibWord97.fcPlcfPgdFtn = reader.ReadUInt32(); // 426 m_FibWord97.lcbPlcfPgdFtn = reader.ReadUInt32(); // 430 m_FibWord97.fcAutosaveSource = reader.ReadUInt32(); // 434 m_FibWord97.lcbAutosaveSource = reader.ReadUInt32(); // 438 m_FibWord97.fcGrpXstAtnOwners = reader.ReadUInt32(); // 442 m_FibWord97.lcbGrpXstAtnOwners = reader.ReadUInt32(); // 446 m_FibWord97.fcSttbfAtnBkmk = reader.ReadUInt32(); // 450 m_FibWord97.lcbSttbfAtnBkmk = reader.ReadUInt32(); // 454 reader.ReadUInt32(); //458 reader.ReadUInt32(); //462 reader.ReadUInt32(); //466 reader.ReadUInt32(); //470 m_FibWord97.fcPlcSpaMom = reader.ReadUInt32(); //474 m_FibWord97.lcbPlcSpaMom = reader.ReadUInt32(); //478 m_FibWord97.fcPlcSpaHdr = reader.ReadUInt32(); //482 m_FibWord97.lcbPlcSpaHdr = reader.ReadUInt32(); //486 m_FibWord97.fcPlcfAtnBkf = reader.ReadUInt32(); //490 m_FibWord97.lcbPlcfAtnBkf = reader.ReadUInt32(); //494 m_FibWord97.fcPlcfAtnBkl = reader.ReadUInt32(); //498 m_FibWord97.lcbPlcfAtnBkl = reader.ReadUInt32(); //502 m_FibWord97.fcPms = reader.ReadUInt32(); //506 m_FibWord97.lcbPms = reader.ReadUInt32(); //510 m_FibWord97.fcFormFldSttbs = reader.ReadUInt32(); //514 m_FibWord97.lcbFormFldSttbs = reader.ReadUInt32(); //518 m_FibWord97.fcPlcfendRef = reader.ReadUInt32(); //522 m_FibWord97.lcbPlcfendRef = reader.ReadUInt32(); //526 m_FibWord97.fcPlcfendTxt = reader.ReadUInt32(); //530 m_FibWord97.lcbPlcfendTxt = reader.ReadUInt32(); //534 m_FibWord97.fcPlcfFldEdn = reader.ReadUInt32(); //538 m_FibWord97.lcbPlcfFldEdn = reader.ReadUInt32(); //542 reader.ReadUInt32(); //546 reader.ReadUInt32(); //550 m_FibWord97.fcDggInfo = reader.ReadUInt32(); //554 m_FibWord97.lcbDggInfo = reader.ReadUInt32(); //558 m_FibWord97.fcSttbfRMark = reader.ReadUInt32(); //562 m_FibWord97.lcbSttbfRMark = reader.ReadUInt32(); //566 m_FibWord97.fcSttbfCaption = reader.ReadUInt32(); //570 m_FibWord97.lcbSttbfCaption = reader.ReadUInt32(); //574 m_FibWord97.fcSttbfAutoCaption = reader.ReadUInt32(); //578 m_FibWord97.lcbSttbfAutoCaption = reader.ReadUInt32(); //582 m_FibWord97.fcPlcfWkb = reader.ReadUInt32(); //586 m_FibWord97.lcbPlcfWkb = reader.ReadUInt32(); //590 m_FibWord97.fcPlcfSpl = reader.ReadUInt32(); //594 m_FibWord97.lcbPlcfSpl = reader.ReadUInt32(); //598 m_FibWord97.fcPlcftxbxTxt = reader.ReadUInt32(); //602 m_FibWord97.lcbPlcftxbxTxt = reader.ReadUInt32(); //606 m_FibWord97.fcPlcfFldTxbx = reader.ReadUInt32(); //610 m_FibWord97.lcbPlcfFldTxbx = reader.ReadUInt32(); //614 m_FibWord97.fcPlcfHdrtxbxTxt = reader.ReadUInt32(); //618 m_FibWord97.lcbPlcfHdrtxbxTxt = reader.ReadUInt32(); //622 m_FibWord97.fcPlcffldHdrTxbx = reader.ReadUInt32(); //626 m_FibWord97.lcbPlcffldHdrTxbx = reader.ReadUInt32(); //630 m_FibWord97.fcStwUser = reader.ReadUInt32(); //634 m_FibWord97.lcbStwUser = reader.ReadUInt32(); //638 m_FibWord97.fcSttbTtmbd = reader.ReadUInt32(); //642 m_FibWord97.lcbSttbTtmbd = reader.ReadUInt32(); //646 m_FibWord97.fcCookieData = reader.ReadUInt32(); //650 m_FibWord97.lcbCookieData = reader.ReadUInt32(); //654 m_FibWord97.fcPgdMotherOldOld = reader.ReadUInt32(); //658 m_FibWord97.lcbPgdMotherOldOld = reader.ReadUInt32(); //662 m_FibWord97.fcBkdMotherOldOld = reader.ReadUInt32(); //666 m_FibWord97.lcbBkdMotherOldOld = reader.ReadUInt32(); //670 m_FibWord97.fcPgdFtnOldOld = reader.ReadUInt32(); //674 m_FibWord97.lcbPgdFtnOldOld = reader.ReadUInt32(); //678 m_FibWord97.fcBkdFtnOldOld = reader.ReadUInt32(); //682 m_FibWord97.lcbBkdFtnOldOld = reader.ReadUInt32(); //686 m_FibWord97.fcPgdEdnOldOld = reader.ReadUInt32(); //690 m_FibWord97.lcbPgdEdnOldOld = reader.ReadUInt32(); //694 m_FibWord97.fcBkdEdnOldOld = reader.ReadUInt32(); //698 m_FibWord97.lcbBkdEdnOldOld = reader.ReadUInt32(); //702 m_FibWord97.fcSttbfIntlFld = reader.ReadUInt32(); //706 m_FibWord97.lcbSttbfIntlFld = reader.ReadUInt32(); //710 m_FibWord97.fcRouteSlip = reader.ReadUInt32(); //714 m_FibWord97.lcbRouteSlip = reader.ReadUInt32(); //718 m_FibWord97.fcSttbSavedBy = reader.ReadUInt32(); //722 m_FibWord97.lcbSttbSavedBy = reader.ReadUInt32(); //726 m_FibWord97.fcSttbFnm = reader.ReadUInt32(); //730 m_FibWord97.lcbSttbFnm = reader.ReadUInt32(); //734 m_FibWord97.fcPlfLst = reader.ReadUInt32(); //738 m_FibWord97.lcbPlfLst = reader.ReadUInt32(); //742 m_FibWord97.fcPlfLfo = reader.ReadUInt32(); //746 m_FibWord97.lcbPlfLfo = reader.ReadUInt32(); //750 m_FibWord97.fcPlcfTxbxBkd = reader.ReadUInt32(); //754 m_FibWord97.lcbPlcfTxbxBkd = reader.ReadUInt32(); //758 m_FibWord97.fcPlcfTxbxHdrBkd = reader.ReadUInt32(); //762 m_FibWord97.lcbPlcfTxbxHdrBkd = reader.ReadUInt32(); //766 m_FibWord97.fcDocUndoWord9 = reader.ReadUInt32(); //770 m_FibWord97.lcbDocUndoWord9 = reader.ReadUInt32(); //774 m_FibWord97.fcRgbUse = reader.ReadUInt32(); //778 m_FibWord97.lcbRgbUse = reader.ReadUInt32(); //782 m_FibWord97.fcUsp = reader.ReadUInt32(); //786 m_FibWord97.lcbUsp = reader.ReadUInt32(); //790 m_FibWord97.fcUskf = reader.ReadUInt32(); //794 m_FibWord97.lcbUskf = reader.ReadUInt32(); //798 m_FibWord97.fcPlcupcRgbUse = reader.ReadUInt32(); //802 m_FibWord97.lcbPlcupcRgbUse = reader.ReadUInt32(); //806 m_FibWord97.fcPlcupcUsp = reader.ReadUInt32(); //810 m_FibWord97.lcbPlcupcUsp = reader.ReadUInt32(); //814 m_FibWord97.fcSttbGlsyStyle = reader.ReadUInt32(); //818 m_FibWord97.lcbSttbGlsyStyle = reader.ReadUInt32(); //822 m_FibWord97.fcPlgosl = reader.ReadUInt32(); //826 m_FibWord97.lcbPlgosl = reader.ReadUInt32(); //830 m_FibWord97.fcPlcocx = reader.ReadUInt32(); //834 m_FibWord97.lcbPlcocx = reader.ReadUInt32(); //838 m_FibWord97.fcPlcfBteLvc = reader.ReadUInt32(); //842 m_FibWord97.lcbPlcfBteLvc = reader.ReadUInt32(); //846 m_FibWord97.dwLowDateTime = reader.ReadUInt32(); //850 m_FibWord97.dwHighDateTime = reader.ReadUInt32(); //854 m_FibWord97.fcPlcfLvcPre10 = reader.ReadUInt32(); //858 m_FibWord97.lcbPlcfLvcPre10 = reader.ReadUInt32(); //862 m_FibWord97.fcPlcfAsumy = reader.ReadUInt32(); //866 m_FibWord97.lcbPlcfAsumy = reader.ReadUInt32(); //870 m_FibWord97.fcPlcfGram = reader.ReadUInt32(); //874 m_FibWord97.lcbPlcfGram = reader.ReadUInt32(); //878 m_FibWord97.fcSttbListNames = reader.ReadUInt32(); //882 m_FibWord97.lcbSttbListNames = reader.ReadUInt32(); //886 m_FibWord97.fcSttbfUssr = reader.ReadUInt32(); //890 m_FibWord97.lcbSttbfUssr = reader.ReadUInt32(); //894 } if (m_FibBase.nFib >= Fib2000) { //Read also the FibRgFcLcb2000 m_FibWord2000.fcPlcfTch = reader.ReadUInt32(); //898 m_FibWord2000.lcbPlcfTch = reader.ReadUInt32(); //902 m_FibWord2000.fcRmdThreading = reader.ReadUInt32(); //906 m_FibWord2000.lcbRmdThreading = reader.ReadUInt32(); //910 m_FibWord2000.fcMid = reader.ReadUInt32(); //914 m_FibWord2000.lcbMid = reader.ReadUInt32(); //918 m_FibWord2000.fcSttbRgtplc = reader.ReadUInt32(); //922 m_FibWord2000.lcbSttbRgtplc = reader.ReadUInt32(); //926 m_FibWord2000.fcMsoEnvelope = reader.ReadUInt32(); //930 m_FibWord2000.lcbMsoEnvelope = reader.ReadUInt32(); //934 m_FibWord2000.fcPlcfLad = reader.ReadUInt32(); //938 m_FibWord2000.lcbPlcfLad = reader.ReadUInt32(); //942 m_FibWord2000.fcRgDofr = reader.ReadUInt32(); //946 m_FibWord2000.lcbRgDofr = reader.ReadUInt32(); //950 m_FibWord2000.fcPlcosl = reader.ReadUInt32(); //954 m_FibWord2000.lcbPlcosl = reader.ReadUInt32(); //958 m_FibWord2000.fcPlcfCookieOld = reader.ReadUInt32(); //962 m_FibWord2000.lcbPlcfCookieOld = reader.ReadUInt32(); //966 m_FibWord2000.fcPgdMotherOld = reader.ReadUInt32(); //970 m_FibWord2000.lcbPgdMotherOld = reader.ReadUInt32(); //974 m_FibWord2000.fcBkdMotherOld = reader.ReadUInt32(); //978 m_FibWord2000.lcbBkdMotherOld = reader.ReadUInt32(); //982 m_FibWord2000.fcPgdFtnOld = reader.ReadUInt32(); //986 m_FibWord2000.lcbPgdFtnOld = reader.ReadUInt32(); //990 m_FibWord2000.fcBkdFtnOld = reader.ReadUInt32(); //994 m_FibWord2000.lcbBkdFtnOld = reader.ReadUInt32(); //998 m_FibWord2000.fcPgdEdnOld = reader.ReadUInt32(); //1002 m_FibWord2000.lcbPgdEdnOld = reader.ReadUInt32(); //1006 m_FibWord2000.fcBkdEdnOld = reader.ReadUInt32(); //1010 m_FibWord2000.lcbBkdEdnOld = reader.ReadUInt32(); //1014 } if ( m_FibBase.nFib >= Fib2002 ) { //Read also the fibRgFcLcb2002 reader.ReadUInt32(); //1018 reader.ReadUInt32(); //1022 m_FibWord2002.fcPlcfPgp = reader.ReadUInt32(); //1026 m_FibWord2002.lcbPlcfPgp = reader.ReadUInt32(); //1030 m_FibWord2002.fcPlcfuim = reader.ReadUInt32(); //1034 m_FibWord2002.lcbPlcfuim = reader.ReadUInt32(); //1038 m_FibWord2002.fcPlfguidUim = reader.ReadUInt32(); //1042 m_FibWord2002.lcbPlfguidUim = reader.ReadUInt32(); //1046 m_FibWord2002.fcAtrdExtra = reader.ReadUInt32(); //1050 m_FibWord2002.lcbAtrdExtra = reader.ReadUInt32(); //1054 m_FibWord2002.fcPlrsid = reader.ReadUInt32(); //1058 m_FibWord2002.lcbPlrsid = reader.ReadUInt32(); //1062 m_FibWord2002.fcSttbfBkmkFactoid = reader.ReadUInt32(); //1066 m_FibWord2002.lcbSttbfBkmkFactoid = reader.ReadUInt32(); //1070 m_FibWord2002.fcPlcfBkfFactoid = reader.ReadUInt32(); //1074 m_FibWord2002.lcbPlcfBkfFactoid = reader.ReadUInt32(); //1078 m_FibWord2002.fcPlcfcookie = reader.ReadUInt32(); //1082 m_FibWord2002.lcbPlcfcookie = reader.ReadUInt32(); //1086 m_FibWord2002.fcPlcfBklFactoid = reader.ReadUInt32(); //1090 m_FibWord2002.lcbPlcfBklFactoid = reader.ReadUInt32(); //1094 m_FibWord2002.fcFactoidData = reader.ReadUInt32(); //1098 m_FibWord2002.lcbFactoidData = reader.ReadUInt32(); //1102 m_FibWord2002.fcDocUndo = reader.ReadUInt32(); //1106 m_FibWord2002.lcbDocUndo = reader.ReadUInt32(); //1110 m_FibWord2002.fcSttbfBkmkFcc = reader.ReadUInt32(); //1114 m_FibWord2002.lcbSttbfBkmkFcc = reader.ReadUInt32(); //1118 m_FibWord2002.fcPlcfBkfFcc = reader.ReadUInt32(); //1122 m_FibWord2002.lcbPlcfBkfFcc = reader.ReadUInt32(); //1126 m_FibWord2002.fcPlcfBklFcc = reader.ReadUInt32(); //1130 m_FibWord2002.lcbPlcfBklFcc = reader.ReadUInt32(); //1134 m_FibWord2002.fcSttbfbkmkBPRepairs = reader.ReadUInt32(); //1138 m_FibWord2002.lcbSttbfbkmkBPRepairs = reader.ReadUInt32(); //1142 m_FibWord2002.fcPlcfbkfBPRepairs = reader.ReadUInt32(); //1146 m_FibWord2002.lcbPlcfbkfBPRepairs = reader.ReadUInt32(); //1150 m_FibWord2002.fcPlcfbklBPRepairs = reader.ReadUInt32(); //1154 m_FibWord2002.lcbPlcfbklBPRepairs = reader.ReadUInt32(); //1158 m_FibWord2002.fcPmsNew = reader.ReadUInt32(); //1162 m_FibWord2002.lcbPmsNew = reader.ReadUInt32(); //1166 m_FibWord2002.fcODSO = reader.ReadUInt32(); //1170 m_FibWord2002.lcbODSO = reader.ReadUInt32(); //1174 m_FibWord2002.fcPlcfpmiOldXP = reader.ReadUInt32(); //1178 m_FibWord2002.lcbPlcfpmiOldXP = reader.ReadUInt32(); //1182 m_FibWord2002.fcPlcfpmiNewXP = reader.ReadUInt32(); //1186 m_FibWord2002.lcbPlcfpmiNewXP = reader.ReadUInt32(); //1190 m_FibWord2002.fcPlcfpmiMixedXP = reader.ReadUInt32(); //1194 m_FibWord2002.lcbPlcfpmiMixedXP = reader.ReadUInt32(); //1198 reader.ReadUInt32(); //1202 reader.ReadUInt32(); //1206 m_FibWord2002.fcPlcffactoid = reader.ReadUInt32(); //1210 m_FibWord2002.lcbPlcffactoid = reader.ReadUInt32(); //1214 m_FibWord2002.fcPlcflvcOldXP = reader.ReadUInt32(); //1218 m_FibWord2002.lcbPlcflvcOldXP = reader.ReadUInt32(); //1222 m_FibWord2002.fcPlcflvcNewXP = reader.ReadUInt32(); //1226 m_FibWord2002.lcbPlcflvcNewXP = reader.ReadUInt32(); //1230 m_FibWord2002.fcPlcflvcMixedXP = reader.ReadUInt32(); //1234 m_FibWord2002.lcbPlcflvcMixedXP = reader.ReadUInt32(); //1238 } if ( m_FibBase.nFib >= Fib2003 ) { //Read also the fibRgFcLcb2003 m_FibWord2003.fcHplxsdr = reader.ReadUInt32(); m_FibWord2003.lcbHplxsdr = reader.ReadUInt32(); m_FibWord2003.fcSttbfBkmkSdt = reader.ReadUInt32(); m_FibWord2003.lcbSttbfBkmkSdt = reader.ReadUInt32(); m_FibWord2003.fcPlcfBkfSdt = reader.ReadUInt32(); m_FibWord2003.lcbPlcfBkfSdt = reader.ReadUInt32(); m_FibWord2003.fcPlcfBklSdt = reader.ReadUInt32(); m_FibWord2003.lcbPlcfBklSdt = reader.ReadUInt32(); m_FibWord2003.fcCustomXForm = reader.ReadUInt32(); m_FibWord2003.lcbCustomXForm = reader.ReadUInt32(); m_FibWord2003.fcSttbfBkmkProt = reader.ReadUInt32(); m_FibWord2003.lcbSttbfBkmkProt = reader.ReadUInt32(); m_FibWord2003.fcPlcfBkfProt = reader.ReadUInt32(); m_FibWord2003.lcbPlcfBkfProt = reader.ReadUInt32(); m_FibWord2003.fcPlcfBklProt = reader.ReadUInt32(); m_FibWord2003.lcbPlcfBklProt = reader.ReadUInt32(); m_FibWord2003.fcSttbProtUser = reader.ReadUInt32(); m_FibWord2003.lcbSttbProtUser = reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); m_FibWord2003.fcPlcfpmiOld = reader.ReadUInt32(); m_FibWord2003.lcbPlcfpmiOld = reader.ReadUInt32(); m_FibWord2003.fcPlcfpmiOldInline = reader.ReadUInt32(); m_FibWord2003.lcbPlcfpmiOldInline = reader.ReadUInt32(); m_FibWord2003.fcPlcfpmiNew = reader.ReadUInt32(); m_FibWord2003.lcbPlcfpmiNew = reader.ReadUInt32(); m_FibWord2003.fcPlcfpmiNewInline = reader.ReadUInt32(); m_FibWord2003.lcbPlcfpmiNewInline = reader.ReadUInt32(); m_FibWord2003.fcPlcflvcOld = reader.ReadUInt32(); m_FibWord2003.lcbPlcflvcOld = reader.ReadUInt32(); m_FibWord2003.fcPlcflvcOldInline = reader.ReadUInt32(); m_FibWord2003.lcbPlcflvcOldInline = reader.ReadUInt32(); m_FibWord2003.fcPlcflvcNew = reader.ReadUInt32(); m_FibWord2003.lcbPlcflvcNew = reader.ReadUInt32(); m_FibWord2003.fcPlcflvcNewInline = reader.ReadUInt32(); m_FibWord2003.lcbPlcflvcNewInline = reader.ReadUInt32(); m_FibWord2003.fcPgdMother = reader.ReadUInt32(); m_FibWord2003.lcbPgdMother = reader.ReadUInt32(); m_FibWord2003.fcBkdMother = reader.ReadUInt32(); m_FibWord2003.lcbBkdMother = reader.ReadUInt32(); m_FibWord2003.fcAfdMother = reader.ReadUInt32(); m_FibWord2003.lcbAfdMother = reader.ReadUInt32(); m_FibWord2003.fcPgdFtn = reader.ReadUInt32(); m_FibWord2003.lcbPgdFtn = reader.ReadUInt32(); m_FibWord2003.fcBkdFtn = reader.ReadUInt32(); m_FibWord2003.lcbBkdFtn = reader.ReadUInt32(); m_FibWord2003.fcAfdFtn = reader.ReadUInt32(); m_FibWord2003.lcbAfdFtn = reader.ReadUInt32(); m_FibWord2003.fcPgdEdn = reader.ReadUInt32(); m_FibWord2003.lcbPgdEdn = reader.ReadUInt32(); m_FibWord2003.fcBkdEdn = reader.ReadUInt32(); m_FibWord2003.lcbBkdEdn = reader.ReadUInt32(); m_FibWord2003.fcAfdEdn = reader.ReadUInt32(); m_FibWord2003.lcbAfdEdn = reader.ReadUInt32(); m_FibWord2003.fcAfd = reader.ReadUInt32(); m_FibWord2003.lcbAfd = reader.ReadUInt32(); } if ( m_FibBase.nFib >= Fib2007 ) { //Read also the fibRgFcLcb2007 m_FibWord2007.fcPlcfmthd = reader.ReadUInt32(); m_FibWord2007.lcbPlcfmthd = reader.ReadUInt32(); m_FibWord2007.fcSttbfBkmkMoveFrom = reader.ReadUInt32(); m_FibWord2007.lcbSttbfBkmkMoveFrom = reader.ReadUInt32(); m_FibWord2007.fcPlcfBkfMoveFrom = reader.ReadUInt32(); m_FibWord2007.lcbPlcfBkfMoveFrom = reader.ReadUInt32(); m_FibWord2007.fcPlcfBklMoveFrom = reader.ReadUInt32(); m_FibWord2007.lcbPlcfBklMoveFrom = reader.ReadUInt32(); m_FibWord2007.fcSttbfBkmkMoveTo = reader.ReadUInt32(); m_FibWord2007.lcbSttbfBkmkMoveTo = reader.ReadUInt32(); m_FibWord2007.fcPlcfBkfMoveTo = reader.ReadUInt32(); m_FibWord2007.lcbPlcfBkfMoveTo = reader.ReadUInt32(); m_FibWord2007.fcPlcfBklMoveTo = reader.ReadUInt32(); m_FibWord2007.lcbPlcfBklMoveTo = reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); m_FibWord2007.fcSttbfBkmkArto = reader.ReadUInt32(); m_FibWord2007.lcbSttbfBkmkArto = reader.ReadUInt32(); m_FibWord2007.fcPlcfBkfArto = reader.ReadUInt32(); m_FibWord2007.lcbPlcfBkfArto = reader.ReadUInt32(); m_FibWord2007.fcPlcfBklArto = reader.ReadUInt32(); m_FibWord2007.lcbPlcfBklArto = reader.ReadUInt32(); m_FibWord2007.fcArtoData = reader.ReadUInt32(); m_FibWord2007.lcbArtoData = reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); m_FibWord2007.fcOssTheme = reader.ReadUInt32(); m_FibWord2007.lcbOssTheme = reader.ReadUInt32(); m_FibWord2007.fcColorSchemeMapping = reader.ReadUInt32(); m_FibWord2007.lcbColorSchemeMapping = reader.ReadUInt32(); } cswNew = reader.ReadUInt16(); if (cswNew != 0) { //Read the FibRgCswNew m_FibNew.nFibNew = (FibVersion)reader.ReadUInt16(); if (m_FibNew.nFibNew == 0) m_FibNew.nFibNew = Fib1997; m_FibNew.cQuickSavesNew = reader.ReadUInt16(); } } FileInformationBlock( VirtualStreamReader reader ) { m_bOlderVersion = false; m_CodePage = 1250; unsigned int flag16 = 0; unsigned char flag8 = 0; //read the FIB base m_FibBase.wIdent = reader.ReadUInt16(); //0 m_FibBase.nFib = (FibVersion)reader.ReadUInt16(); //2 reader.ReadBytes( 2, false ); //4 //nProduct m_FibBase.lid = reader.ReadUInt16(); //6 m_FibBase.pnNext = reader.ReadInt16(); //8 flag16 = reader.ReadUInt16(); //10 m_FibBase.fDot = FormatUtils::BitmaskToBool((int)flag16, 0x0001); m_FibBase.fGlsy = FormatUtils::BitmaskToBool((int)flag16, 0x0002); m_FibBase.fComplex = FormatUtils::BitmaskToBool((int)flag16, 0x0002); m_FibBase.fHasPic = FormatUtils::BitmaskToBool((int)flag16, 0x0008); m_FibBase.cQuickSaves = (WORD)(((int)flag16 & 0x00F0) >> 4); m_FibBase.fEncrypted = FormatUtils::BitmaskToBool((int)flag16, 0x0100); m_FibBase.fWhichTblStm = FormatUtils::BitmaskToBool((int)flag16, 0x0200); m_FibBase.fReadOnlyRecommended = FormatUtils::BitmaskToBool((int)flag16, 0x0400); m_FibBase.fWriteReservation = FormatUtils::BitmaskToBool((int)flag16, 0x0800); m_FibBase.fExtChar = FormatUtils::BitmaskToBool((int)flag16, 0x1000); m_FibBase.fLoadOverwrite = FormatUtils::BitmaskToBool((int)flag16, 0x2000); m_FibBase.fFarEast = FormatUtils::BitmaskToBool((int)flag16, 0x4000); m_FibBase.fObfuscation = FormatUtils::BitmaskToBool((int)flag16, 0x8000); m_FibBase.nFibBack = reader.ReadUInt16(); //12 m_FibBase.lKey = reader.ReadInt32(); //14 m_FibBase.envr = reader.ReadByte(); //18 flag8 = reader.ReadByte(); //19 m_FibBase.fMac = FormatUtils::BitmaskToBool((int)flag8, 0x01); m_FibBase.fEmptySpecial = FormatUtils::BitmaskToBool((int)flag8, 0x02); m_FibBase.fLoadOverridePage = FormatUtils::BitmaskToBool((int)flag8, 0x04); m_FibBase.fFutureSavedUndo = FormatUtils::BitmaskToBool((int)flag8, 0x08); m_FibBase.fWord97Saved = FormatUtils::BitmaskToBool((int)flag8, 0x10); reader.ReadBytes( 4, false ); //20 m_FibBase.fcMin = reader.ReadInt32(); //24 m_FibBase.fcMac = reader.ReadInt32(); //28 if (m_FibBase.nFib > Fib1995) csw = reader.ReadUInt16(); //32 if (m_FibBase.nFib > Fib1995 || m_FibBase.nFib == 0) { //read the RgW97 reader.ReadBytes( 26, false ); //34 m_RgW97.lidFE = reader.ReadUInt16(); //60 cslw = reader.ReadUInt16(); //62 //read the RgLW97 m_RgLw97.cbMac = reader.ReadInt32(); //64 } reset(reader); } }; }