Beispiel #1
0
        private void OnUpdateProgress(IDiscFormat2DataEventArgs ea)
        {
            int total = ea.SectorCount;
            int last  = ea.LastWrittenLba;

            if (ea.CurrentAction == IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_FINALIZATION)
            {
                mainText.Text = Properties.Resources.Page3_FinalProcessing;
                return;
            }

            if (ea.CurrentAction == IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_VERIFYING)
            {
                mainText.Text = Properties.Resources.Page3_Verifying;
                return;
            }

            float f = (float)last / total;
            int   n = (last / (total / 100));

            WritingProgress.Value = n;
            if (!isCancelRequested)
            {
                percentProgress.Text = f.ToString("P0");
            }

            TimeSpan ts = new TimeSpan(0, 0, ea.RemainingTime);

            remainingText.Text = Properties.Resources.Page3_TimeRemainings + ts.ToString();//("T");

            if (n == 100)
            {
                CancelButton.IsEnabled = false;
            }
        }
Beispiel #2
0
        void burningUpdate([In, MarshalAs(UnmanagedType.IDispatch)] object sender, [In, MarshalAs(UnmanagedType.IDispatch)] object progress)
        {
            if (backgroundWorker.CancellationPending)
            {
                IDiscFormat2Data Data = (IDiscFormat2Data)sender;
                Data.CancelWrite();
                return;
            }

            IDiscFormat2DataEventArgs kejadian = (IDiscFormat2DataEventArgs)progress;

            burnMedia.task = BURN_MEDIA_TASK.BURN_MEDIA_TASK_WRITING;

            burnMedia.elapsedTime   = kejadian.ElapsedTime;
            burnMedia.remainingTime = kejadian.RemainingTime;
            burnMedia.totalTime     = kejadian.TotalTime;

            burnMedia.currentAction     = kejadian.CurrentAction;
            burnMedia.startLba          = kejadian.StartLba;
            burnMedia.sectorCount       = kejadian.SectorCount;
            burnMedia.lastReadLba       = kejadian.LastReadLba;
            burnMedia.lastWrittenLba    = kejadian.LastWrittenLba;
            burnMedia.totalSystemBuffer = kejadian.TotalSystemBuffer;
            burnMedia.usedSystemBuffer  = kejadian.UsedSystemBuffer;
            burnMedia.freeSystemBuffer  = kejadian.FreeSystemBuffer;

            backgroundWorker.ReportProgress(0, burnMedia);
        }
Beispiel #3
0
        /// <summary>
        /// Outputs an updated status of the write.  Currently not being called--don't know why.
        /// Documentation at: http://windowssdk.msdn.microsoft.com/en-us/library/ms689023.aspx
        /// </summary>
        /// <param name="obj">An IDiscFormat2Data interface</param>
        /// <param name="prog">An IDiscFormat2DataEventArgs interface</param>
        static void DiscFormatData_Update(object obj, object prog)
        {
            // Update the status progress of the write.
            try
            {
                IDiscFormat2DataEventArgs progress = (IDiscFormat2DataEventArgs)prog;

                string strTimeStatus = "Time: " + progress.ElapsedTime + " / " + progress.TotalTime;

                switch (progress.CurrentAction)
                {
                case IMAPI2.IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_VALIDATING_MEDIA:
                    strTimeStatus = "Validating media " + strTimeStatus;
                    break;

                case IMAPI2.IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_FORMATTING_MEDIA:
                    strTimeStatus = "Formatting media " + strTimeStatus;
                    break;

                case IMAPI2.IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_INITIALIZING_HARDWARE:
                    strTimeStatus = "Initializing Hardware " + strTimeStatus;
                    break;

                case IMAPI2.IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_CALIBRATING_POWER:
                    strTimeStatus = "Calibrating Power (OPC) " + strTimeStatus;
                    break;

                case IMAPI2.IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_WRITING_DATA:
                    long   totalSectors, writtenSectors;
                    double percentDone;
                    totalSectors   = progress.SectorCount;
                    writtenSectors = progress.LastWrittenLba - progress.StartLba;
                    percentDone    = writtenSectors * 100;
                    percentDone   /= totalSectors;
                    strTimeStatus  = "Progress:  " + percentDone.ToString("0.00") + "%  " + strTimeStatus;
                    break;

                case IMAPI2.IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_FINALIZATION:
                    strTimeStatus = "Finishing the writing " + strTimeStatus;
                    break;

                case IMAPI2.IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_COMPLETED:
                    strTimeStatus = "Completed the burn.";
                    break;

                default:
                    strTimeStatus = "Unknown action: " + progress.CurrentAction;
                    break;
                }
                ;
                Program.Log(strTimeStatus);
            }
            catch (System.Exception e)
            {
                Program.Log("Update Exception: Message: {0}\nStack Trace: {1}", e.Message, e.StackTrace.ToString());
            }
        }
Beispiel #4
0
        /// <summary>
        /// Event handler - Progress updates when writing data
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args">Argument of type IDiscFormat2DataEventArgs</param>
        public void DiscFormat2Data_ProgressUpdate([In, MarshalAs(UnmanagedType.IDispatch)] object sender, [In, MarshalAs(UnmanagedType.IDispatch)] object args)
        {
            IDiscFormat2DataEventArgs progress = args as IDiscFormat2DataEventArgs;

            String timeStatus = String.Format("Time: {0} / {1} ({2})",
                                              progress.ElapsedTime,
                                              progress.TotalTime,
                                              progress.ElapsedTime / progress.TotalTime);

            switch (progress.CurrentAction)
            {
            case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_VALIDATING_MEDIA:
            {
                Console.Write("Validating media. ");
            } break;

            case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_FORMATTING_MEDIA:
            {
                Console.Write("Formatting media. ");
            } break;

            case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_INITIALIZING_HARDWARE:
            {
                Console.Write("Initializing Hardware. ");
            } break;

            case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_CALIBRATING_POWER:
            {
                Console.Write("Calibrating Power (OPC). ");
            } break;

            case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_WRITING_DATA:
            {
                int totalSectors   = progress.SectorCount;
                int writtenSectors = progress.LastWrittenLba - progress.StartLba;
                int percentDone    = writtenSectors / totalSectors;
                Console.Write("Progress: {0} - ", percentDone);
            } break;

            case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_FINALIZATION:
            {
                Console.Write("Finishing the writing. ");
            } break;

            case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_COMPLETED:
            {
                Console.Write("Completed the burn.\nPress a key to continue");
                Console.ReadKey();
            } break;

            default:
            {
                Console.Write("Error!!!! Unknown Action: 0x{0:X}", progress.CurrentAction);
            } break;
            }
            Console.WriteLine(timeStatus);
        }
 internal FormatWriteUpdateEventArgs(IDiscFormat2DataEventArgs e)
 {
     _elapsedTime = e.ElapsedTime;
     _remainingTime = e.RemainingTime;
     _totalTime = e.TotalTime;
     _currentAction = (FormatDataWriteAction)e.CurrentAction;
     _startLba = e.StartLba;
     _sectorCount = e.SectorCount;
     _lastReadLba = e.LastReadLba;
     _lastWrittenLba = e.LastWrittenLba;
     _totalSystemBuffer = e.TotalSystemBuffer;
     _usedSystemBuffer = e.UsedSystemBuffer;
     _freeSystemBuffer = e.FreeSystemBuffer;
 }
 internal FormatWriteUpdateEventArgs(IDiscFormat2DataEventArgs e)
 {
     _elapsedTime       = e.ElapsedTime;
     _remainingTime     = e.RemainingTime;
     _totalTime         = e.TotalTime;
     _currentAction     = (FormatDataWriteAction)e.CurrentAction;
     _startLba          = e.StartLba;
     _sectorCount       = e.SectorCount;
     _lastReadLba       = e.LastReadLba;
     _lastWrittenLba    = e.LastWrittenLba;
     _totalSystemBuffer = e.TotalSystemBuffer;
     _usedSystemBuffer  = e.UsedSystemBuffer;
     _freeSystemBuffer  = e.FreeSystemBuffer;
 }
Beispiel #7
0
        /// <summary>
        /// The update event handler for the IMAPI service.  Reports the progress of the DVD burn.
        /// </summary>
        /// <param name="sender">Event sender.</param>
        /// <param name="args">Event arguments.</param>
        private void DiscFormatData_Update(
            [In, MarshalAs(UnmanagedType.IDispatch)] object sender,
            [In, MarshalAs(UnmanagedType.IDispatch)] object args)
        {
            if (this.WorkerThread.CancellationPending)
            {
                IDiscFormat2Data format2Data = (IDiscFormat2Data)sender;
                format2Data.CancelWrite();
                return;
            }

            IDiscFormat2DataEventArgs ea = (IDiscFormat2DataEventArgs)args;
            double currentProgress       = 100 * ((ea.LastWrittenLba - ea.StartLba) / (double)ea.SectorCount);

            this.progress = (int)Math.Floor(currentProgress);
            this.StatusUpdateArgs.TimeRemaining = new TimeSpan(0, 0, ea.RemainingTime);
            this.WorkerThread.ReportProgress(this.progress);
        }
Beispiel #8
0
        private void OnBurnProgress(object o1, object o2)
        {
            IDiscFormat2Data          dd = o1 as IDiscFormat2Data;
            IDiscFormat2DataEventArgs ea = o2 as IDiscFormat2DataEventArgs;

            if (ea != null && dd != null)
            {
                Dispatcher.Invoke(
                    DispatcherPriority.Normal,
                    (Action) delegate() { OnUpdateProgress(ea); }
                    );

                if (isCancelRequested)
                {
                    dd.CancelWrite();
                }
            }
        }
Beispiel #9
0
        public void InitBurnDate(IDiscFormat2DataEventArgs eventArgs)
        {
            _burnData.task = BURN_MEDIA_TASK.BURN_MEDIA_TASK_WRITING;

            // IDiscFormat2DataEventArgs Interface
            _burnData.elapsedTime   = eventArgs.ElapsedTime;
            _burnData.remainingTime = eventArgs.RemainingTime;
            _burnData.totalTime     = eventArgs.TotalTime;

            // IWriteEngine2EventArgs Interface
            _burnData.currentAction     = eventArgs.CurrentAction;
            _burnData.startLba          = eventArgs.StartLba;
            _burnData.sectorCount       = eventArgs.SectorCount;
            _burnData.lastReadLba       = eventArgs.LastReadLba;
            _burnData.lastWrittenLba    = eventArgs.LastWrittenLba;
            _burnData.totalSystemBuffer = eventArgs.TotalSystemBuffer;
            _burnData.usedSystemBuffer  = eventArgs.UsedSystemBuffer;
            _burnData.freeSystemBuffer  = eventArgs.FreeSystemBuffer;
        }
            static void WriteUpdate(IDiscFormat2Data @object, IDiscFormat2DataEventArgs progress)
            {
                switch (progress.CurrentAction)
                {
                case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_VALIDATING_MEDIA:
                    Console.Write("Validating media. ");
                    break;

                case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_FORMATTING_MEDIA:
                    Console.Write("Formatting media. ");
                    break;

                case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_INITIALIZING_HARDWARE:
                    Console.Write("Initializing Hardware. ");
                    break;

                case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_CALIBRATING_POWER:
                    Console.Write("Calibrating Power (OPC). ");
                    break;

                case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_WRITING_DATA:
                    var totalSectors   = progress.SectorCount;
                    var writtenSectors = progress.LastWrittenLba - progress.StartLba;
                    var percentDone    = writtenSectors / totalSectors;
                    Console.Write("Progress: {0} - ", percentDone);
                    break;

                case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_FINALIZATION:
                    Console.Write("Finishing the writing. ");
                    break;

                case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_COMPLETED:
                    Console.Write("Completed the burn. ");
                    break;

                default:
                    Console.Write("Error!!!! Unknown Action: 0x{0:X} ", progress.CurrentAction);
                    break;
                }
                Console.WriteLine($"Time: {progress.ElapsedTime} / {progress.TotalTime} ({progress.ElapsedTime * 100 / progress.TotalTime}%)");
            }
Beispiel #11
0
        private void discFormatData_Update([In] object sender, [In] object progress)
        {
            if (this.backgroundWorker.CancellationPending)
            {
                ((IDiscFormat2Data)sender).CancelWrite();
                return;
            }
            IDiscFormat2DataEventArgs discFormat2DataEventArg = (IDiscFormat2DataEventArgs)progress;

            this._burnData.task              = BURN_MEDIA_TASK.BURN_MEDIA_TASK_WRITING;
            this._burnData.elapsedTime       = (long)discFormat2DataEventArg.ElapsedTime;
            this._burnData.remainingTime     = (long)discFormat2DataEventArg.RemainingTime;
            this._burnData.totalTime         = (long)discFormat2DataEventArg.TotalTime;
            this._burnData.currentAction     = discFormat2DataEventArg.CurrentAction;
            this._burnData.startLba          = (long)discFormat2DataEventArg.StartLba;
            this._burnData.sectorCount       = (long)discFormat2DataEventArg.SectorCount;
            this._burnData.lastReadLba       = (long)discFormat2DataEventArg.LastReadLba;
            this._burnData.lastWrittenLba    = (long)discFormat2DataEventArg.LastWrittenLba;
            this._burnData.totalSystemBuffer = (long)discFormat2DataEventArg.TotalSystemBuffer;
            this._burnData.usedSystemBuffer  = (long)discFormat2DataEventArg.UsedSystemBuffer;
            this._burnData.freeSystemBuffer  = (long)discFormat2DataEventArg.FreeSystemBuffer;
            this.backgroundWorker.ReportProgress(0, this._burnData);
        }
Beispiel #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="progress"></param>
        void discFormatData_Update([In, MarshalAs(UnmanagedType.IDispatch)] object sender, [In, MarshalAs(UnmanagedType.IDispatch)] object progress)
        {
            //
            // Check if we've cancelled
            //
            if (backgroundBurnWorker.CancellationPending)
            {
                IDiscFormat2Data format2Data = (IDiscFormat2Data)sender;
                format2Data.CancelWrite();
                return;
            }

            IDiscFormat2DataEventArgs eventArgs = (IDiscFormat2DataEventArgs)progress;

            m_burnData.task = BURN_MEDIA_TASK.BURN_MEDIA_TASK_WRITING;

            // IDiscFormat2DataEventArgs Interface
            m_burnData.elapsedTime   = eventArgs.ElapsedTime;
            m_burnData.remainingTime = eventArgs.RemainingTime;
            m_burnData.totalTime     = eventArgs.TotalTime;

            // IWriteEngine2EventArgs Interface
            m_burnData.currentAction     = eventArgs.CurrentAction;
            m_burnData.startLba          = eventArgs.StartLba;
            m_burnData.sectorCount       = eventArgs.SectorCount;
            m_burnData.lastReadLba       = eventArgs.LastReadLba;
            m_burnData.lastWrittenLba    = eventArgs.LastWrittenLba;
            m_burnData.totalSystemBuffer = eventArgs.TotalSystemBuffer;
            m_burnData.usedSystemBuffer  = eventArgs.UsedSystemBuffer;
            m_burnData.freeSystemBuffer  = eventArgs.FreeSystemBuffer;

            //
            // Report back to the UI
            //
            backgroundBurnWorker.ReportProgress(0, m_burnData);
        }
 static void fmtHelper_Update(IDiscFormat2Data @object, IDiscFormat2DataEventArgs args)
 {
     Console.WriteLine("{0}: Elapsed: {1}, Estimated: {2}", args.CurrentAction, args.ElapsedTime, args.TotalTime);
 }
Beispiel #14
0
        /// <summary>
        /// Event handler - Progress updates when writing data
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args">Argument of type IDiscFormat2DataEventArgs</param>
        internal void DiscFormat2Data_ProgressUpdate(
            [In, MarshalAs(UnmanagedType.IDispatch)] object sender,
            [In, MarshalAs(UnmanagedType.IDispatch)] object args)
        {
            IDiscFormat2DataEventArgs progress = args as IDiscFormat2DataEventArgs;

            // If an progress action handler exists.
            if (_currentActionHandler != null)
            {
                String timeStatus = String.Format("Time: {0} / {1} ({2})",
                                                  progress.ElapsedTime,
                                                  progress.TotalTime,
                                                  progress.ElapsedTime / progress.TotalTime);

                // Get the current action.
                switch (progress.CurrentAction)
                {
                case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_VALIDATING_MEDIA:
                {
                    _currentActionHandler("Validating media.");
                } break;

                case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_FORMATTING_MEDIA:
                {
                    _currentActionHandler("Formatting media.");
                } break;

                case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_INITIALIZING_HARDWARE:
                {
                    _currentActionHandler("Initializing Hardware.");
                } break;

                case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_CALIBRATING_POWER:
                {
                    _currentActionHandler("Calibrating Power (OPC).");
                } break;

                case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_WRITING_DATA:
                {
                    int totalSectors   = progress.SectorCount;
                    int writtenSectors = progress.LastWrittenLba - progress.StartLba;
                    int percentDone    = writtenSectors / totalSectors;
                    _currentActionHandler("Progress: " + percentDone.ToString() + " - ");
                } break;

                case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_FINALIZATION:
                {
                    _currentActionHandler("Finishing the writing.");
                } break;

                case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_COMPLETED:
                {
                    _currentActionHandler("Completed the burn.");
                } break;

                default:
                {
                    _currentActionHandler("Error!!!! Unknown Action: " + progress.CurrentAction.ToString("X"));
                } break;
                }
                _currentActionHandler(timeStatus);
            }
        }