using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Interop.Lmx; [ComImport] [ComConversionLoss] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] [Guid("CF507A59-D4E6-480D-B38E-7D8B035B8C94")] public interface IDataConsumer { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void RegisterCallback([In][MarshalAs(UnmanagedType.Interface)] IDataConsumerCallback pCallback); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void UnregisterCallback(); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] int ResolveNamespace([In][MarshalAs(UnmanagedType.BStr)] string bstrNamespace); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void ResolveReference([In] int lNamespaceId, [In][MarshalAs(UnmanagedType.BStr)] string bstrName, [In][MarshalAs(UnmanagedType.BStr)] string bstrContext, [In] int lItemId, [In] ulong ulUserData); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void Subscribe([In] int lNamespaceId, [In] int lItemId, [In] ulong ulUserData, [In] int bActive); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void UnregisterReference([In] int lNamespaceId, [In] int lItemId); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void ActivateSuspend([In] int lNamespaceId, [In] int lItemId, [In] ulong ulUserData, [In] int bActive); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void Write([In] int lNamespaceId, [In] int lItemId, [In] ulong ulUserData, [In] ref Guid userId, [In] ref Guid verifierId, [In] bool bUserVerified, [In] _FILETIME ItemTimestamp, [In] uint ItemQuality, [In] ref _IVariant ItemValue, [In] uint MxOperationType, [In] int arrayIndex, [In] bool bArrayIndexValid); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void Write2([In] int lNamespaceId, [In] int lItemId, [In] ulong ulUserData, [In] ref Guid userId, [In] ref Guid verifierId, [In] bool bUserVerified, [In] uint ItemQuality, [In][MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_RECORD)] IDataVariant[] ItemValue, [In] uint MxOperationType, [In] int arrayIndex, [In] bool bArrayIndexValid); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void WriteWithReasonDesc([In] int lNamespaceId, [In] int lItemId, [In] ulong ulUserData, [In] ref Guid userId, [In] ref Guid verifierId, [In] bool bUserVerified, [In] _FILETIME ItemTimestamp, [In] short ItemQuality, [In] ref _IVariant ItemValue, [In][MarshalAs(UnmanagedType.LPWStr)] string reasonDescription, [In] uint MxOperationType, [In] int arrayIndex, [In] bool bArrayIndexValid); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] uint ProcessMessages(out int lSize, [Out] IntPtr updates, [Out] IntPtr pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] uint ProcessMessages2(out int lSize, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_RECORD)] out ItemDataUpdate2[] updates, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_RECORD)] out MxResultCode[] pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] uint ProcessRegistration(out int lSize, [Out] IntPtr responses, [Out] IntPtr pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] uint ProcessRegistration2(out int lSize, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_RECORD)] out ItemRegistrationResponse[] responses, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_RECORD)] out MxResultCode[] pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] uint ProcessSubscription(out int lSize, [Out] IntPtr responses, [Out] IntPtr pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] uint ProcessSubscription2(out int lSize, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_RECORD)] out ItemSubscriptionResponse[] responses, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_RECORD)] out MxResultCode[] pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] uint ProcessUnregister(out int lSize, [Out] IntPtr responses, [Out] IntPtr pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] uint ProcessUnregister2(out int lSize, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_RECORD)] out ItemUnregisterResponse[] responses, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_RECORD)] out MxResultCode[] pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] uint ProcessWriteComplete(out int lSize, [Out] IntPtr responses, [Out] IntPtr pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] uint ProcessWriteComplete2(out int lSize, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_RECORD)] out ItemWriteResponse[] responses, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_RECORD)] out MxResultCode[] pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] uint ProcessActivateSuspend(out int lSize, [Out] IntPtr responses, [Out] IntPtr pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] uint ProcessActivateSuspend2(out int lSize, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_RECORD)] out ItemActiveResponse[] responses, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_RECORD)] out MxResultCode[] pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void IsConnected([In] int namespaceId, out int connected); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] void Shutdown(); }