private void SetVolumeDescriptor(string systemId, string volumeId, uint volumeSpaceSize, uint pathTableSize, uint typeLPathTable, uint typeMPathTable, DirectoryRecordWrapper rootDir, DateTime creationDate, DateTime modificationDate, sbyte timeZone) { byte[] lSystemId; byte[] lVolumeId; if (VolumeDescriptorType == VolumeType.Primary) { lSystemId = IsoAlgorithm.StringToByteArray(systemId, IsoAlgorithm.SystemIdLength); lVolumeId = IsoAlgorithm.StringToByteArray(volumeId, IsoAlgorithm.VolumeIdLength); } else if (VolumeDescriptorType == VolumeType.Suplementary) { lSystemId = IsoAlgorithm.AsciiToUnicode(systemId, IsoAlgorithm.SystemIdLength); lVolumeId = IsoAlgorithm.AsciiToUnicode(volumeId, IsoAlgorithm.VolumeIdLength); } else { if (m_volumeDescriptor == null) { m_volumeDescriptor = new VolumeDescriptor(); } m_volumeDescriptor.VolumeDescType = (byte)m_volumeDescriptorType; return; } ulong lVolumeSpaceSize = IsoAlgorithm.BothEndian(volumeSpaceSize); ulong lPathTableSize = IsoAlgorithm.BothEndian(pathTableSize); // typeLPathTable remains unchanged, but typeMPathTable has to change byte order. uint lTypeMPathTable = IsoAlgorithm.ChangeEndian(typeMPathTable); DateWrapper lCreationDate = new DateWrapper(creationDate, timeZone); DateWrapper lModificationDate = new DateWrapper(modificationDate, timeZone); DateWrapper bufferDate = new DateWrapper(IsoAlgorithm.NoDate); SetVolumeDescriptor(lSystemId, lVolumeId, lVolumeSpaceSize, lPathTableSize, typeLPathTable, lTypeMPathTable, rootDir.Record, lCreationDate.AsciiDateRecord, lModificationDate.AsciiDateRecord, bufferDate.AsciiDateRecord, bufferDate.AsciiDateRecord); }
private void SetDirectoryRecord(UInt32 extentLocation, UInt32 dataLength, DateTime date, sbyte timeZone, bool isDirectory, string name) { m_date = new DateWrapper(date); byte fileFlags = (isDirectory) ? (byte)2 : (byte)0; byte[] fileIdentifier; if (name == ".") { fileIdentifier = new byte[1] { 0 }; } else if (name == "..") { fileIdentifier = new byte[1] { 1 }; } else { if (isDirectory) { fileIdentifier = IsoAlgorithm.StringToByteArray(name); } else { fileIdentifier = IsoAlgorithm.StringToByteArray(name + ";1"); } } this.SetDirectoryRecord( IsoAlgorithm.BothEndian(extentLocation), IsoAlgorithm.BothEndian(dataLength), m_date.BinaryDateRecord, timeZone, fileFlags, fileIdentifier ); }