Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        /// <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);
 }