Example #1
0
        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;
        }
Example #2
0
 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);
     }
 }
Example #3
0
        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);
                }
            }
        }
Example #4
0
        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);
                }
            }
        }
Example #5
0
        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);
                }
            }
        }