private void SetVolumeProperties(DataDisc data, string volumeLabel) { // Sample settings. Replace with your own data or leave empty data.UdfVolumeProps.VolumeLabel = volumeLabel; data.IsoVolumeProps.VolumeLabel = volumeLabel; data.JolietVolumeProps.VolumeLabel = volumeLabel; data.UdfVolumeProps.VolumeSet = "SET"; data.IsoVolumeProps.VolumeSet = "SET"; data.JolietVolumeProps.VolumeSet = "SET"; data.IsoVolumeProps.SystemID = "WINDOWS"; data.JolietVolumeProps.SystemID = "WINDOWS"; data.IsoVolumeProps.Publisher = "PUBLISHER"; data.JolietVolumeProps.Publisher = "PUBLISHER"; data.IsoVolumeProps.DataPreparer = "PREPARER"; data.JolietVolumeProps.DataPreparer = "PREPARER"; data.IsoVolumeProps.Application = "DVDBURNER"; data.JolietVolumeProps.Application = "DVDBURNER"; var now = DateTime.Now; data.UdfVolumeProps.CreationTime = now; data.IsoVolumeProps.CreationTime = now; data.JolietVolumeProps.CreationTime = now; }
public long CalculateImageSize(BurnSettings settings) { using (var dataDisc = new DataDisc()) { dataDisc.ImageType = settings.ImageType; SetVolumeProperties(dataDisc, settings.VolumeLabel); SetImageLayoutFromFolder(dataDisc, settings.VideoDVD, settings.SourceFolder); return(dataDisc.ImageSizeInBytes); } }
private void SetImageLayoutFromFolder(DataDisc data, bool isVideoDVD, string sourceFolder) { if (isVideoDVD) { data.DvdVideo = true; data.CloseDisc = true; } DataFile fileSystemRoot = new DataFile(); // Create directory structure // Set up the root of the file system fileSystemRoot.IsDirectory = true; fileSystemRoot.LongFilename = "\\"; fileSystemRoot.FilePath = "\\"; // Import all files CreateFileTree(fileSystemRoot, sourceFolder); // Set image layout if (isVideoDVD) { using (var dvd = new VideoDVD()) { // Pass the raw layout to VideoDVD if (!dvd.SetImageLayout(fileSystemRoot)) { throw new BurnerException(dvd.Error); } // Get the correct dvd layout if (!data.SetImageLayout(dvd.ImageLayout)) { throw new BurnerException(data.Error); } } } else { if (!data.SetImageLayout(fileSystemRoot)) { throw new BurnerException(data.Error); } } }
public void Burn(BurnSettings settings) { if (null == m_device) { throw new BurnerException(NO_DEVICE, NO_DEVICE_TEXT); } using (var dataDisc = new DataDisc()) { // Add event handlers dataDisc.OnStatus += new EventHandler <DataDiscStatusEventArgs>(DataDisc_OnStatus); dataDisc.OnFileStatus += new EventHandler <DataDiscFileStatusEventArgs>(DataDisc_OnFileStatus); dataDisc.OnProgress += new EventHandler <DataDiscProgressEventArgs>(DataDisc_OnProgress); dataDisc.OnContinueBurn += new EventHandler <DataDiscContinueEventArgs>(DataDisc_OnContinueBurn); FormatMedia(m_device); m_device.WriteSpeedKB = settings.WriteSpeedKB; dataDisc.Device = m_device; dataDisc.SimulateBurn = settings.Simulate; dataDisc.WriteMethod = settings.WriteMethod; dataDisc.CloseDisc = settings.CloseDisc; // Set the session start address. This must be done before intializing the file system. dataDisc.SessionStartAddress = m_device.NewSessionStartAddress; // Set burning parameters dataDisc.ImageType = settings.ImageType; SetVolumeProperties(dataDisc, settings.VolumeLabel); // Set image layout SetImageLayoutFromFolder(dataDisc, settings.VideoDVD, settings.SourceFolder); if (!dataDisc.WriteToDisc(true)) { throw new BurnerException(dataDisc.Error); } if (settings.Eject) { m_device.Eject(true); } } }
public void CreateImage(CreateImageSettings settings) { using (var data = new DataDisc()) { // Add event handlers data.OnStatus += new EventHandler <DataDiscStatusEventArgs>(DataDisc_OnStatus); data.OnFileStatus += new EventHandler <DataDiscFileStatusEventArgs>(DataDisc_OnFileStatus); data.OnProgress += new EventHandler <DataDiscProgressEventArgs>(DataDisc_OnProgress); data.OnContinueBurn += new EventHandler <DataDiscContinueEventArgs>(DataDisc_OnContinueBurn); data.ImageType = settings.ImageType; SetVolumeProperties(data, settings.VolumeLabel); // Create image file system SetImageLayoutFromFolder(data, settings.VideoDVD, settings.SourceFolder); // Create the image file if (!data.CreateImageFile(settings.ImageFile)) { throw new BurnerException(data.Error); } } }