public static string GetDataBurnDataText(BurnData burnData) { if (burnData.task == BURN_MEDIA_TASK.BURN_MEDIA_TASK_FILE_SYSTEM) { return burnData.statusMessage; } else if (burnData.task == BURN_MEDIA_TASK.BURN_MEDIA_TASK_WRITING) { switch (burnData.currentDataAction) { case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_VALIDATING_MEDIA: return "Validating current media..."; case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_FORMATTING_MEDIA: return "Formatting media..."; case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_INITIALIZING_HARDWARE: return "Initializing hardware..."; case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_CALIBRATING_POWER: return "Optimizing laser intensity..."; case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_WRITING_DATA: long writtenSectors = burnData.lastWrittenLba - burnData.startLba; if (writtenSectors > 0 && burnData.sectorCount > 0) { var percent = (int)((100 * writtenSectors) / burnData.sectorCount); return string.Format("Progress: {0}%", percent); } else return "Progress 0%"; case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_FINALIZATION: return "Finalizing writing..."; case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_COMPLETED: return "Completed!"; case IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_VERIFYING: return "Verifying"; } } return string.Empty; }
private async Task<int> StartBurnProcess(IDiscRecorder2 discRecorder, bool ejectMedia, IList<MediaFile> mediaItems, IMAPI_BURN_VERIFICATION_LEVEL verificationLevel, CancellationToken cancellationToken, IProgress<BurnData> progress) { IsBurning = true; this.ejectMedia = ejectMedia; this.burnProgress = progress; this.mediaItems = mediaItems; this.cancellationToken = cancellationToken; burnData = new BurnData(); burnData.uniqueRecorderId = discRecorder.ActiveDiscRecorder; var burnResult = await Task.Run(() => DoBurn(burnData.uniqueRecorderId)); progress.Report(burnData); IsBurning = false; return burnResult; }
public static string GetTaoBurnDataText(BurnData burnData) { if (burnData.task == BURN_MEDIA_TASK.BURN_MEDIA_TASK_PREPARING) { return string.Format("Preparing stream for {0}", burnData.filename); } else if (burnData.task == BURN_MEDIA_TASK.BURN_MEDIA_TASK_WRITING) { switch (burnData.currentTaoAction) { case IMAPI_FORMAT2_TAO_WRITE_ACTION.IMAPI_FORMAT2_TAO_WRITE_ACTION_PREPARING: return string.Format("Writing Track {0} - {1} of {2}", burnData.filename, burnData.currentTrackNumber, burnData.totalTracks); case IMAPI_FORMAT2_TAO_WRITE_ACTION.IMAPI_FORMAT2_TAO_WRITE_ACTION_WRITING: long writtenSectors = burnData.lastWrittenLba - burnData.startLba; if (writtenSectors > 0 && burnData.sectorCount > 0) { var percent = (int)((100 * writtenSectors) / burnData.sectorCount); return string.Format("Progress: {0}%", percent); } else return "Track Progress 0%"; case IMAPI_FORMAT2_TAO_WRITE_ACTION.IMAPI_FORMAT2_TAO_WRITE_ACTION_FINISHING: return "Finishing..."; } } return string.Empty; }