File: OPC_Data_Srv.cs
Summary: OPC DA server interfaces wrapper class
-----------------------------------------------------------------------
This file is part of the Viscom OPC Code Samples.
Copyright(c) 2001 Viscom (www.viscomvisual.com) All rights reserved.
THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
======================================================================*/
using OPC.Data.Struct;
using System.Runtime.InteropServices;
using System;
using OPC.Data.Enum;
namespace OPC.Data.Interface
{
[ComImport, InterfaceType((short)1), Guid("63D5F430-CFE4-11D1-B2C8-0060083BA1FB")]
public interface CATID_OPCDAServer10
{
}
[ComImport, InterfaceType((short)1), Guid("63D5F432-CFE4-11D1-B2C8-0060083BA1FB")]
public interface CATID_OPCDAServer20
{
}
[ComImport, InterfaceType((short)1), Guid("CC603642-66D7-48F1-B69A-B625E73652D7")]
public interface CATID_OPCDAServer30
{
}
[ComImport, InterfaceType((short)1), Guid("3098EDA4-A006-48B2-A27F-247453959408")]
public interface CATID_XMLDAServer10
{
}
[ComVisible(true), ComImport,
Guid("F31DFDE2-07B6-11d2-B2D8-0060083BA1FB"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCCommon
{
[PreserveSig]
int SetLocaleID(
[In] int dwLcid);
void GetLocaleID(
[Out] out int pdwLcid);
[PreserveSig]
int QueryAvailableLocaleIDs(
[Out] out int pdwCount,
[Out] out IntPtr pdwLcid);
void GetErrorString(
[In] int dwError,
[Out, MarshalAs(UnmanagedType.LPWStr)] out string ppString);
void SetClientName(
[In, MarshalAs(UnmanagedType.LPWStr)] string szName);
}
[ComVisible(true), ComImport,
Guid("F31DFDE1-07B6-11d2-B2D8-0060083BA1FB"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCShutdown
{
void ShutdownRequest(
[In, MarshalAs(UnmanagedType.LPWStr)] string szReason);
}
[ComVisible(true), ComImport,
Guid("13486D50-4821-11D2-A494-3CB306C10000"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCServerList
{
void EnumClassesOfCategories(
[In] int cImplemented, // WARNING ONLY 1!!
[In] ref Guid catidImpl, // WARNING ONLY 1!!
[In] int cRequired, // WARNING ONLY 1!!
[In] ref Guid catidReq, // WARNING ONLY 1!!
[Out, MarshalAs(UnmanagedType.IUnknown)] out object ppUnk);
void GetClassDetails(
[In] ref Guid clsid,
[Out, MarshalAs(UnmanagedType.LPWStr)] out string ppszProgID,
[Out, MarshalAs(UnmanagedType.LPWStr)] out string ppszUserType);
void CLSIDFromProgID(
[In, MarshalAs(UnmanagedType.LPWStr)] string szProgId,
[Out] out Guid clsid);
}
[ComVisible(true), ComImport,
Guid("9DD0B56C-AD9E-43EE-8305-487F3188BF7A"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCServerList2
{
void EnumClassesOfCategories(
[In] int cImplemented, // WARNING ONLY 1!!
[In, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.Struct, SizeParamIndex = 0)] Guid[] catidImpl,
[In] int cRequired,
[In, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.Struct, SizeParamIndex = 2)] Guid[] catidReq,
[Out, MarshalAs(UnmanagedType.Interface)] out IOPCEnumGUID ppUnk);
void GetClassDetails(
[In] ref Guid clsid,
[Out, MarshalAs(UnmanagedType.LPWStr)] out string ppszProgID,
[Out, MarshalAs(UnmanagedType.LPWStr)] out string ppszUserType,
[Out, MarshalAs(UnmanagedType.LPWStr)] out string ppszVerIndProgID);
void CLSIDFromProgID(
[In, MarshalAs(UnmanagedType.LPWStr)] string szProgId,
[Out] out Guid clsid);
}
[ComVisible(true), ComImport,
Guid("0002E000-0000-0000-C000-000000000046"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IEnumGUID
{
void Next(
[In] int celt,
[In] IntPtr rgelt, // ptr to Out-Values!!
[Out] out int pceltFetched);
void Skip(
[In] int celt);
void Reset();
void Clone(
[Out, MarshalAs(UnmanagedType.IUnknown)] out object ppUnk);
}
[ComVisible(true), ComImport,
Guid("00000100-0000-0000-C000-000000000046")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IEnumUnknown
{
void Clone(out IEnumUnknown ppenum);
[PreserveSig]
int RemoteNext(int celt, object[] rgelt, out int pceltFetched);
void Reset();
[PreserveSig]
int Skip(int celt);
}
[ComVisible(true), ComImport,
Guid("00000101-0000-0000-C000-000000000046"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IEnumString
{
[PreserveSig]
int RemoteNext(
[In] int celt,
[Out, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr)] string[] rgelt,
[Out] out int pceltFetched);
int Skip(
[In] int celt);
void Reset();
void Clone(
[Out, MarshalAs(UnmanagedType.Interface)] out IEnumString ppUnk);
}
[ComVisible(true), ComImport,
Guid("55C382C8-21C7-4E88-96C1-BECFB1E3F483"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCEnumGUID
{
void Next(
[In] int celt,
[Out, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.Struct)] Guid[] rgelt,
[Out] out int pceltFetched);
void Skip(
[In] int celt);
void Reset();
void Clone(
[Out, MarshalAs(UnmanagedType.Interface)] out IOPCEnumGUID ppUnk);
}
[ComVisible(true), ComImport,
Guid("39c13a4d-011e-11d0-9675-0020afd8adb3"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCServer
{
[PreserveSig]
int AddGroup(
[In, MarshalAs(UnmanagedType.LPWStr)] string szName,
[In, MarshalAs(UnmanagedType.Bool)] bool bActive,
[In] int dwRequestedUpdateRate,
[In] int hClientGroup,
[In] IntPtr pTimeBias,
[In] IntPtr pPercentDeadband,
[In] int dwLCID,
[Out] out int phServerGroup,
[Out] out int pRevisedUpdateRate,
[In] ref Guid riid,
[Out, MarshalAs(UnmanagedType.IUnknown)] out object ppUnk);
void GetErrorString(
[In] int dwError,
[In] int dwLocale,
[Out, MarshalAs(UnmanagedType.LPWStr)] out string ppString);
[PreserveSig]
int GetGroupByName(
[In, MarshalAs(UnmanagedType.LPWStr)] string szName,
[In] ref Guid riid,
[Out, MarshalAs(UnmanagedType.IUnknown)] out object ppUnk);
[PreserveSig]
int GetStatus(
[Out, MarshalAs(UnmanagedType.LPStruct)] out OPCSERVERSTATUS ppServerStatus);
[PreserveSig]
int RemoveGroup(
[In] int hServerGroup,
[In, MarshalAs(UnmanagedType.Bool)] bool bForce);
[PreserveSig]
int CreateGroupEnumerator( // may return S_FALSE
[In] int dwScope,
[In] ref Guid riid,
[Out, MarshalAs(UnmanagedType.IUnknown)] out object ppUnk);
}
[ComVisible(true), ComImport,
Guid("39c13a4e-011e-11d0-9675-0020afd8adb3"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCServerPublicGroups
{
void GetPublicGroupByName(
[In, MarshalAs(UnmanagedType.LPWStr)] string szName,
[In] ref Guid riid,
[Out, MarshalAs(UnmanagedType.IUnknown)] out object ppUnk);
void RemovePublicGroup(
[In] int hServerGroup,
[In, MarshalAs(UnmanagedType.Bool)] bool bForce);
}
[ComVisible(true), ComImport,
Guid("39c13a4f-011e-11d0-9675-0020afd8adb3"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCBrowseServerAddressSpace
{
[PreserveSig]
int QueryOrganization(
[Out, MarshalAs(UnmanagedType.U4)] out OPCNAMESPACETYPE pNameSpaceType);
[PreserveSig]
int ChangeBrowsePosition(
[In, MarshalAs(UnmanagedType.U4)] OPCBROWSEDIRECTION dwBrowseDirection,
[In, MarshalAs(UnmanagedType.LPWStr)] string szName);
[PreserveSig]
int BrowseOPCItemIDs(
[In, MarshalAs(UnmanagedType.U4)] OPCBROWSETYPE dwBrowseFilterType,
[In, MarshalAs(UnmanagedType.LPWStr)] string szFilterCriteria,
[In, MarshalAs(UnmanagedType.U2)] short vtDataTypeFilter,
[In, MarshalAs(UnmanagedType.U4)] OPCACCESSRIGHTS dwAccessRightsFilter,
[Out, MarshalAs(UnmanagedType.Interface)] out IEnumString ppUnk);
[PreserveSig]
int GetItemID(
[In, MarshalAs(UnmanagedType.LPWStr)] string szItemDataID,
[Out, MarshalAs(UnmanagedType.LPWStr)] out string szItemID);
[PreserveSig]
int BrowseAccessPaths(
[In, MarshalAs(UnmanagedType.LPWStr)] string szItemID,
[Out, MarshalAs(UnmanagedType.Interface)] out IEnumString ppUnk);
}
[ComVisible(true), ComImport,
Guid("39c13a72-011e-11d0-9675-0020afd8adb3"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCItemProperties
{
[PreserveSig]
int QueryAvailableProperties(
[In, MarshalAs(UnmanagedType.LPWStr)] string szItemID,
[Out] out int dwCount,
[Out] out IntPtr ppPropertyIDs,
[Out] out IntPtr ppDescriptions,
[Out] out IntPtr ppvtDataTypes);
[PreserveSig]
int GetItemProperties(
[In, MarshalAs(UnmanagedType.LPWStr)] string szItemID,
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] int[] pdwPropertyIDs,
[Out] out IntPtr ppvData,
[Out] out IntPtr ppErrors);
[PreserveSig]
int LookupItemIDs(
[In, MarshalAs(UnmanagedType.LPWStr)] string szItemID,
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] int[] pdwPropertyIDs,
[Out] out IntPtr ppszNewItemIDs,
[Out] out IntPtr ppErrors);
}
[ComVisible(true),
Guid("39c13a50-011e-11d0-9675-0020afd8adb3"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCGroupStateMgt
{
void GetState(
[Out] out int pUpdateRate,
[Out, MarshalAs(UnmanagedType.Bool)] out bool pActive,
[Out, MarshalAs(UnmanagedType.LPWStr)] out string ppName,
[Out] out int pTimeBias,
[Out] out float pPercentDeadband,
[Out] out int pLCID,
[Out] out int phClientGroup,
[Out] out int phServerGroup);
[PreserveSig]
int SetState(
[In] IntPtr pRequestedUpdateRate,
[Out] out int pRevisedUpdateRate,
[In] IntPtr pActive,
[In] IntPtr pTimeBias,
[In] IntPtr pPercentDeadband,
[In] IntPtr pLCID,
[In] IntPtr phClientGroup);
void SetName(
[In, MarshalAs(UnmanagedType.LPWStr)] string szName);
void CloneGroup(
[In, MarshalAs(UnmanagedType.LPWStr)] string szName,
[In] ref Guid riid,
[Out, MarshalAs(UnmanagedType.IUnknown)] out object ppUnk);
}
[ComVisible(true),
Guid("8E368666-D72E-4F78-87ED-647611C61C9F"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCGroupStateMgt2
{
void GetState(
[Out] out int pUpdateRate,
[Out, MarshalAs(UnmanagedType.Bool)] out bool pActive,
[Out, MarshalAs(UnmanagedType.LPWStr)] out string ppName,
[Out] out int pTimeBias,
[Out] out float pPercentDeadband,
[Out] out int pLCID,
[Out] out int phClientGroup,
[Out] out int phServerGroup);
[PreserveSig]
int SetState(
[In, MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] int[] pRequestedUpdateRate,
[Out] out int pRevisedUpdateRate,
[In, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.Bool, SizeConst = 1)] bool[] pActive,
[In, MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] int[] pTimeBias,
[In, MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] float[] pPercentDeadband,
[In, MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] int[] pLCID,
[In, MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] int[] phClientGroup);
void SetName(
[In, MarshalAs(UnmanagedType.LPWStr)] string szName);
void CloneGroup(
[In, MarshalAs(UnmanagedType.LPWStr)] string szName,
[In] ref Guid riid,
[Out, MarshalAs(UnmanagedType.IUnknown)] out object ppUnk);
void SetKeepAlive(
[In] int dwKeepAliveTime,
[Out] out int pdwRevisedKeepAliveTime);
void GetKeepAlive(
[Out] out int pdwKeepAliveTime);
}
[ComVisible(true),
Guid("39c13a51-011e-11d0-9675-0020afd8adb3"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCPublicGroupStateMgt
{
void GetState(
[Out, MarshalAs(UnmanagedType.Bool)] out bool pPublic);
void MoveToPublic();
}
[ComVisible(true), ComImport,
Guid("39c13a54-011e-11d0-9675-0020afd8adb3"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCItemMgt
{
[PreserveSig]
int AddItems(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.Struct, SizeParamIndex = 0)] OPCITEMDEF[] pItemArray,
[Out] out IntPtr ppAddResults,
[Out] out IntPtr ppErrors);
[PreserveSig]
int ValidateItems(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.Struct, SizeParamIndex = 0)] OPCITEMDEF[] pItemArray,
[In, MarshalAs(UnmanagedType.Bool)] bool bBlobUpdate,
[Out, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.Struct, SizeParamIndex = 0)]out OPCITEMRESULT[] ppValidationResults,
[Out] out IntPtr ppErrors);
[PreserveSig]
int RemoveItems(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] phServer,
[Out] out IntPtr ppErrors);
[PreserveSig]
int SetActiveState(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] phServer,
[In, MarshalAs(UnmanagedType.Bool)] bool bActive,
[Out] out IntPtr ppErrors);
[PreserveSig]
int SetClientHandles(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] phServer,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] phClient,
[Out] out IntPtr ppErrors);
[PreserveSig]
int SetDatatypes(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] phServer,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] short[] pRequestedDatatypes,
[Out] out IntPtr ppErrors);
[PreserveSig]
int CreateEnumerator(
[In] ref Guid riid,
[Out, MarshalAs(UnmanagedType.IUnknown)] out object ppUnk);
}
[ComVisible(true), ComImport,
Guid("39c13a52-011e-11d0-9675-0020afd8adb3"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCSyncIO
{
[PreserveSig]
int Read(
[In, MarshalAs(UnmanagedType.U4)] OPCDATASOURCE dwSource,
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] int[] phServer,
[Out] out IntPtr ppItemValues,
[Out] out IntPtr ppErrors);
[PreserveSig]
int Write(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] phServer,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] object[] pItemValues,
[Out] out IntPtr ppErrors);
}
[ComVisible(true), ComImport,
Guid("730F5F0F-55B1-4C81-9E18-FF8A0904E1FA"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCSyncIO2
{
[PreserveSig]
int Read(
[In, MarshalAs(UnmanagedType.U4)] OPCDATASOURCE dwSource,
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] int[] phServer,
[Out] out IntPtr ppItemValues,
[Out] out IntPtr ppErrors);
[PreserveSig]
int Write(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] phServer,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] object[] pItemValues,
[Out] out IntPtr ppErrors);
[PreserveSig]
int ReadMaxAge(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] phServer,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] pdwMaxAge,
[Out] out IntPtr ppvValues,
[Out] out IntPtr ppwQualities,
[Out] out IntPtr ppftTimeStamps,
[Out] out IntPtr ppErrors);
[PreserveSig]
int WriteVQT(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] phServer,
[In, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.Struct, SizeParamIndex = 0)] OPCITEMVQT[] pItemVQT,
[Out] out IntPtr ppErrors);
}
[ComVisible(true), ComImport,
Guid("39c13a71-011e-11d0-9675-0020afd8adb3"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCAsyncIO2
{
[PreserveSig]
int Read(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] phServer,
[In] int dwTransactionID,
[Out] out int pdwCancelID,
[Out] out IntPtr ppErrors);
[PreserveSig]
int Write(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] phServer,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] object[] pItemValues,
[In] int dwTransactionID,
[Out] out int pdwCancelID,
[Out] out IntPtr ppErrors);
void Refresh2(
[In, MarshalAs(UnmanagedType.U4)] OPCDATASOURCE dwSource,
[In] int dwTransactionID,
[Out] out int pdwCancelID);
void Cancel2(
[In] int dwCancelID);
void SetEnable(
[In, MarshalAs(UnmanagedType.Bool)] bool bEnable);
void GetEnable(
[Out, MarshalAs(UnmanagedType.Bool)] out bool pbEnable);
}
[ComVisible(true), ComImport,
Guid("0967B97B-36EF-423E-B6F8-6BFF1E40D39D"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCAsyncIO3
{
[PreserveSig]
int Read(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] phServer,
[In] int dwTransactionID,
[Out] out int pdwCancelID,
[Out] out IntPtr ppErrors);
[PreserveSig]
int Write(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] phServer,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] object[] pItemValues,
[In] int dwTransactionID,
[Out] out int pdwCancelID,
[Out] out IntPtr ppErrors);
void Refresh2(
[In, MarshalAs(UnmanagedType.U4)] OPCDATASOURCE dwSource,
[In] int dwTransactionID,
[Out] out int pdwCancelID);
void Cancel2(
[In] int dwCancelID);
void SetEnable(
[In, MarshalAs(UnmanagedType.Bool)] bool bEnable);
void GetEnable(
[Out, MarshalAs(UnmanagedType.Bool)] out bool pbEnable);
void ReadMaxAge(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] phServer,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] pdwMaxAge,
[In] int dwTransactionID,
[Out]out int pdwCancelID,
[Out]out IntPtr ppErrors);
void WriteVQT(
[In] int dwCount,
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] phServer,
[In, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.Struct, SizeParamIndex = 0)] OPCITEMVQT[] pItemVQT,
[In] int dwTransactionID,
[Out] out int pdwCancelID,
[Out] out IntPtr ppErrors);
void RefreshMaxAge(
[In] int dwMaxAge,
[In] int dwTransactionID,
[Out] out int pdwCancelID);
}
[ComVisible(true), ComImport,
Guid("39c13a70-011e-11d0-9675-0020afd8adb3"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCDataCallback
{
void OnDataChange(
[In] int dwTransid,
[In] int hGroup,
[In] int hrMasterquality,
[In] int hrMastererror,
[In] int dwCount,
[In] IntPtr phClientItems,
[In] IntPtr pvValues,
[In] IntPtr pwQualities,
[In] IntPtr pftTimeStamps,
[In] IntPtr ppErrors);
void OnReadComplete(
[In] int dwTransid,
[In] int hGroup,
[In] int hrMasterquality,
[In] int hrMastererror,
[In] int dwCount,
[In] IntPtr phClientItems,
[In] IntPtr pvValues,
[In] IntPtr pwQualities,
[In] IntPtr pftTimeStamps,
[In] IntPtr ppErrors);
void OnWriteComplete(
[In] int dwTransid,
[In] int hGroup,
[In] int hrMastererr,
[In] int dwCount,
[In] IntPtr pClienthandles,
[In] IntPtr ppErrors);
void OnCancelComplete(
[In] int dwTransid,
[In] int hGroup);
}
[ComVisible(true), ComImport,
Guid("39c13a55-011e-11d0-9675-0020afd8adb3"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IEnumOPCItemAttributes
{
void Next(
[In] int celt,
[Out] out IntPtr ppItemArray,
[Out] out int pceltFetched);
void Skip(
[In] int celt);
void Reset();
void Clone(
[Out, MarshalAs(UnmanagedType.Interface)] out IEnumOPCItemAttributes ppUnk);
}
}