/// <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); }