#region Copyright (c) 2022-2023 Technosoftware GmbH. All rights reserved
//-----------------------------------------------------------------------------
// Copyright (c) 2022-2023 Technosoftware GmbH. All rights reserved
// Web: https://technosoftware.com
//
// The Software is based on the OPC Foundation MIT License.
// The complete license agreement for that can be found here:
// http://opcfoundation.org/License/MIT/1.00/
//-----------------------------------------------------------------------------
#endregion Copyright (c) 2011-2023 Technosoftware GmbH. All rights reserved
#region Using Directives
using System;
using System.Runtime.InteropServices;
#endregion
#pragma warning disable 1591
namespace Technosoftware.OpcRcw.Ae
{
///
[ComImport]
[GuidAttribute("58E13251-AC87-11d1-84D5-00608CB8A7E9")]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
public interface CATID_OPCAEServer10 { }
///
public enum OPCAEBROWSEDIRECTION
{
OPCAE_BROWSE_UP = 1,
OPCAE_BROWSE_DOWN,
OPCAE_BROWSE_TO
}
///
public enum OPCAEBROWSETYPE
{
OPC_AREA = 1,
OPC_SOURCE
}
///
public enum OPCEVENTSERVERSTATE
{
OPCAE_STATUS_RUNNING = 1,
OPCAE_STATUS_FAILED,
OPCAE_STATUS_NOCONFIG,
OPCAE_STATUS_SUSPENDED,
OPCAE_STATUS_TEST,
OPCAE_STATUS_COMM_FAULT
}
///
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct FILETIME
{
public int dwLowDateTime;
public int dwHighDateTime;
}
///
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct ONEVENTSTRUCT
{
[MarshalAs(UnmanagedType.I2)]
public short wChangeMask;
[MarshalAs(UnmanagedType.I2)]
public short wNewState;
[MarshalAs(UnmanagedType.LPWStr)]
public string szSource;
public FILETIME ftTime;
[MarshalAs(UnmanagedType.LPWStr)]
public string szMessage;
[MarshalAs(UnmanagedType.I4)]
public int dwEventType;
[MarshalAs(UnmanagedType.I4)]
public int dwEventCategory;
[MarshalAs(UnmanagedType.I4)]
public int dwSeverity;
[MarshalAs(UnmanagedType.LPWStr)]
public string szConditionName;
[MarshalAs(UnmanagedType.LPWStr)]
public string szSubconditionName;
[MarshalAs(UnmanagedType.I2)]
public short wQuality;
[MarshalAs(UnmanagedType.I2)]
public short wReserved;
[MarshalAs(UnmanagedType.I4)]
public int bAckRequired;
public FILETIME ftActiveTime;
[MarshalAs(UnmanagedType.I4)]
public int dwCookie;
[MarshalAs(UnmanagedType.I4)]
public int dwNumEventAttrs;
public IntPtr pEventAttributes;
[MarshalAs(UnmanagedType.LPWStr)]
public string szActorID;
}
///
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct OPCEVENTSERVERSTATUS
{
public FILETIME ftStartTime;
public FILETIME ftCurrentTime;
public FILETIME ftLastUpdateTime;
public OPCEVENTSERVERSTATE dwServerState;
[MarshalAs(UnmanagedType.I2)]
public short wMajorVersion;
[MarshalAs(UnmanagedType.I2)]
public short wMinorVersion;
[MarshalAs(UnmanagedType.I2)]
public short wBuildNumber;
[MarshalAs(UnmanagedType.I2)]
public short wReserved;
[MarshalAs(UnmanagedType.LPWStr)]
public string szVendorInfo;
}
///
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct OPCCONDITIONSTATE
{
[MarshalAs(UnmanagedType.I2)]
public short wState;
[MarshalAs(UnmanagedType.I2)]
public short wReserved1;
[MarshalAs(UnmanagedType.LPWStr)]
public string szActiveSubCondition;
[MarshalAs(UnmanagedType.LPWStr)]
public string szASCDefinition;
[MarshalAs(UnmanagedType.I4)]
public int dwASCSeverity;
[MarshalAs(UnmanagedType.LPWStr)]
public string szASCDescription;
[MarshalAs(UnmanagedType.I2)]
public short wQuality;
[MarshalAs(UnmanagedType.I2)]
public short wReserved2;
public FILETIME ftLastAckTime;
public FILETIME ftSubCondLastActive;
public FILETIME ftCondLastActive;
public FILETIME ftCondLastInactive;
[MarshalAs(UnmanagedType.LPWStr)]
public string szAcknowledgerID;
[MarshalAs(UnmanagedType.LPWStr)]
public string szComment;
[MarshalAs(UnmanagedType.I4)]
public int dwNumSCs;
public IntPtr pszSCNames;
public IntPtr pszSCDefinitions;
public IntPtr pdwSCSeverities;
public IntPtr pszSCDescriptions;
public int dwNumEventAttrs;
public IntPtr pEventAttributes;
public IntPtr pErrors;
}
///
[ComImport]
[GuidAttribute("65168851-5783-11D1-84A0-00608CB8A7E9")]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCEventServer
{
void GetStatus(
out IntPtr ppEventServerStatus);
void CreateEventSubscription(
[MarshalAs(UnmanagedType.I4)]
int bActive,
[MarshalAs(UnmanagedType.I4)]
int dwBufferTime,
[MarshalAs(UnmanagedType.I4)]
int dwMaxSize,
[MarshalAs(UnmanagedType.I4)]
int hClientSubscription,
ref Guid riid,
[Out][MarshalAs(UnmanagedType.IUnknown, IidParameterIndex=4)]
out object ppUnk,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwRevisedBufferTime,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwRevisedMaxSize);
void QueryAvailableFilters(
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwFilterMask);
void QueryEventCategories(
[MarshalAs(UnmanagedType.I4)]
int dwEventType,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwCount,
[Out]
out IntPtr ppdwEventCategories,
[Out]
out IntPtr ppszEventCategoryDescs);
[PreserveSig]
int QueryConditionNames(
[MarshalAs(UnmanagedType.I4)]
int dwEventCategory,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwCount,
[Out]
out IntPtr ppszConditionNames);
void QuerySubConditionNames(
[MarshalAs(UnmanagedType.LPWStr)]
string szConditionName,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwCount,
[Out]
out IntPtr ppszSubConditionNames);
void QuerySourceConditions(
[MarshalAs(UnmanagedType.LPWStr)]
string szSource,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwCount,
[Out]
out IntPtr ppszConditionNames);
void QueryEventAttributes(
[MarshalAs(UnmanagedType.I4)]
int dwEventCategory,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwCount,
[Out]
out IntPtr ppdwAttrIDs,
[Out]
out IntPtr ppszAttrDescs,
[Out]
out IntPtr ppvtAttrTypes);
void TranslateToItemIDs(
[MarshalAs(UnmanagedType.LPWStr)]
string szSource,
[MarshalAs(UnmanagedType.I4)]
int dwEventCategory,
[MarshalAs(UnmanagedType.LPWStr)]
string szConditionName,
[MarshalAs(UnmanagedType.LPWStr)]
string szSubconditionName,
[MarshalAs(UnmanagedType.I4)]
int dwCount,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.I4, SizeParamIndex=4)]
int[] pdwAssocAttrIDs,
out IntPtr ppszAttrItemIDs,
out IntPtr ppszNodeNames,
out IntPtr ppCLSIDs);
void GetConditionState(
[MarshalAs(UnmanagedType.LPWStr)]
string szSource,
[MarshalAs(UnmanagedType.LPWStr)]
string szConditionName,
[MarshalAs(UnmanagedType.I4)]
int dwNumEventAttrs,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.I4, SizeParamIndex=2)]
int[] pdwAttributeIDs,
[Out]
out IntPtr ppConditionState);
void EnableConditionByArea(
[MarshalAs(UnmanagedType.I4)]
int dwNumAreas,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszAreas);
void EnableConditionBySource(
[MarshalAs(UnmanagedType.I4)]
int dwNumSources,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszSources);
void DisableConditionByArea(
[MarshalAs(UnmanagedType.I4)]
int dwNumAreas,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszAreas);
void DisableConditionBySource(
[MarshalAs(UnmanagedType.I4)]
int dwNumSources,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszSources);
void AckCondition(
[MarshalAs(UnmanagedType.I4)]
int dwCount,
[MarshalAs(UnmanagedType.LPWStr)]
string szAcknowledgerID,
[MarshalAs(UnmanagedType.LPWStr)]
string szComment,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszSource,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] szConditionName,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPStruct, SizeParamIndex=0)]
FILETIME[] pftActiveTime,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.I4, SizeParamIndex=0)]
int[] pdwCookie,
[Out]
out IntPtr ppErrors);
void CreateAreaBrowser(
ref Guid riid,
[Out][MarshalAs(UnmanagedType.IUnknown, IidParameterIndex=0)]
out object ppUnk);
}
///
[ComImport]
[GuidAttribute("65168855-5783-11D1-84A0-00608CB8A7E9")]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCEventSubscriptionMgt
{
void SetFilter(
[MarshalAs(UnmanagedType.I4)]
int dwEventType,
[MarshalAs(UnmanagedType.I4)]
int dwNumCategories,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.I4, SizeParamIndex=1)]
int[] pdwEventCategories,
[MarshalAs(UnmanagedType.I4)]
int dwLowSeverity,
[MarshalAs(UnmanagedType.I4)]
int dwHighSeverity,
[MarshalAs(UnmanagedType.I4)]
int dwNumAreas,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=5)]
string[] pszAreaList,
[MarshalAs(UnmanagedType.I4)]
int dwNumSources,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=7)]
string[] pszSourceList);
void GetFilter(
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwEventType,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwNumCategories,
[Out]
out IntPtr ppdwEventCategories,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwLowSeverity,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwHighSeverity,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwNumAreas,
[Out]
out IntPtr ppszAreaList,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwNumSources,
[Out]
out IntPtr ppszSourceList);
void SelectReturnedAttributes(
[MarshalAs(UnmanagedType.I4)]
int dwEventCategory,
[MarshalAs(UnmanagedType.I4)]
int dwCount,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.I4, SizeParamIndex=1)]
int[] dwAttributeIDs);
void GetReturnedAttributes(
[MarshalAs(UnmanagedType.I4)]
int dwEventCategory,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwCount,
[Out]
out IntPtr ppdwAttributeIDs);
void Refresh(
[MarshalAs(UnmanagedType.I4)]
int dwConnection);
void CancelRefresh(
[MarshalAs(UnmanagedType.I4)]
int dwConnection);
void GetState(
[Out][MarshalAs(UnmanagedType.I4)]
out int pbActive,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwBufferTime,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwMaxSize,
[Out][MarshalAs(UnmanagedType.I4)]
out int phClientSubscription);
void SetState(
IntPtr pbActive,
IntPtr pdwBufferTime,
IntPtr pdwMaxSize,
[MarshalAs(UnmanagedType.I4)]
int hClientSubscription,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwRevisedBufferTime,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwRevisedMaxSize);
}
///
[ComImport]
[GuidAttribute("65168857-5783-11D1-84A0-00608CB8A7E9")]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCEventAreaBrowser
{
void ChangeBrowsePosition(
OPCAEBROWSEDIRECTION dwBrowseDirection,
[MarshalAs(UnmanagedType.LPWStr)]
string szString);
void BrowseOPCAreas(
OPCAEBROWSETYPE dwBrowseFilterType,
[MarshalAs(UnmanagedType.LPWStr)]
string szFilterCriteria,
[Out]
out OpcRcw.Comn.IEnumString ppIEnumString);
void GetQualifiedAreaName(
[MarshalAs(UnmanagedType.LPWStr)]
string szAreaName,
[Out][MarshalAs(UnmanagedType.LPWStr)]
out string pszQualifiedAreaName);
void GetQualifiedSourceName(
[MarshalAs(UnmanagedType.LPWStr)]
string szSourceName,
[Out][MarshalAs(UnmanagedType.LPWStr)]
out string pszQualifiedSourceName);
}
///
[ComImport]
[GuidAttribute("6516885F-5783-11D1-84A0-00608CB8A7E9")]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCEventSink
{
void OnEvent(
[MarshalAs(UnmanagedType.I4)]
int hClientSubscription,
[MarshalAs(UnmanagedType.I4)]
int bRefresh,
[MarshalAs(UnmanagedType.I4)]
int bLastRefresh,
[MarshalAs(UnmanagedType.I4)]
int dwCount,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPStruct, SizeParamIndex=3)]
ONEVENTSTRUCT[] pEvents);
}
///
[ComImport]
[GuidAttribute("71BBE88E-9564-4bcd-BCFC-71C558D94F2D")]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCEventServer2 // : IOPCEventServer
{
void GetStatus(
out IntPtr ppEventServerStatus);
void CreateEventSubscription(
[MarshalAs(UnmanagedType.I4)]
int bActive,
[MarshalAs(UnmanagedType.I4)]
int dwBufferTime,
[MarshalAs(UnmanagedType.I4)]
int dwMaxSize,
[MarshalAs(UnmanagedType.I4)]
int hClientSubscription,
ref Guid riid,
[Out][MarshalAs(UnmanagedType.IUnknown, IidParameterIndex=4)]
out object ppUnk,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwRevisedBufferTime,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwRevisedMaxSize);
void QueryAvailableFilters(
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwFilterMask);
void QueryEventCategories(
[MarshalAs(UnmanagedType.I4)]
int dwEventType,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwCount,
[Out]
out IntPtr ppdwEventCategories,
[Out]
out IntPtr ppszEventCategoryDescs);
[PreserveSig]
int QueryConditionNames(
[MarshalAs(UnmanagedType.I4)]
int dwEventCategory,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwCount,
[Out]
out IntPtr ppszConditionNames);
void QuerySubConditionNames(
[MarshalAs(UnmanagedType.LPWStr)]
string szConditionName,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwCount,
[Out]
out IntPtr ppszSubConditionNames);
void QuerySourceConditions(
[MarshalAs(UnmanagedType.LPWStr)]
string szSource,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwCount,
[Out]
out IntPtr ppszConditionNames);
void QueryEventAttributes(
[MarshalAs(UnmanagedType.I4)]
int dwEventCategory,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwCount,
[Out]
out IntPtr ppdwAttrIDs,
[Out]
out IntPtr ppszAttrDescs,
[Out]
out IntPtr ppvtAttrTypes);
void TranslateToItemIDs(
[MarshalAs(UnmanagedType.LPWStr)]
string szSource,
[MarshalAs(UnmanagedType.I4)]
int dwEventCategory,
[MarshalAs(UnmanagedType.LPWStr)]
string szConditionName,
[MarshalAs(UnmanagedType.LPWStr)]
string szSubconditionName,
[MarshalAs(UnmanagedType.I4)]
int dwCount,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.I4, SizeParamIndex=4)]
int[] pdwAssocAttrIDs,
out IntPtr ppszAttrItemIDs,
out IntPtr ppszNodeNames,
out IntPtr ppCLSIDs);
void GetConditionState(
[MarshalAs(UnmanagedType.LPWStr)]
string szSource,
[MarshalAs(UnmanagedType.LPWStr)]
string szConditionName,
[MarshalAs(UnmanagedType.I4)]
int dwNumEventAttrs,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.I4, SizeParamIndex=2)]
int[] pdwAttributeIDs,
[Out]
out IntPtr ppConditionState);
void EnableConditionByArea(
[MarshalAs(UnmanagedType.I4)]
int dwNumAreas,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszAreas);
void EnableConditionBySource(
[MarshalAs(UnmanagedType.I4)]
int dwNumSources,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszSources);
void DisableConditionByArea(
[MarshalAs(UnmanagedType.I4)]
int dwNumAreas,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszAreas);
void DisableConditionBySource(
[MarshalAs(UnmanagedType.I4)]
int dwNumSources,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszSources);
void AckCondition(
[MarshalAs(UnmanagedType.I4)]
int dwCount,
[MarshalAs(UnmanagedType.LPWStr)]
string szAcknowledgerID,
[MarshalAs(UnmanagedType.LPWStr)]
string szComment,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszSource,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] szConditionName,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPStruct, SizeParamIndex=0)]
FILETIME[] pftActiveTime,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.I4, SizeParamIndex=0)]
int[] pdwCookie,
[Out]
out IntPtr ppErrors);
void CreateAreaBrowser(
ref Guid riid,
[Out][MarshalAs(UnmanagedType.IUnknown, IidParameterIndex=0)]
out object ppUnk);
void EnableConditionByArea2(
[MarshalAs(UnmanagedType.I4)]
int dwNumAreas,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszAreas,
[Out]
out IntPtr ppErrors);
void EnableConditionBySource2(
[MarshalAs(UnmanagedType.I4)]
int dwNumSources,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszSources,
[Out]
out IntPtr ppErrors);
void DisableConditionByArea2(
[MarshalAs(UnmanagedType.I4)]
int dwNumAreas,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszAreas,
[Out]
out IntPtr ppErrors);
void DisableConditionBySource2(
[MarshalAs(UnmanagedType.I4)]
int dwNumSources,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszSources,
[Out]
out IntPtr ppErrors);
void GetEnableStateByArea(
[MarshalAs(UnmanagedType.I4)]
int dwNumAreas,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszAreas,
[Out]
out IntPtr pbEnabled,
[Out]
out IntPtr pbEffectivelyEnabled,
[Out]
out IntPtr ppErrors);
void GetEnableStateBySource(
[MarshalAs(UnmanagedType.I4)]
int dwNumSources,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=0)]
string[] pszSources,
out IntPtr pbEnabled,
out IntPtr pbEffectivelyEnabled,
out IntPtr ppErrors);
};
///
[ComImport]
[GuidAttribute("94C955DC-3684-4ccb-AFAB-F898CE19AAC3")]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCEventSubscriptionMgt2 // : IOPCEventSubscriptionMgt
{
void SetFilter(
[MarshalAs(UnmanagedType.I4)]
int dwEventType,
[MarshalAs(UnmanagedType.I4)]
int dwNumCategories,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.I4, SizeParamIndex=1)]
int[] pdwEventCategories,
[MarshalAs(UnmanagedType.I4)]
int dwLowSeverity,
[MarshalAs(UnmanagedType.I4)]
int dwHighSeverity,
[MarshalAs(UnmanagedType.I4)]
int dwNumAreas,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=5)]
string[] pszAreaList,
[MarshalAs(UnmanagedType.I4)]
int dwNumSources,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPWStr, SizeParamIndex=7)]
string[] pszSourceList);
void GetFilter(
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwEventType,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwNumCategories,
[Out]
out IntPtr ppdwEventCategories,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwLowSeverity,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwHighSeverity,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwNumAreas,
[Out]
out IntPtr ppszAreaList,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwNumSources,
[Out]
out IntPtr ppszSourceList);
void SelectReturnedAttributes(
[MarshalAs(UnmanagedType.I4)]
int dwEventCategory,
[MarshalAs(UnmanagedType.I4)]
int dwCount,
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.I4, SizeParamIndex=1)]
int[] dwAttributeIDs);
void GetReturnedAttributes(
[MarshalAs(UnmanagedType.I4)]
int dwEventCategory,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwCount,
[Out]
out IntPtr ppdwAttributeIDs);
void Refresh(
[MarshalAs(UnmanagedType.I4)]
int dwConnection);
void CancelRefresh(
[MarshalAs(UnmanagedType.I4)]
int dwConnection);
void GetState(
[Out][MarshalAs(UnmanagedType.I4)]
out int pbActive,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwBufferTime,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwMaxSize,
[Out][MarshalAs(UnmanagedType.I4)]
out int phClientSubscription);
void SetState(
IntPtr pbActive,
IntPtr pdwBufferTime,
IntPtr pdwMaxSize,
[MarshalAs(UnmanagedType.I4)]
int hClientSubscription,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwRevisedBufferTime,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwRevisedMaxSize);
void SetKeepAlive(
[MarshalAs(UnmanagedType.I4)]
int dwKeepAliveTime,
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwRevisedKeepAliveTime);
void GetKeepAlive(
[Out][MarshalAs(UnmanagedType.I4)]
out int pdwKeepAliveTime);
}
///
public static class Constants
{
// category description string.
public const string OPC_CATEGORY_DESCRIPTION_AE10 = "OPC Alarm & Event Server Version 1.0";
// state bit masks.
public const int CONDITION_ENABLED = 0x0001;
public const int CONDITION_ACTIVE = 0x0002;
public const int CONDITION_ACKED = 0x0004;
// bit masks for change mask.
public const int CHANGE_ACTIVE_STATE = 0x0001;
public const int CHANGE_ACK_STATE = 0x0002;
public const int CHANGE_ENABLE_STATE = 0x0004;
public const int CHANGE_QUALITY = 0x0008;
public const int CHANGE_SEVERITY = 0x0010;
public const int CHANGE_SUBCONDITION = 0x0020;
public const int CHANGE_MESSAGE = 0x0040;
public const int CHANGE_ATTRIBUTE = 0x0080;
// event type.
public const int SIMPLE_EVENT = 0x0001;
public const int TRACKING_EVENT = 0x0002;
public const int CONDITION_EVENT = 0x0004;
public const int ALL_EVENTS = 0x0007;
// bit masks for QueryAvailableFilters().
public const int FILTER_BY_EVENT = 0x0001;
public const int FILTER_BY_CATEGORY = 0x0002;
public const int FILTER_BY_SEVERITY = 0x0004;
public const int FILTER_BY_AREA = 0x0008;
public const int FILTER_BY_SOURCE = 0x0010;
}
}