using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Interop.Lmx; [ComImport] [ClassInterface(ClassInterfaceType.None)] [TypeLibType(TypeLibTypeFlags.FCanCreate)] [Guid("85209FB2-0BA1-4594-BBC4-59D3DDAB823D")] public class DataConsumerClass : IDataConsumer1, DataConsumer { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] public virtual extern void RegisterCallback([In][MarshalAs(UnmanagedType.Interface)] IDataConsumerCallback pCallback); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] public virtual extern void UnregisterCallback(); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] public virtual extern int ResolveNamespace([In][MarshalAs(UnmanagedType.BStr)] string bstrNamespace); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] public virtual extern 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)] public virtual extern void Subscribe([In] int lNamespaceId, [In] int lItemId, [In] ulong ulUserData, [In] int bActive); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] public virtual extern void UnregisterReference([In] int lNamespaceId, [In] int lItemId); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] public virtual extern void ActivateSuspend([In] int lNamespaceId, [In] int lItemId, [In] ulong ulUserData, [In] int bActive); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] public virtual extern 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)] public virtual extern 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)] public virtual extern 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)] public virtual extern uint ProcessMessages(out int lSize, [Out] IntPtr updates, [Out] IntPtr pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] public virtual extern 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)] public virtual extern uint ProcessRegistration(out int lSize, [Out] IntPtr responses, [Out] IntPtr pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] public virtual extern 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)] public virtual extern uint ProcessSubscription(out int lSize, [Out] IntPtr responses, [Out] IntPtr pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] public virtual extern 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)] public virtual extern uint ProcessUnregister(out int lSize, [Out] IntPtr responses, [Out] IntPtr pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] public virtual extern 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)] public virtual extern uint ProcessWriteComplete(out int lSize, [Out] IntPtr responses, [Out] IntPtr pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] public virtual extern 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)] public virtual extern uint ProcessActivateSuspend(out int lSize, [Out] IntPtr responses, [Out] IntPtr pResultCode); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] public virtual extern 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)] public virtual extern void IsConnected([In] int namespaceId, out int connected); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] public virtual extern void Shutdown(); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] public virtual extern void UnregisterReferenceEx([In] int lNamespaceId, [In] int lItemId, [In] int isSubscribed); }