コード例 #1
0
        public override void Execute(Mirror mirror, IAsyncProgress asyn)
        {
            try
            {
                Source     = mirror;
                TotalSize  = Source.Block.Size;
                MirrorAsyn = asyn;

                MirrorAsyn.Start(TotalSize);

                var device = Source.Source as Device;

                var service = X86DLLClientSingle.Instance.AndroidMirrorAPIChannel;

                var openHandle = service.AndroidMirror_OpenDevice(device.ID);
                if (0 == openHandle)
                {
                    LoggerManagerSingle.Instance.Error(string.Format("安卓手机镜像出错!OpenDevice失败,设备ID:{0}", device.ID));
                    MirrorAsyn.IsSuccess = false;
                    MirrorAsyn.Stop();
                    return;
                }

                var result = service.AndroidMirror_Initialize(openHandle, 61440, 0);
                if (0 != result)
                {
                    LoggerManagerSingle.Instance.Error(string.Format("安卓手机镜像出错!Initialize失败,设备ID:{0} 错误码:{1}", device.ID, result));
                    MirrorAsyn.IsSuccess = false;
                    MirrorAsyn.Stop();
                    return;
                }

                CurSchedule  = 0;
                IsStop       = false;
                Source.Local = FileHelper.ConnectPath(Source.Target, Source.TargetFile);
                FileHelper.CreateFileDirectory(Source.Local);
                MirrorStream = new FileStream(Source.Local, FileMode.Create);

                X86DLLClientSingle.Instance.ClientCallback._ImageDataCallBack += ImageDataCallBack;

                result = service.AndroidMirror_ImageDataZone(openHandle, Source.Block.Block, 0, -1);
                if (0 != result)
                {
                    LoggerManagerSingle.Instance.Error(string.Format("安卓手机镜像出错!ImageDataZone失败,设备ID:{0} 错误码:{1}", device.ID, result));
                    MirrorAsyn.IsSuccess = false;
                    MirrorAsyn.Stop();
                    return;
                }
            }
            catch (Exception ex)
            {
                LoggerManagerSingle.Instance.Error("安卓手机镜像出错!", ex);
                MirrorAsyn.IsSuccess = false;
                MirrorAsyn.Stop();
            }
            finally
            {
                X86DLLClientSingle.Instance.ClientCallback._ImageDataCallBack -= ImageDataCallBack;
                MirrorStream?.Flush();
                MirrorStream?.Close();
                MirrorStream = null;
                MirrorAsyn   = null;
            }
        }