private WimMessageResult MessageCallback(WimMessageType messageType, object message, object userData) { if (messageType == WimMessageType.Process && _abortWrite) { return(WimMessageResult.Abort); } switch (messageType) { case WimMessageType.Process: _asyncOp.Post(WriteProcessAsync, message); break; case WimMessageType.Progress: _asyncOp.Post(WriteProgressAsync, message); break; case WimMessageType.Warning: _asyncOp.Post(WriteWarningAsync, message); break; case WimMessageType.Error: _asyncOp.Post(WriteErrorAsync, message); break; } return(WimMessageResult.Success); }
private static WimMessageResult WimgApiCallback(WimMessageType msgType, object msg, object userData) { // https://github.com/josemesona/ManagedWimgApi/wiki/Message-Callbacks Debug.Assert(Engine.WorkingEngine != null); EngineState s = Engine.WorkingEngine.s; switch (msgType) { case WimMessageType.Progress: { // For WimMount WimMessageProgress wMsg = (WimMessageProgress)msg; s.MainViewModel.BuildCommandProgressValue = wMsg.PercentComplete; if (0 < wMsg.EstimatedTimeRemaining.TotalSeconds) { int min = (int)wMsg.EstimatedTimeRemaining.TotalMinutes; int sec = wMsg.EstimatedTimeRemaining.Seconds; s.MainViewModel.BuildCommandProgressText = $"{wMsg.PercentComplete}%, Remaing Time : {min}m {sec}s"; } else { s.MainViewModel.BuildCommandProgressText = $"{wMsg.PercentComplete}%"; } } break; case WimMessageType.MountCleanupProgress: { // For WimUnmount WimMessageMountCleanupProgress wMsg = (WimMessageMountCleanupProgress)msg; s.MainViewModel.BuildCommandProgressValue = wMsg.PercentComplete; if (0 < wMsg.EstimatedTimeRemaining.TotalSeconds) { int min = (int)wMsg.EstimatedTimeRemaining.TotalMinutes; int sec = wMsg.EstimatedTimeRemaining.Seconds; s.MainViewModel.BuildCommandProgressText = $"{wMsg.PercentComplete}%, Remaing Time : {min}m {sec}s"; } else { s.MainViewModel.BuildCommandProgressText = $"{wMsg.PercentComplete}%"; } } break; } return(WimMessageResult.Success); }
private WimMessageResult CaptureImageWithCallbackTestCallback(WimMessageType messageType, object message, object userData) { _captureWithCallbackCalled = true; if (userData is CallbackObject callbackObject) { callbackObject.WasCalled = true; } switch (messageType) { case WimMessageType.SetRange: _captureWithCallbackFileCount = ((WimMessageSetRange)message).FileCount; break; } return(WimMessageResult.Success); }
/// <summary> /// </summary> /// <param name="MessageId">Specifies the sent message.</param> /// <param name="wParam"> /// Specifies additional message information. The contents of this parameter depend on the value of /// the MessageId parameter. /// </param> /// <param name="lParam"> /// Specifies additional message information. The contents of this parameter depend on the value of /// the MessageId parameter. /// </param> /// <param name="UserData"> /// A handle that specifies the user-defined value passed to the WIMRegisterMessageCallback /// function. This is currently not used. /// </param> /// <returns></returns> private WimMessageResult WimMessageCallback(WimMessageType MessageId, IntPtr wParam, IntPtr lParam, IntPtr UserData) { // Create a default message object as null // object message = null; // Create a message object depending on the message type // switch (MessageId) { case WimMessageType.Alignment: message = new WimMessageAlignment(wParam, lParam); break; case WimMessageType.CleanupScanningDrive: message = new WimMessageCleanupScanningDrive(wParam, lParam); break; case WimMessageType.CleanupUnmountingImage: message = new WimMessageCleanupUnmountingImage(wParam, lParam); break; case WimMessageType.Compress: message = new WimMessageCompress(wParam, lParam); break; case WimMessageType.Error: message = new WimMessageError(wParam, lParam); break; case WimMessageType.FileInfo: message = new WimMessageFileInfo(wParam, lParam); break; case WimMessageType.ImageAlreadyMounted: message = new WimMessageImageAlreadyMounted(wParam, lParam); break; case WimMessageType.Info: message = new WimMessageInformation(wParam, lParam); break; case WimMessageType.MountCleanupProgress: message = new WimMessageMountCleanupProgress(wParam, lParam); break; case WimMessageType.Process: message = new WimMessageProcess(wParam, lParam); break; case WimMessageType.Progress: message = new WimMessageProgress(wParam, lParam); break; case WimMessageType.QueryAbort: break; case WimMessageType.Retry: message = new WimMessageRetry(wParam, lParam); break; case WimMessageType.Scanning: message = new WimMessageScanning(wParam, lParam); break; case WimMessageType.SetPosition: message = new WimMessageSetPosition(wParam, lParam); break; case WimMessageType.SetRange: message = new WimMessageSetRange(wParam, lParam); break; case WimMessageType.Split: message = new WimMessageSplit(wParam, lParam); break; case WimMessageType.StaleMountDirectory: message = new WimMessageStaleMountDirectory(wParam, lParam); break; case WimMessageType.StaleMountFile: message = new WimMessageStaleMountFile(wParam, lParam); break; case WimMessageType.StepIt: break; case WimMessageType.Text: message = new WimMessageText(wParam, lParam); break; case WimMessageType.Warning: message = new WimMessageWarning(wParam, lParam); break; case WimMessageType.WarningObjectId: message = new WimMessageWarningObjectId(wParam, lParam); break; default: // Some messages are sent that aren't documented, so they are discarded and not sent to the user at this time // When the messages are documented, they can be added to this wrapper // return(WimMessageResult.Done); } // Call the users callback, pass the message type, message, and user data. Return the users result value. // return(_callback(MessageId, message, _userData)); }
private WimMessageResult TestMessageCallback(WimMessageType messageType, object message, object userData) { return(WimMessageResult.Done); }