public FS(byte[] Buffer) { FirstField = BitConverter.ToInt32(Buffer, 0); Unused1 = BitConverter.ToInt32(Buffer, 4); SBlkNo = BitConverter.ToInt32(Buffer, 8); CBlkNo = BitConverter.ToInt32(Buffer, 16); IBlkNo = BitConverter.ToInt32(Buffer, 20); DBlkNo = BitConverter.ToInt32(Buffer, 24); OldCGOffset = BitConverter.ToInt32(Buffer, 28); OldCGMask = BitConverter.ToInt32(Buffer, 32); OldTime = BitConverter.ToInt32(Buffer, 36); OldSize = BitConverter.ToInt32(Buffer, 40); OldDSize = BitConverter.ToInt32(Buffer, 44); NCG = BitConverter.ToInt32(Buffer, 48); BSize = BitConverter.ToInt32(Buffer, 52); FSize = BitConverter.ToInt32(Buffer, 56); Frag = BitConverter.ToInt32(Buffer, 60); MinFree = BitConverter.ToInt32(Buffer, 64); OldRotDelay = BitConverter.ToInt32(Buffer, 68); OldRPS = BitConverter.ToInt32(Buffer, 72); BMask = BitConverter.ToInt32(Buffer, 76); FMask = BitConverter.ToInt32(Buffer, 80); BShift = BitConverter.ToInt32(Buffer, 84); FShift = BitConverter.ToInt32(Buffer, 88); MaxContig = BitConverter.ToInt32(Buffer, 92); MaxBpg = BitConverter.ToInt32(Buffer, 96); FSBTODB = BitConverter.ToInt32(Buffer, 100); SBSize = BitConverter.ToInt32(Buffer, 104); Spare1 = new int[] { BitConverter.ToInt32(Buffer, 108), BitConverter.ToInt32(Buffer, 112) }; NINDIR = BitConverter.ToInt32(Buffer, 116); INOPD = BitConverter.ToInt32(Buffer, 120); OldNSPF = BitConverter.ToInt32(Buffer, 124); Optim = BitConverter.ToInt32(Buffer, 128); OldNPSect = BitConverter.ToInt32(Buffer, 132); OldInterleave = BitConverter.ToInt32(Buffer, 136); OldTrackSkew = BitConverter.ToInt32(Buffer, 140); Id = new int[] { BitConverter.ToInt32(Buffer, 144), BitConverter.ToInt32(Buffer, 148) }; OldCSAddr = BitConverter.ToInt32(Buffer, 152); CSSize = BitConverter.ToInt32(Buffer, 156); CGSize = BitConverter.ToInt32(Buffer, 160); Spare2 = BitConverter.ToInt32(Buffer, 164); OldNSect = BitConverter.ToInt32(Buffer, 168); OldSPC = BitConverter.ToInt32(Buffer, 172); OldNCyl = BitConverter.ToInt32(Buffer, 176); OldCPG = BitConverter.ToInt32(Buffer, 180); IPG = BitConverter.ToInt32(Buffer, 184); FPG = BitConverter.ToInt32(Buffer, 188); OldCSTotal.cs_nbfree = BitConverter.ToInt32(Buffer, 192); OldCSTotal.cs_ndir = BitConverter.ToInt32(Buffer, 196); OldCSTotal.cs_nffree = BitConverter.ToInt32(Buffer, 200); OldCSTotal.cs_nifree = BitConverter.ToInt32(Buffer, 204); FMod = Buffer[208]; Clean = Buffer[209]; ROnly = Buffer[210]; OldFlags = Buffer[211]; FSMnt = System.Text.Encoding.ASCII.GetString(Buffer, 212, MAXMNTLEN).ToCharArray(); VolName = System.Text.Encoding.ASCII.GetString(Buffer, 680, MAXVOLLEN).ToCharArray(); SWUID = BitConverter.ToInt32(Buffer, 712); Pad = BitConverter.ToInt32(Buffer, 716); CGRotor = BitConverter.ToInt32(Buffer, 720); OCSP = new byte[NOCSPTRS]; // 28 bytes ContigDirs = BitConverter.ToInt32(Buffer, 748); CSP.cs_nbfree = BitConverter.ToInt32(Buffer, 752); CSP.cs_ndir= BitConverter.ToInt32(Buffer, 756); CSP.cs_nffree= BitConverter.ToInt32(Buffer, 760); CSP.cs_nifree= BitConverter.ToInt32(Buffer, 764); MaxCluster = BitConverter.ToInt32(Buffer, 768); Active = BitConverter.ToInt32(Buffer, 772); OldCPC = BitConverter.ToInt32(Buffer, 776); MaxBSize = BitConverter.ToInt32(Buffer, 780); SpareCon64 = new long[17]; // 136 bytes SBlockLoc= BitConverter.ToInt32(Buffer, 916); CSTotal.cs_nbfree = BitConverter.ToInt32(Buffer, 916); CSTotal.cs_ndir= BitConverter.ToInt32(Buffer, 924); CSTotal.cs_nffree= BitConverter.ToInt32(Buffer, 932); CSTotal.cs_nifree= BitConverter.ToInt32(Buffer, 940); CSTotal.cs_numclusters= BitConverter.ToInt32(Buffer, 948); CSTotal.cs_spare = 0; // 24 Time; Size; DSize; CSAddr; PendingBlocks; PendingINodes; SnapINum = new int[FSMAXSNAP]; AvgFileSize; AvgFPDir; SaveCGSize; SpareCon32 = new int[25]; Flags; ContigSumSize; MaxSymLinkLen; OldINodeFmt; MaxFileSize; QBMask; QFMask; State; OldPostTblFormat; OldNRPos; Spare5 = new int[2]; Magic; }