using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Interop.Lmx; [ComImport] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] [ComConversionLoss] [Guid("22595C0F-28B9-11D3-87E0-00A0C982C01C")] public interface IBootstrapProcessController { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void StartPlatformProcess([In] int lPrivateData, [In][MarshalAs(UnmanagedType.LPWStr)] string szVendor, [In][MarshalAs(UnmanagedType.LPWStr)] string szExecutable, [In][MarshalAs(UnmanagedType.LPWStr)] string szCmdLnArgs, [In][MarshalAs(UnmanagedType.LPWStr)] string szProcessCtrlArgs, [MarshalAs(UnmanagedType.BStr)] out string pszProcessId); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void ShutdownPlatformProcess([In][MarshalAs(UnmanagedType.LPWStr)] string szProcessId, [In] int lmsShutdownTimeout); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void GetPlatformProcessStatus([In][MarshalAs(UnmanagedType.LPWStr)] string szProcessId, out tagPlatformProcessStatus pProcessRunState); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void ShutdownAllPlatformProcesses(); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void GetPlatformProcessList(out int plTotalProcesses, [Out] IntPtr ppPlatformProcessList); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void SetCmdStartOptions([In] int lProcessId, [In][MarshalAs(UnmanagedType.LPWStr)] string szCmdOption); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void GetCmdStartOptions([In] int lProcessId, [MarshalAs(UnmanagedType.BStr)] out string pszCmdOption); }