using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Interop.Lmx; [ComImport] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] [Guid("C9B2ADCD-A086-488F-907D-1144176DADB2")] public interface IScheduler { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void Initialize([In][MarshalAs(UnmanagedType.Interface)] WatchdogObject pWatchdog, [In][MarshalAs(UnmanagedType.IUnknown)] object pAccessManager, [In][MarshalAs(UnmanagedType.Interface)] ICheckpointer pCheckpointer, [In][MarshalAs(UnmanagedType.IUnknown)] object objectSyncManager); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void Run([ComAliasName("Interop.Lmx.EngineExitStatus")] ref EngineExitStatus exitStatus); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void RegisterAutomationObject([In][MarshalAs(UnmanagedType.LPWStr)] string Name, [In] int id, [In][MarshalAs(UnmanagedType.Interface)] CoBaseRuntimeObject pAutomationObject, [In][MarshalAs(UnmanagedType.Interface)] MxReference pMxReference, [In] int RelativeOrder); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void UnRegisterAutomationObject([In] int id); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void SetScanPeriod([In] int ScanPeriod); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void SetScanState([In] int ObjectID, [In] bool ScanState); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void GetObjectTimeStamp(out _FILETIME pFileTime, out short offset); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void CheckpointObjects(); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void Shutdown(); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void RegisterSchedulerClient([In] uint callbackMask, [In][MarshalAs(UnmanagedType.Interface)] ISchedulerClient schedulerClient, out int cookie); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void UnregisterSchedulerClient([In] int cookie); }