Пример #1
0
        /// <summary>
        /// 开启Socket服务
        /// </summary>
        /// <param name="serviceName">服务名</param>
        /// <param name="serviceSocket">Socket链接</param>
        /// <returns></returns>
        private bool StartSocketService(string serviceName, ref int serviceSocket)
        {
            if (serviceSocket > 0) //已经开启服务
            {
                return(true);
            }

            if (!isConnected)
            {
                if (Connect() != (int)kAMDError.kAMDSuccess)
                {
                    Console.WriteLine("StartService()执行Connect()失败");
                    return(false);
                }
            }

            bool openSession = false;

            if (!isSessionOpen)
            {
                var kAMDSuccess = StartSession();
                if (kAMDSuccess == kAMDError.kAMDSuccess)
                {
                    openSession = true;
                }
                else
                {
                    return(false);
                }
            }

            var result = false;
            var zero   = IntPtr.Zero;

            if (MobileDevice.AMDeviceSecureStartService(DevicePtr, CoreFoundation.StringToCFString(serviceName), IntPtr.Zero, ref zero) == (int)kAMDError.kAMDSuccess)
            {
                serviceSocket = MobileDevice.AMDServiceConnectionGetSocket(zero);
                if (serviceSocket > 0)
                {
                    SocketContext         = zero;
                    DeviceSecureIOContext = MobileDevice.AMDServiceConnectionGetSecureIOContext(zero);
                }
                result = true;
            }
            else if (MobileDevice.AMDeviceStartService(DevicePtr, CoreFoundation.StringToCFString(serviceName), ref serviceSocket, IntPtr.Zero) == (int)kAMDError.kAMDSuccess)
            {
                result = true;
            }

            if (openSession)
            {
                StopSession();
            }

            return(result);
        }