/// <summary> /// Создаёт файл-образ раздела жёсткого диска с файловой системой DehaxFS с параметрами. /// </summary> /// <param name="diskPartitionSize">Размер раздела</param> /// <param name="diskClusterFactor">Размер кластера, множитель секторов диска</param> public DFSImage(long diskPartitionSize, byte diskClusterFactor) { diskClusterFactor = (byte)Math.Pow(2, diskClusterFactor - 1); _diskPartitionSize = diskPartitionSize; _diskClusterFactor = diskClusterFactor; _diskClusterSize = DISK_BYTES_PER_SECTOR * diskClusterFactor; _bitMap = new BitMap((int)(_diskPartitionSize / _diskClusterSize)); _inodes = new Inodes((int)(_diskPartitionSize / _diskClusterSize)); _rootDirectory = new RootDirectory(_diskClusterSize); _emptyData = new byte[_diskPartitionSize - Marshal.SizeOf <Superblock>() - _bitMap.GetLength() - _inodes.GetLength() - _rootDirectory.GetLength()]; _superblock = new Superblock() { filesystemType = 0x28, numClusters = (int)(_diskPartitionSize / _diskClusterSize), clusterFactor = diskClusterFactor, inodeArraySize = _inodes.GetLength(), bitMapSize = _bitMap.GetLength(), numFreeClusters = _emptyData.Length / _diskClusterSize, numFreeInode = (int)(_diskPartitionSize / _diskClusterSize - 1) }; InitializeFileSystem(); }
/// <summary> /// Создаёт файл-образ раздела жёсткого диска с файловой системой DehaxFS с параметрами. /// </summary> /// <param name="diskPartitionSize">Размер раздела</param> /// <param name="diskClusterFactor">Размер кластера, множитель секторов диска</param> public DFSImage(long diskPartitionSize, byte diskClusterFactor) { diskClusterFactor = (byte)Math.Pow(2, diskClusterFactor - 1); _diskPartitionSize = diskPartitionSize; _diskClusterFactor = diskClusterFactor; _diskClusterSize = DISK_BYTES_PER_SECTOR * diskClusterFactor; _bitMap = new BitMap((int)(_diskPartitionSize / _diskClusterSize)); _inodes = new Inodes((int)(_diskPartitionSize / _diskClusterSize)); _rootDirectory = new RootDirectory(_diskClusterSize); _emptyData = new byte[_diskPartitionSize - Marshal.SizeOf<Superblock>() - _bitMap.GetLength() - _inodes.GetLength() - _rootDirectory.GetLength()]; _superblock = new Superblock() { filesystemType = 0x28, numClusters = (int)(_diskPartitionSize / _diskClusterSize), clusterFactor = diskClusterFactor, inodeArraySize = _inodes.GetLength(), bitMapSize = _bitMap.GetLength(), numFreeClusters = _emptyData.Length / _diskClusterSize, numFreeInode = (int)(_diskPartitionSize / _diskClusterSize - 1) }; InitializeFileSystem(); }