コード例 #1
0
		public void WriteDemoImage( BinaryWriter writer ) {
			int currentSector;

			for ( currentSector=0; currentSector<16; currentSector++ ) {
				IsoAlgorithm.WriteEmptySector( writer );
			}

			DirectoryRecordWrapper rootDir = new DirectoryRecordWrapper( 19, IsoAlgorithm.SectorSize, DateTime.Now, true, "." );
			VolumeDescriptorWrapper volumeDescriptor = new VolumeDescriptorWrapper( "EPURASU", 28, 26, 21, 22, rootDir, DateTime.Now, DateTime.Now.Subtract( TimeSpan.FromDays( 2 ) ), 8 );

			//rootDir.SetDirectoryRecord( 19, ISO9660.SectorSize, DateTime.Now, true, "." );

			// [ Sect 16 ] Primary volume descriptor
			volumeDescriptor.VolumeDescriptorType = VolumeType.Primary;
			//			volumeDescriptor.SetVolumeDescriptor( "EPURASU", 28, 26, 21, 22, rootDir, DateTime.Now, DateTime.Now.Subtract( TimeSpan.FromDays( 2 ) ), 8 );

			volumeDescriptor.Write( writer );

			// [ Sect 17 ] Suplementary volume descriptor (in care scriem cu unicode)
			rootDir.SetDirectoryRecord( 23, IsoAlgorithm.SectorSize, DateTime.Now, true, "." );
			volumeDescriptor.VolumeDescriptorType = VolumeType.Suplementary;
			volumeDescriptor.SetVolumeDescriptor( "Epurasu", 28, 38, 25, 26, rootDir, DateTime.Now, DateTime.Now.Subtract( TimeSpan.FromDays( 2 ) ), 8 );

			volumeDescriptor.Write( writer );

			// [ Sect 18 ] Volume descriptor set termnator
			volumeDescriptor.VolumeDescriptorType = VolumeType.SetTerminator;

			volumeDescriptor.Write( writer );


			// [ Sect 19 ] Continutul directorului radacina:
			// Directorul curent: "."
			rootDir.SetDirectoryRecord( 19, IsoAlgorithm.SectorSize, DateTime.Now, true, "." );
			rootDir.Write( writer );

			// Directorul parinte: "..". Fiind vorba de radacina, directorul parinte e o referinta la directorul curent.
			rootDir.SetDirectoryRecord( 19, IsoAlgorithm.SectorSize, DateTime.Now, true, ".." );
			rootDir.Write( writer );

			// Director copil: "Director"
			DirectoryRecordWrapper childDir = new DirectoryRecordWrapper( 20, IsoAlgorithm.SectorSize, DateTime.Now, true, "DIRECTOR" );
			//childDir.SetDirectoryRecord( 20, ISO9660.SectorSize, DateTime.Now, true, "DIRECTOR" );
			int bytesWritten = childDir.Write( writer );

			writer.Write( new byte[2048 - 34 - 34 - bytesWritten] );

			// [ Sect 20 ] Continutul directorului "Director"
			childDir.SetDirectoryRecord( 20, IsoAlgorithm.SectorSize, DateTime.Now, true, "." );
			childDir.Write( writer );
			childDir.SetDirectoryRecord( 19, IsoAlgorithm.SectorSize, DateTime.Now, true, ".." );
			childDir.Write( writer );
			childDir.SetDirectoryRecord( 27, 45, DateTime.Now, false, "NUMELEFI.TXT" );
			bytesWritten = childDir.Write( writer );

			writer.Write( new byte[2048 - 34 - 34 - bytesWritten] );

			// [ Sect 21 ] Pathtable pt little endian

			// Root:
			PathTableRecordWrapper record = new PathTableRecordWrapper();
			record.Endian = Endian.LittleEndian;
			record.SetPathTableRecord( 19, 1, "." );
			bytesWritten = record.Write( writer );

			// "Director":
			record.SetPathTableRecord( 20, 1, "DIRECTOR" );
			bytesWritten += record.Write( writer );

			writer.Write( new byte[2048 - bytesWritten] );

			// [ Sect 22 ] Pathtable pt big endian

			// Root:
			record = new PathTableRecordWrapper();
			record.Endian = Endian.BigEndian;
			record.SetPathTableRecord( 19, 1, "." );
			record.Write( writer );

			// "Director":
			record.SetPathTableRecord( 20, 1, "DIRECTOR" );
			record.Write( writer );

			writer.Write( new byte[2048 - bytesWritten] );




			// [ Sect 23 ] Continutul directorului radacina:
			rootDir.VolumeDescriptorType = VolumeType.Suplementary;

			// Directorul curent: "."
			rootDir.SetDirectoryRecord( 23, IsoAlgorithm.SectorSize, DateTime.Now, true, "." );
			rootDir.Write( writer );

			// Directorul parinte: "..". Fiind vorba de radacina, directorul parinte e o referinta la directorul curent.
			rootDir.SetDirectoryRecord( 23, IsoAlgorithm.SectorSize, DateTime.Now, true, ".." );
			rootDir.Write( writer );

			// Director copil: "Director"
			childDir = new DirectoryRecordWrapper( 24, IsoAlgorithm.SectorSize, DateTime.Now, true, "Directorul" );
			//childDir.SetDirectoryRecord( 24, ISO9660.SectorSize, DateTime.Now, true, "Directorul" );
			childDir.VolumeDescriptorType = VolumeType.Suplementary;
			bytesWritten = childDir.Write( writer );

			writer.Write( new byte[2048 - 34 - 34 - bytesWritten] );

			// [ Sect 24 ] Continutul directorului "Director"
			childDir.SetDirectoryRecord( 24, IsoAlgorithm.SectorSize, DateTime.Now, true, "." );
			childDir.Write( writer );
			childDir.SetDirectoryRecord( 23, IsoAlgorithm.SectorSize, DateTime.Now, true, ".." );
			childDir.Write( writer );
			childDir.SetDirectoryRecord( 27, 45, DateTime.Now, false, "numeleFisierului.txt" );
			bytesWritten = childDir.Write( writer );

			writer.Write( new byte[2048 - 34 - 34 - bytesWritten] );

			// [ Sect 25 ] Pathtable pt little endian

			// Root:
			record = new PathTableRecordWrapper();
			record.Endian = Endian.LittleEndian;
			record.VolumeDescriptorType = VolumeType.Suplementary;
			record.SetPathTableRecord( 23, 1, "." );
			bytesWritten = record.Write( writer );

			// "Director":
			record.SetPathTableRecord( 24, 1, "Directorul" );
			bytesWritten += record.Write( writer );

			writer.Write( new byte[2048 - bytesWritten] );

			// [ Sect 26 ] Pathtable pt big endian

			// Root:
			record = new PathTableRecordWrapper();
			record.Endian = Endian.BigEndian;
			record.VolumeDescriptorType = VolumeType.Suplementary;
			record.SetPathTableRecord( 23, 1, "." );
			record.Write( writer );

			// "Director":
			record.SetPathTableRecord( 24, 1, "Directorul" );
			record.Write( writer );

			writer.Write( new byte[2048 - bytesWritten] );

			// [ Sect 27 ] Continutul fisierului (45 B):
			writer.Write( IsoAlgorithm.StringToByteArray( "Catelus cu parul cretz fura ratza din cotetz." ) );
			writer.Write( new byte[2048-45] );
		}