Example #1
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);
                }
            }
        }