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; } }
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); }
/// <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()); } }
/// <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; }
/// <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); }
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(); } } }
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}%)"); }
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); }
/// <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); }
/// <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); } }