public Savefile(Keyset keyset, IStorage storage, IntegrityCheckLevel integrityCheckLevel, bool leaveOpen) { BaseStorage = storage; LeaveOpen = leaveOpen; Header = new Header(keyset, BaseStorage); FsLayout layout = Header.Layout; IStorage dataRemapBase = BaseStorage.Slice(layout.FileMapDataOffset, layout.FileMapDataSize); IStorage dataRemapEntries = BaseStorage.Slice(layout.FileMapEntryOffset, layout.FileMapEntrySize); IStorage metadataRemapEntries = BaseStorage.Slice(layout.MetaMapEntryOffset, layout.MetaMapEntrySize); DataRemapStorage = new RemapStorage(dataRemapBase, Header.MainRemapHeader, dataRemapEntries, leaveOpen); DuplexStorage = InitDuplexStorage(DataRemapStorage, Header); MetaRemapStorage = new RemapStorage(DuplexStorage, Header.MetaDataRemapHeader, metadataRemapEntries, leaveOpen); var journalMapInfo = new JournalMapParams { MapStorage = MetaRemapStorage.Slice(layout.JournalMapTableOffset, layout.JournalMapTableSize), PhysicalBlockBitmap = MetaRemapStorage.Slice(layout.JournalPhysicalBitmapOffset, layout.JournalPhysicalBitmapSize), VirtualBlockBitmap = MetaRemapStorage.Slice(layout.JournalVirtualBitmapOffset, layout.JournalVirtualBitmapSize), FreeBlockBitmap = MetaRemapStorage.Slice(layout.JournalFreeBitmapOffset, layout.JournalFreeBitmapSize), }; IStorage journalData = DataRemapStorage.Slice(layout.JournalDataOffset, layout.JournalDataSizeB + layout.JournalSize); JournalStorage = new JournalStorage(journalData, Header.JournalHeader, journalMapInfo, leaveOpen); IvfcStorage = InitJournalIvfcStorage(integrityCheckLevel); IStorage fatStorage = MetaRemapStorage.Slice(layout.FatOffset, layout.FatSize); if (Header.Layout.Version >= 0x50000) { fatStorage = InitFatIvfcStorage(integrityCheckLevel); } SaveFs = new SaveFs(IvfcStorage, fatStorage, Header.SaveHeader); }
public IStorage OpenFile(FileEntry file) { return(SaveFs.OpenFile(file)); }
public bool FileExists(string filename) => SaveFs.FileExists(filename);
public IStorage OpenFile(string filename) { return(SaveFs.OpenFile(filename)); }