opcda.h
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:37k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* opcda.h generated by WIDL Version 2.2.1 on 06-Dec-01 at 11:53:51 AM */
  2. #include "comBase.h"
  3. #ifndef __INCopcda_h
  4. #define __INCopcda_h
  5. #include "vxidl.h"
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. int include_opcda (void);
  10. #ifndef __IOPCServer_FWD_DEFINED__
  11. #define __IOPCServer_FWD_DEFINED__
  12. typedef interface IOPCServer IOPCServer;
  13. #endif /* __IOPCServer_FWD_DEFINED__ */
  14. #ifndef __IOPCServerPublicGroups_FWD_DEFINED__
  15. #define __IOPCServerPublicGroups_FWD_DEFINED__
  16. typedef interface IOPCServerPublicGroups IOPCServerPublicGroups;
  17. #endif /* __IOPCServerPublicGroups_FWD_DEFINED__ */
  18. #ifndef __IOPCBrowseServerAddressSpace_FWD_DEFINED__
  19. #define __IOPCBrowseServerAddressSpace_FWD_DEFINED__
  20. typedef interface IOPCBrowseServerAddressSpace IOPCBrowseServerAddressSpace;
  21. #endif /* __IOPCBrowseServerAddressSpace_FWD_DEFINED__ */
  22. #ifndef __IOPCGroupStateMgt_FWD_DEFINED__
  23. #define __IOPCGroupStateMgt_FWD_DEFINED__
  24. typedef interface IOPCGroupStateMgt IOPCGroupStateMgt;
  25. #endif /* __IOPCGroupStateMgt_FWD_DEFINED__ */
  26. #ifndef __IOPCPublicGroupStateMgt_FWD_DEFINED__
  27. #define __IOPCPublicGroupStateMgt_FWD_DEFINED__
  28. typedef interface IOPCPublicGroupStateMgt IOPCPublicGroupStateMgt;
  29. #endif /* __IOPCPublicGroupStateMgt_FWD_DEFINED__ */
  30. #ifndef __IOPCSyncIO_FWD_DEFINED__
  31. #define __IOPCSyncIO_FWD_DEFINED__
  32. typedef interface IOPCSyncIO IOPCSyncIO;
  33. #endif /* __IOPCSyncIO_FWD_DEFINED__ */
  34. #ifndef __IOPCAsyncIO_FWD_DEFINED__
  35. #define __IOPCAsyncIO_FWD_DEFINED__
  36. typedef interface IOPCAsyncIO IOPCAsyncIO;
  37. #endif /* __IOPCAsyncIO_FWD_DEFINED__ */
  38. #ifndef __IOPCItemMgt_FWD_DEFINED__
  39. #define __IOPCItemMgt_FWD_DEFINED__
  40. typedef interface IOPCItemMgt IOPCItemMgt;
  41. #endif /* __IOPCItemMgt_FWD_DEFINED__ */
  42. #ifndef __IEnumOPCItemAttributes_FWD_DEFINED__
  43. #define __IEnumOPCItemAttributes_FWD_DEFINED__
  44. typedef interface IEnumOPCItemAttributes IEnumOPCItemAttributes;
  45. #endif /* __IEnumOPCItemAttributes_FWD_DEFINED__ */
  46. #ifndef __IOPCDataCallback_FWD_DEFINED__
  47. #define __IOPCDataCallback_FWD_DEFINED__
  48. typedef interface IOPCDataCallback IOPCDataCallback;
  49. #endif /* __IOPCDataCallback_FWD_DEFINED__ */
  50. #ifndef __IOPCAsyncIO2_FWD_DEFINED__
  51. #define __IOPCAsyncIO2_FWD_DEFINED__
  52. typedef interface IOPCAsyncIO2 IOPCAsyncIO2;
  53. #endif /* __IOPCAsyncIO2_FWD_DEFINED__ */
  54. #ifndef __IOPCItemProperties_FWD_DEFINED__
  55. #define __IOPCItemProperties_FWD_DEFINED__
  56. typedef interface IOPCItemProperties IOPCItemProperties;
  57. #endif /* __IOPCItemProperties_FWD_DEFINED__ */
  58. enum tagOPCDATASOURCE
  59. {
  60. OPC_DS_CACHE = 1,
  61. OPC_DS_DEVICE = 2,
  62. };
  63. typedef enum tagOPCDATASOURCE OPCDATASOURCE;
  64. enum tagOPCBROWSETYPE
  65. {
  66. OPC_BRANCH = 1,
  67. OPC_LEAF = 2,
  68. OPC_FLAT = 3,
  69. };
  70. typedef enum tagOPCBROWSETYPE OPCBROWSETYPE;
  71. enum tagOPCNAMESPACETYPE
  72. {
  73. OPC_NS_HIERARCHIAL = 1,
  74. OPC_NS_FLAT = 2,
  75. };
  76. typedef enum tagOPCNAMESPACETYPE OPCNAMESPACETYPE;
  77. enum tagOPCBROWSEDIRECTION
  78. {
  79. OPC_BROWSE_UP = 1,
  80. OPC_BROWSE_DOWN = 2,
  81. OPC_BROWSE_TO = 3,
  82. };
  83. typedef enum tagOPCBROWSEDIRECTION OPCBROWSEDIRECTION;
  84. #define OPC_READABLE    1
  85. #define OPC_WRITEABLE   2
  86. enum tagOPCEUTYPE
  87. {
  88. OPC_NOENUM = 0,
  89. OPC_ANALOG = 1,
  90. OPC_ENUMERATED = 2,
  91. };
  92. typedef enum tagOPCEUTYPE OPCEUTYPE;
  93. enum tagOPCSERVERSTATE
  94. {
  95. OPC_STATUS_RUNNING = 1,
  96. OPC_STATUS_FAILED = 2,
  97. OPC_STATUS_NOCONFIG = 3,
  98. OPC_STATUS_SUSPENDED = 4,
  99. OPC_STATUS_TEST = 5,
  100. };
  101. typedef enum tagOPCSERVERSTATE OPCSERVERSTATE;
  102. enum tagOPCENUMSCOPE
  103. {
  104. OPC_ENUM_PRIVATE_CONNECTIONS = 1,
  105. OPC_ENUM_PUBLIC_CONNECTIONS = 2,
  106. OPC_ENUM_ALL_CONNECTIONS = 3,
  107. OPC_ENUM_PRIVATE = 4,
  108. OPC_ENUM_PUBLIC = 5,
  109. OPC_ENUM_ALL = 6,
  110. };
  111. typedef enum tagOPCENUMSCOPE OPCENUMSCOPE;
  112. typedef DWORD OPCHANDLE;
  113. struct tagOPCGROUPHEADER
  114. {
  115. DWORD dwSize;
  116. DWORD dwItemCount;
  117. OPCHANDLE hClientGroup;
  118. DWORD dwTransactionID;
  119. HRESULT hrStatus;
  120. };
  121. typedef struct tagOPCGROUPHEADER OPCGROUPHEADER;
  122. struct tagOPCITEMHEADER1
  123. {
  124. OPCHANDLE hClient;
  125. DWORD dwValueOffset;
  126. WORD wQuality;
  127. WORD wReserved;
  128. FILETIME ftTimeStampItem;
  129. };
  130. typedef struct tagOPCITEMHEADER1 OPCITEMHEADER1;
  131. struct tagOPCITEMHEADER2
  132. {
  133. OPCHANDLE hClient;
  134. DWORD dwValueOffset;
  135. WORD wQuality;
  136. WORD wReserved;
  137. };
  138. typedef struct tagOPCITEMHEADER2 OPCITEMHEADER2;
  139. struct tagOPCGROUPHEADERWRITE
  140. {
  141. DWORD dwItemCount;
  142. OPCHANDLE hClientGroup;
  143. DWORD dwTransactionID;
  144. HRESULT hrStatus;
  145. };
  146. typedef struct tagOPCGROUPHEADERWRITE OPCGROUPHEADERWRITE;
  147. struct tagOPCITEMHEADERWRITE
  148. {
  149. OPCHANDLE hClient;
  150. HRESULT dwError;
  151. };
  152. typedef struct tagOPCITEMHEADERWRITE OPCITEMHEADERWRITE;
  153. struct tagOPCITEMSTATE
  154. {
  155. OPCHANDLE hClient;
  156. FILETIME ftTimeStamp;
  157. WORD wQuality;
  158. WORD wReserved;
  159. VARIANT vDataValue;
  160. };
  161. typedef struct tagOPCITEMSTATE OPCITEMSTATE;
  162. struct tagOPCSERVERSTATUS
  163. {
  164. FILETIME ftStartTime;
  165. FILETIME ftCurrentTime;
  166. FILETIME ftLastUpdateTime;
  167. OPCSERVERSTATE dwServerState;
  168. DWORD dwGroupCount;
  169. DWORD dwBandWidth;
  170. WORD wMajorVersion;
  171. WORD wMinorVersion;
  172. WORD wBuildNumber;
  173. WORD wReserved;
  174. LPWSTR szVendorInfo;
  175. };
  176. typedef struct tagOPCSERVERSTATUS OPCSERVERSTATUS;
  177. struct tagOPCITEMDEF
  178. {
  179. LPWSTR szAccessPath;
  180. LPWSTR szItemID;
  181. BOOL bActive;
  182. OPCHANDLE hClient;
  183. DWORD dwBlobSize;
  184. BYTE* pBlob;
  185. VARTYPE vtRequestedDataType;
  186. WORD wReserved;
  187. };
  188. typedef struct tagOPCITEMDEF OPCITEMDEF;
  189. struct tagOPCITEMATTRIBUTES
  190. {
  191. LPWSTR szAccessPath;
  192. LPWSTR szItemID;
  193. BOOL bActive;
  194. OPCHANDLE hClient;
  195. OPCHANDLE hServer;
  196. DWORD dwAccessRights;
  197. DWORD dwBlobSize;
  198. BYTE* pBlob;
  199. VARTYPE vtRequestedDataType;
  200. VARTYPE vtCanonicalDataType;
  201. OPCEUTYPE dwEUType;
  202. VARIANT vEUInfo;
  203. };
  204. typedef struct tagOPCITEMATTRIBUTES OPCITEMATTRIBUTES;
  205. struct tagOPCITEMRESULT
  206. {
  207. OPCHANDLE hServer;
  208. VARTYPE vtCanonicalDataType;
  209. WORD wReserved;
  210. DWORD dwAccessRights;
  211. DWORD dwBlobSize;
  212. BYTE* pBlob;
  213. };
  214. typedef struct tagOPCITEMRESULT OPCITEMRESULT;
  215. #define    OPC_QUALITY_MASK            0xC0
  216. #define    OPC_STATUS_MASK             0xFC
  217. #define    OPC_LIMIT_MASK              0x03
  218. #define    OPC_QUALITY_BAD             0x00
  219. #define    OPC_QUALITY_UNCERTAIN       0x40
  220. #define    OPC_QUALITY_GOOD            0xC0
  221. #define    OPC_QUALITY_CONFIG_ERROR    0x04
  222. #define    OPC_QUALITY_NOT_CONNECTED   0x08
  223. #define    OPC_QUALITY_DEVICE_FAILURE  0x0c
  224. #define    OPC_QUALITY_SENSOR_FAILURE  0x10
  225. #define    OPC_QUALITY_LAST_KNOWN      0x14
  226. #define    OPC_QUALITY_COMM_FAILURE    0x18
  227. #define    OPC_QUALITY_OUT_OF_SERVICE  0x1C
  228. #define    OPC_QUALITY_LAST_USABLE     0x44
  229. #define    OPC_QUALITY_SENSOR_CAL      0x50
  230. #define    OPC_QUALITY_EGU_EXCEEDED    0x54
  231. #define    OPC_QUALITY_SUB_NORMAL      0x58
  232. #define    OPC_QUALITY_LOCAL_OVERRIDE  0xD8
  233. #define    OPC_LIMIT_OK                0x00
  234. #define    OPC_LIMIT_LOW               0x01
  235. #define    OPC_LIMIT_HIGH              0x02
  236. #define    OPC_LIMIT_CONST             0x03
  237. typedef struct
  238.     {
  239.     COM_VTBL_BEGIN
  240.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  241. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  242.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  243. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  244.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  245. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  246.     COM_VTBL_ENTRY (HRESULT, AddGroup, (IOPCServer* pThis, LPCWSTR szName, BOOL bActive, DWORD dwRequestedUpdateRate, OPCHANDLE hClientGroup, LONG* pTimeBias, FLOAT* pPercentDeadband, DWORD dwLCID, OPCHANDLE* phServerGroup, DWORD* pRevisedUpdateRate, REFIID riid, LPUNKNOWN* ppUnk));
  247. #define IOPCServer_AddGroup(pThis, szName, bActive, dwRequestedUpdateRate, hClientGroup, pTimeBias, pPercentDeadband, dwLCID, phServerGroup, pRevisedUpdateRate, riid, ppUnk) pThis->lpVtbl->AddGroup(COM_ADJUST_THIS(pThis), szName, bActive, dwRequestedUpdateRate, hClientGroup, pTimeBias, pPercentDeadband, dwLCID, phServerGroup, pRevisedUpdateRate, riid, ppUnk)
  248.     COM_VTBL_ENTRY (HRESULT, GetErrorString, (IOPCServer* pThis, HRESULT dwError, LCID dwLocale, LPWSTR* ppString));
  249. #define IOPCServer_GetErrorString(pThis, dwError, dwLocale, ppString) pThis->lpVtbl->GetErrorString(COM_ADJUST_THIS(pThis), dwError, dwLocale, ppString)
  250.     COM_VTBL_ENTRY (HRESULT, GetGroupByName, (IOPCServer* pThis, LPCWSTR szName, REFIID riid, LPUNKNOWN* ppUnk));
  251. #define IOPCServer_GetGroupByName(pThis, szName, riid, ppUnk) pThis->lpVtbl->GetGroupByName(COM_ADJUST_THIS(pThis), szName, riid, ppUnk)
  252.     COM_VTBL_ENTRY (HRESULT, GetStatus, (IOPCServer* pThis, OPCSERVERSTATUS** ppServerStatus));
  253. #define IOPCServer_GetStatus(pThis, ppServerStatus) pThis->lpVtbl->GetStatus(COM_ADJUST_THIS(pThis), ppServerStatus)
  254.     COM_VTBL_ENTRY (HRESULT, RemoveGroup, (IOPCServer* pThis, OPCHANDLE hServerGroup, BOOL bForce));
  255. #define IOPCServer_RemoveGroup(pThis, hServerGroup, bForce) pThis->lpVtbl->RemoveGroup(COM_ADJUST_THIS(pThis), hServerGroup, bForce)
  256.     COM_VTBL_ENTRY (HRESULT, CreateGroupEnumerator, (IOPCServer* pThis, OPCENUMSCOPE dwScope, REFIID riid, LPUNKNOWN* ppUnk));
  257. #define IOPCServer_CreateGroupEnumerator(pThis, dwScope, riid, ppUnk) pThis->lpVtbl->CreateGroupEnumerator(COM_ADJUST_THIS(pThis), dwScope, riid, ppUnk)
  258.     COM_VTBL_END
  259.     } IOPCServerVtbl;
  260. #ifdef __cplusplus
  261. interface IOPCServer : public IUnknown
  262. {
  263. virtual HRESULT AddGroup (LPCWSTR szName, BOOL bActive, DWORD dwRequestedUpdateRate, OPCHANDLE hClientGroup, LONG* pTimeBias, FLOAT* pPercentDeadband, DWORD dwLCID, OPCHANDLE* phServerGroup, DWORD* pRevisedUpdateRate, REFIID riid, LPUNKNOWN* ppUnk) =0;
  264. virtual HRESULT GetErrorString (HRESULT dwError, LCID dwLocale, LPWSTR* ppString) =0;
  265. virtual HRESULT GetGroupByName (LPCWSTR szName, REFIID riid, LPUNKNOWN* ppUnk) =0;
  266. virtual HRESULT GetStatus (OPCSERVERSTATUS** ppServerStatus) =0;
  267. virtual HRESULT RemoveGroup (OPCHANDLE hServerGroup, BOOL bForce) =0;
  268. virtual HRESULT CreateGroupEnumerator (OPCENUMSCOPE dwScope, REFIID riid, LPUNKNOWN* ppUnk) =0;
  269. };
  270. #else
  271. /* C interface definition for IOPCServer */
  272. interface IOPCServer
  273.     {
  274.     const IOPCServerVtbl *  lpVtbl;
  275.     };
  276. #endif /* __cplusplus */
  277. EXTERN_C const IID IID_IOPCServer;
  278. typedef struct
  279.     {
  280.     COM_VTBL_BEGIN
  281.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  282. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  283.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  284. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  285.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  286. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  287.     COM_VTBL_ENTRY (HRESULT, GetPublicGroupByName, (IOPCServerPublicGroups* pThis, LPCWSTR szName, REFIID riid, LPUNKNOWN* ppUnk));
  288. #define IOPCServerPublicGroups_GetPublicGroupByName(pThis, szName, riid, ppUnk) pThis->lpVtbl->GetPublicGroupByName(COM_ADJUST_THIS(pThis), szName, riid, ppUnk)
  289.     COM_VTBL_ENTRY (HRESULT, RemovePublicGroup, (IOPCServerPublicGroups* pThis, OPCHANDLE hServerGroup, BOOL bForce));
  290. #define IOPCServerPublicGroups_RemovePublicGroup(pThis, hServerGroup, bForce) pThis->lpVtbl->RemovePublicGroup(COM_ADJUST_THIS(pThis), hServerGroup, bForce)
  291.     COM_VTBL_END
  292.     } IOPCServerPublicGroupsVtbl;
  293. #ifdef __cplusplus
  294. interface IOPCServerPublicGroups : public IUnknown
  295. {
  296. virtual HRESULT GetPublicGroupByName (LPCWSTR szName, REFIID riid, LPUNKNOWN* ppUnk) =0;
  297. virtual HRESULT RemovePublicGroup (OPCHANDLE hServerGroup, BOOL bForce) =0;
  298. };
  299. #else
  300. /* C interface definition for IOPCServerPublicGroups */
  301. interface IOPCServerPublicGroups
  302.     {
  303.     const IOPCServerPublicGroupsVtbl *  lpVtbl;
  304.     };
  305. #endif /* __cplusplus */
  306. EXTERN_C const IID IID_IOPCServerPublicGroups;
  307. typedef struct
  308.     {
  309.     COM_VTBL_BEGIN
  310.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  311. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  312.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  313. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  314.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  315. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  316.     COM_VTBL_ENTRY (HRESULT, QueryOrganization, (IOPCBrowseServerAddressSpace* pThis, OPCNAMESPACETYPE* pNameSpaceType));
  317. #define IOPCBrowseServerAddressSpace_QueryOrganization(pThis, pNameSpaceType) pThis->lpVtbl->QueryOrganization(COM_ADJUST_THIS(pThis), pNameSpaceType)
  318.     COM_VTBL_ENTRY (HRESULT, ChangeBrowsePosition, (IOPCBrowseServerAddressSpace* pThis, OPCBROWSEDIRECTION dwBrowseDirection, LPCWSTR szString));
  319. #define IOPCBrowseServerAddressSpace_ChangeBrowsePosition(pThis, dwBrowseDirection, szString) pThis->lpVtbl->ChangeBrowsePosition(COM_ADJUST_THIS(pThis), dwBrowseDirection, szString)
  320.     COM_VTBL_ENTRY (HRESULT, BrowseOPCItemIDs, (IOPCBrowseServerAddressSpace* pThis, OPCBROWSETYPE dwBrowseFilterType, LPCWSTR szFilterCriteria, VARTYPE vtDataTypeFilter, DWORD dwAccessRightsFilter, LPENUMSTRING* ppIEnumString));
  321. #define IOPCBrowseServerAddressSpace_BrowseOPCItemIDs(pThis, dwBrowseFilterType, szFilterCriteria, vtDataTypeFilter, dwAccessRightsFilter, ppIEnumString) pThis->lpVtbl->BrowseOPCItemIDs(COM_ADJUST_THIS(pThis), dwBrowseFilterType, szFilterCriteria, vtDataTypeFilter, dwAccessRightsFilter, ppIEnumString)
  322.     COM_VTBL_ENTRY (HRESULT, GetItemID, (IOPCBrowseServerAddressSpace* pThis, LPWSTR szItemDataID, LPWSTR* szItemID));
  323. #define IOPCBrowseServerAddressSpace_GetItemID(pThis, szItemDataID, szItemID) pThis->lpVtbl->GetItemID(COM_ADJUST_THIS(pThis), szItemDataID, szItemID)
  324.     COM_VTBL_ENTRY (HRESULT, BrowseAccessPaths, (IOPCBrowseServerAddressSpace* pThis, LPCWSTR szItemID, LPENUMSTRING* ppIEnumString));
  325. #define IOPCBrowseServerAddressSpace_BrowseAccessPaths(pThis, szItemID, ppIEnumString) pThis->lpVtbl->BrowseAccessPaths(COM_ADJUST_THIS(pThis), szItemID, ppIEnumString)
  326.     COM_VTBL_END
  327.     } IOPCBrowseServerAddressSpaceVtbl;
  328. #ifdef __cplusplus
  329. interface IOPCBrowseServerAddressSpace : public IUnknown
  330. {
  331. virtual HRESULT QueryOrganization (OPCNAMESPACETYPE* pNameSpaceType) =0;
  332. virtual HRESULT ChangeBrowsePosition (OPCBROWSEDIRECTION dwBrowseDirection, LPCWSTR szString) =0;
  333. virtual HRESULT BrowseOPCItemIDs (OPCBROWSETYPE dwBrowseFilterType, LPCWSTR szFilterCriteria, VARTYPE vtDataTypeFilter, DWORD dwAccessRightsFilter, LPENUMSTRING* ppIEnumString) =0;
  334. virtual HRESULT GetItemID (LPWSTR szItemDataID, LPWSTR* szItemID) =0;
  335. virtual HRESULT BrowseAccessPaths (LPCWSTR szItemID, LPENUMSTRING* ppIEnumString) =0;
  336. };
  337. #else
  338. /* C interface definition for IOPCBrowseServerAddressSpace */
  339. interface IOPCBrowseServerAddressSpace
  340.     {
  341.     const IOPCBrowseServerAddressSpaceVtbl *  lpVtbl;
  342.     };
  343. #endif /* __cplusplus */
  344. EXTERN_C const IID IID_IOPCBrowseServerAddressSpace;
  345. typedef struct
  346.     {
  347.     COM_VTBL_BEGIN
  348.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  349. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  350.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  351. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  352.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  353. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  354.     COM_VTBL_ENTRY (HRESULT, GetState, (IOPCGroupStateMgt* pThis, DWORD* pUpdateRate, BOOL* pActive, LPWSTR* ppName, LONG* pTimeBias, FLOAT* pPercentDeadband, DWORD* pLCID, OPCHANDLE* phClientGroup, OPCHANDLE* phServerGroup));
  355. #define IOPCGroupStateMgt_GetState(pThis, pUpdateRate, pActive, ppName, pTimeBias, pPercentDeadband, pLCID, phClientGroup, phServerGroup) pThis->lpVtbl->GetState(COM_ADJUST_THIS(pThis), pUpdateRate, pActive, ppName, pTimeBias, pPercentDeadband, pLCID, phClientGroup, phServerGroup)
  356.     COM_VTBL_ENTRY (HRESULT, SetState, (IOPCGroupStateMgt* pThis, DWORD* pRequestedUpdateRate, DWORD* pRevisedUpdateRate, BOOL* pActive, LONG* pTimeBias, FLOAT* pPercentDeadband, DWORD* pLCID, OPCHANDLE* phClientGroup));
  357. #define IOPCGroupStateMgt_SetState(pThis, pRequestedUpdateRate, pRevisedUpdateRate, pActive, pTimeBias, pPercentDeadband, pLCID, phClientGroup) pThis->lpVtbl->SetState(COM_ADJUST_THIS(pThis), pRequestedUpdateRate, pRevisedUpdateRate, pActive, pTimeBias, pPercentDeadband, pLCID, phClientGroup)
  358.     COM_VTBL_ENTRY (HRESULT, SetName, (IOPCGroupStateMgt* pThis, LPCWSTR szName));
  359. #define IOPCGroupStateMgt_SetName(pThis, szName) pThis->lpVtbl->SetName(COM_ADJUST_THIS(pThis), szName)
  360.     COM_VTBL_ENTRY (HRESULT, CloneGroup, (IOPCGroupStateMgt* pThis, LPCWSTR szName, REFIID riid, LPUNKNOWN* ppUnk));
  361. #define IOPCGroupStateMgt_CloneGroup(pThis, szName, riid, ppUnk) pThis->lpVtbl->CloneGroup(COM_ADJUST_THIS(pThis), szName, riid, ppUnk)
  362.     COM_VTBL_END
  363.     } IOPCGroupStateMgtVtbl;
  364. #ifdef __cplusplus
  365. interface IOPCGroupStateMgt : public IUnknown
  366. {
  367. virtual HRESULT GetState (DWORD* pUpdateRate, BOOL* pActive, LPWSTR* ppName, LONG* pTimeBias, FLOAT* pPercentDeadband, DWORD* pLCID, OPCHANDLE* phClientGroup, OPCHANDLE* phServerGroup) =0;
  368. virtual HRESULT SetState (DWORD* pRequestedUpdateRate, DWORD* pRevisedUpdateRate, BOOL* pActive, LONG* pTimeBias, FLOAT* pPercentDeadband, DWORD* pLCID, OPCHANDLE* phClientGroup) =0;
  369. virtual HRESULT SetName (LPCWSTR szName) =0;
  370. virtual HRESULT CloneGroup (LPCWSTR szName, REFIID riid, LPUNKNOWN* ppUnk) =0;
  371. };
  372. #else
  373. /* C interface definition for IOPCGroupStateMgt */
  374. interface IOPCGroupStateMgt
  375.     {
  376.     const IOPCGroupStateMgtVtbl *  lpVtbl;
  377.     };
  378. #endif /* __cplusplus */
  379. EXTERN_C const IID IID_IOPCGroupStateMgt;
  380. typedef struct
  381.     {
  382.     COM_VTBL_BEGIN
  383.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  384. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  385.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  386. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  387.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  388. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  389.     COM_VTBL_ENTRY (HRESULT, GetState, (IOPCPublicGroupStateMgt* pThis, BOOL* pPublic));
  390. #define IOPCPublicGroupStateMgt_GetState(pThis, pPublic) pThis->lpVtbl->GetState(COM_ADJUST_THIS(pThis), pPublic)
  391.     COM_VTBL_ENTRY (HRESULT, MoveToPublic, (IOPCPublicGroupStateMgt* pThis));
  392. #define IOPCPublicGroupStateMgt_MoveToPublic(pThis) pThis->lpVtbl->MoveToPublic(COM_ADJUST_THIS(pThis))
  393.     COM_VTBL_END
  394.     } IOPCPublicGroupStateMgtVtbl;
  395. #ifdef __cplusplus
  396. interface IOPCPublicGroupStateMgt : public IUnknown
  397. {
  398. virtual HRESULT GetState (BOOL* pPublic) =0;
  399. virtual HRESULT MoveToPublic () =0;
  400. };
  401. #else
  402. /* C interface definition for IOPCPublicGroupStateMgt */
  403. interface IOPCPublicGroupStateMgt
  404.     {
  405.     const IOPCPublicGroupStateMgtVtbl *  lpVtbl;
  406.     };
  407. #endif /* __cplusplus */
  408. EXTERN_C const IID IID_IOPCPublicGroupStateMgt;
  409. typedef struct
  410.     {
  411.     COM_VTBL_BEGIN
  412.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  413. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  414.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  415. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  416.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  417. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  418.     COM_VTBL_ENTRY (HRESULT, Read, (IOPCSyncIO* pThis, OPCDATASOURCE dwSource, DWORD dwCount, OPCHANDLE* phServer, OPCITEMSTATE** ppItemValues, HRESULT** ppErrors));
  419. #define IOPCSyncIO_Read(pThis, dwSource, dwCount, phServer, ppItemValues, ppErrors) pThis->lpVtbl->Read(COM_ADJUST_THIS(pThis), dwSource, dwCount, phServer, ppItemValues, ppErrors)
  420.     COM_VTBL_ENTRY (HRESULT, Write, (IOPCSyncIO* pThis, DWORD dwCount, OPCHANDLE* phServer, VARIANT* pItemValues, HRESULT** ppErrors));
  421. #define IOPCSyncIO_Write(pThis, dwCount, phServer, pItemValues, ppErrors) pThis->lpVtbl->Write(COM_ADJUST_THIS(pThis), dwCount, phServer, pItemValues, ppErrors)
  422.     COM_VTBL_END
  423.     } IOPCSyncIOVtbl;
  424. #ifdef __cplusplus
  425. interface IOPCSyncIO : public IUnknown
  426. {
  427. virtual HRESULT Read (OPCDATASOURCE dwSource, DWORD dwCount, OPCHANDLE* phServer, OPCITEMSTATE** ppItemValues, HRESULT** ppErrors) =0;
  428. virtual HRESULT Write (DWORD dwCount, OPCHANDLE* phServer, VARIANT* pItemValues, HRESULT** ppErrors) =0;
  429. };
  430. #else
  431. /* C interface definition for IOPCSyncIO */
  432. interface IOPCSyncIO
  433.     {
  434.     const IOPCSyncIOVtbl *  lpVtbl;
  435.     };
  436. #endif /* __cplusplus */
  437. EXTERN_C const IID IID_IOPCSyncIO;
  438. typedef struct
  439.     {
  440.     COM_VTBL_BEGIN
  441.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  442. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  443.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  444. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  445.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  446. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  447.     COM_VTBL_ENTRY (HRESULT, Read, (IOPCAsyncIO* pThis, DWORD dwConnection, OPCDATASOURCE dwSource, DWORD dwCount, OPCHANDLE* phServer, DWORD* pTransactionID, HRESULT** ppErrors));
  448. #define IOPCAsyncIO_Read(pThis, dwConnection, dwSource, dwCount, phServer, pTransactionID, ppErrors) pThis->lpVtbl->Read(COM_ADJUST_THIS(pThis), dwConnection, dwSource, dwCount, phServer, pTransactionID, ppErrors)
  449.     COM_VTBL_ENTRY (HRESULT, Write, (IOPCAsyncIO* pThis, DWORD dwConnection, DWORD dwCount, OPCHANDLE* phServer, VARIANT* pItemValues, DWORD* pTransactionID, HRESULT** ppErrors));
  450. #define IOPCAsyncIO_Write(pThis, dwConnection, dwCount, phServer, pItemValues, pTransactionID, ppErrors) pThis->lpVtbl->Write(COM_ADJUST_THIS(pThis), dwConnection, dwCount, phServer, pItemValues, pTransactionID, ppErrors)
  451.     COM_VTBL_ENTRY (HRESULT, Refresh, (IOPCAsyncIO* pThis, DWORD dwConnection, OPCDATASOURCE dwSource, DWORD* pTransactionID));
  452. #define IOPCAsyncIO_Refresh(pThis, dwConnection, dwSource, pTransactionID) pThis->lpVtbl->Refresh(COM_ADJUST_THIS(pThis), dwConnection, dwSource, pTransactionID)
  453.     COM_VTBL_ENTRY (HRESULT, Cancel, (IOPCAsyncIO* pThis, DWORD dwTransactionID));
  454. #define IOPCAsyncIO_Cancel(pThis, dwTransactionID) pThis->lpVtbl->Cancel(COM_ADJUST_THIS(pThis), dwTransactionID)
  455.     COM_VTBL_END
  456.     } IOPCAsyncIOVtbl;
  457. #ifdef __cplusplus
  458. interface IOPCAsyncIO : public IUnknown
  459. {
  460. virtual HRESULT Read (DWORD dwConnection, OPCDATASOURCE dwSource, DWORD dwCount, OPCHANDLE* phServer, DWORD* pTransactionID, HRESULT** ppErrors) =0;
  461. virtual HRESULT Write (DWORD dwConnection, DWORD dwCount, OPCHANDLE* phServer, VARIANT* pItemValues, DWORD* pTransactionID, HRESULT** ppErrors) =0;
  462. virtual HRESULT Refresh (DWORD dwConnection, OPCDATASOURCE dwSource, DWORD* pTransactionID) =0;
  463. virtual HRESULT Cancel (DWORD dwTransactionID) =0;
  464. };
  465. #else
  466. /* C interface definition for IOPCAsyncIO */
  467. interface IOPCAsyncIO
  468.     {
  469.     const IOPCAsyncIOVtbl *  lpVtbl;
  470.     };
  471. #endif /* __cplusplus */
  472. EXTERN_C const IID IID_IOPCAsyncIO;
  473. typedef struct
  474.     {
  475.     COM_VTBL_BEGIN
  476.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  477. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  478.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  479. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  480.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  481. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  482.     COM_VTBL_ENTRY (HRESULT, AddItems, (IOPCItemMgt* pThis, DWORD dwCount, OPCITEMDEF* pItemArray, OPCITEMRESULT** ppAddResults, HRESULT** ppErrors));
  483. #define IOPCItemMgt_AddItems(pThis, dwCount, pItemArray, ppAddResults, ppErrors) pThis->lpVtbl->AddItems(COM_ADJUST_THIS(pThis), dwCount, pItemArray, ppAddResults, ppErrors)
  484.     COM_VTBL_ENTRY (HRESULT, ValidateItems, (IOPCItemMgt* pThis, DWORD dwCount, OPCITEMDEF* pItemArray, BOOL bBlobUpdate, OPCITEMRESULT** ppValidationResults, HRESULT** ppErrors));
  485. #define IOPCItemMgt_ValidateItems(pThis, dwCount, pItemArray, bBlobUpdate, ppValidationResults, ppErrors) pThis->lpVtbl->ValidateItems(COM_ADJUST_THIS(pThis), dwCount, pItemArray, bBlobUpdate, ppValidationResults, ppErrors)
  486.     COM_VTBL_ENTRY (HRESULT, RemoveItems, (IOPCItemMgt* pThis, DWORD dwCount, OPCHANDLE* phServer, HRESULT** ppErrors));
  487. #define IOPCItemMgt_RemoveItems(pThis, dwCount, phServer, ppErrors) pThis->lpVtbl->RemoveItems(COM_ADJUST_THIS(pThis), dwCount, phServer, ppErrors)
  488.     COM_VTBL_ENTRY (HRESULT, SetActiveState, (IOPCItemMgt* pThis, DWORD dwCount, OPCHANDLE* phServer, BOOL bActive, HRESULT** ppErrors));
  489. #define IOPCItemMgt_SetActiveState(pThis, dwCount, phServer, bActive, ppErrors) pThis->lpVtbl->SetActiveState(COM_ADJUST_THIS(pThis), dwCount, phServer, bActive, ppErrors)
  490.     COM_VTBL_ENTRY (HRESULT, SetClientHandles, (IOPCItemMgt* pThis, DWORD dwCount, OPCHANDLE* phServer, OPCHANDLE* phClient, HRESULT** ppErrors));
  491. #define IOPCItemMgt_SetClientHandles(pThis, dwCount, phServer, phClient, ppErrors) pThis->lpVtbl->SetClientHandles(COM_ADJUST_THIS(pThis), dwCount, phServer, phClient, ppErrors)
  492.     COM_VTBL_ENTRY (HRESULT, SetDatatypes, (IOPCItemMgt* pThis, DWORD dwCount, OPCHANDLE* phServer, VARTYPE* pRequestedDatatypes, HRESULT** ppErrors));
  493. #define IOPCItemMgt_SetDatatypes(pThis, dwCount, phServer, pRequestedDatatypes, ppErrors) pThis->lpVtbl->SetDatatypes(COM_ADJUST_THIS(pThis), dwCount, phServer, pRequestedDatatypes, ppErrors)
  494.     COM_VTBL_ENTRY (HRESULT, CreateEnumerator, (IOPCItemMgt* pThis, REFIID riid, LPUNKNOWN* ppUnk));
  495. #define IOPCItemMgt_CreateEnumerator(pThis, riid, ppUnk) pThis->lpVtbl->CreateEnumerator(COM_ADJUST_THIS(pThis), riid, ppUnk)
  496.     COM_VTBL_END
  497.     } IOPCItemMgtVtbl;
  498. #ifdef __cplusplus
  499. interface IOPCItemMgt : public IUnknown
  500. {
  501. virtual HRESULT AddItems (DWORD dwCount, OPCITEMDEF* pItemArray, OPCITEMRESULT** ppAddResults, HRESULT** ppErrors) =0;
  502. virtual HRESULT ValidateItems (DWORD dwCount, OPCITEMDEF* pItemArray, BOOL bBlobUpdate, OPCITEMRESULT** ppValidationResults, HRESULT** ppErrors) =0;
  503. virtual HRESULT RemoveItems (DWORD dwCount, OPCHANDLE* phServer, HRESULT** ppErrors) =0;
  504. virtual HRESULT SetActiveState (DWORD dwCount, OPCHANDLE* phServer, BOOL bActive, HRESULT** ppErrors) =0;
  505. virtual HRESULT SetClientHandles (DWORD dwCount, OPCHANDLE* phServer, OPCHANDLE* phClient, HRESULT** ppErrors) =0;
  506. virtual HRESULT SetDatatypes (DWORD dwCount, OPCHANDLE* phServer, VARTYPE* pRequestedDatatypes, HRESULT** ppErrors) =0;
  507. virtual HRESULT CreateEnumerator (REFIID riid, LPUNKNOWN* ppUnk) =0;
  508. };
  509. #else
  510. /* C interface definition for IOPCItemMgt */
  511. interface IOPCItemMgt
  512.     {
  513.     const IOPCItemMgtVtbl *  lpVtbl;
  514.     };
  515. #endif /* __cplusplus */
  516. EXTERN_C const IID IID_IOPCItemMgt;
  517. typedef struct
  518.     {
  519.     COM_VTBL_BEGIN
  520.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  521. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  522.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  523. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  524.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  525. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  526.     COM_VTBL_ENTRY (HRESULT, Next, (IEnumOPCItemAttributes* pThis, ULONG celt, OPCITEMATTRIBUTES** ppItemArray, ULONG* pceltFetched));
  527. #define IEnumOPCItemAttributes_Next(pThis, celt, ppItemArray, pceltFetched) pThis->lpVtbl->Next(COM_ADJUST_THIS(pThis), celt, ppItemArray, pceltFetched)
  528.     COM_VTBL_ENTRY (HRESULT, Skip, (IEnumOPCItemAttributes* pThis, ULONG celt));
  529. #define IEnumOPCItemAttributes_Skip(pThis, celt) pThis->lpVtbl->Skip(COM_ADJUST_THIS(pThis), celt)
  530.     COM_VTBL_ENTRY (HRESULT, Reset, (IEnumOPCItemAttributes* pThis));
  531. #define IEnumOPCItemAttributes_Reset(pThis) pThis->lpVtbl->Reset(COM_ADJUST_THIS(pThis))
  532.     COM_VTBL_ENTRY (HRESULT, Clone, (IEnumOPCItemAttributes* pThis, IEnumOPCItemAttributes** ppEnumItemAttributes));
  533. #define IEnumOPCItemAttributes_Clone(pThis, ppEnumItemAttributes) pThis->lpVtbl->Clone(COM_ADJUST_THIS(pThis), ppEnumItemAttributes)
  534.     COM_VTBL_END
  535.     } IEnumOPCItemAttributesVtbl;
  536. #ifdef __cplusplus
  537. interface IEnumOPCItemAttributes : public IUnknown
  538. {
  539. virtual HRESULT Next (ULONG celt, OPCITEMATTRIBUTES** ppItemArray, ULONG* pceltFetched) =0;
  540. virtual HRESULT Skip (ULONG celt) =0;
  541. virtual HRESULT Reset () =0;
  542. virtual HRESULT Clone (IEnumOPCItemAttributes** ppEnumItemAttributes) =0;
  543. };
  544. #else
  545. /* C interface definition for IEnumOPCItemAttributes */
  546. interface IEnumOPCItemAttributes
  547.     {
  548.     const IEnumOPCItemAttributesVtbl *  lpVtbl;
  549.     };
  550. #endif /* __cplusplus */
  551. EXTERN_C const IID IID_IEnumOPCItemAttributes;
  552. typedef struct
  553.     {
  554.     COM_VTBL_BEGIN
  555.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  556. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  557.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  558. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  559.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  560. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  561.     COM_VTBL_ENTRY (HRESULT, OnDataChange, (IOPCDataCallback* pThis, DWORD dwTransid, OPCHANDLE hGroup, HRESULT hrMasterquality, HRESULT hrMastererror, DWORD dwCount, OPCHANDLE* phClientItems, VARIANT* pvValues, WORD* pwQualities, FILETIME* pftTimeStamps, HRESULT* pErrors));
  562. #define IOPCDataCallback_OnDataChange(pThis, dwTransid, hGroup, hrMasterquality, hrMastererror, dwCount, phClientItems, pvValues, pwQualities, pftTimeStamps, pErrors) pThis->lpVtbl->OnDataChange(COM_ADJUST_THIS(pThis), dwTransid, hGroup, hrMasterquality, hrMastererror, dwCount, phClientItems, pvValues, pwQualities, pftTimeStamps, pErrors)
  563.     COM_VTBL_ENTRY (HRESULT, OnReadComplete, (IOPCDataCallback* pThis, DWORD dwTransid, OPCHANDLE hGroup, HRESULT hrMasterquality, HRESULT hrMastererror, DWORD dwCount, OPCHANDLE* phClientItems, VARIANT* pvValues, WORD* pwQualities, FILETIME* pftTimeStamps, HRESULT* pErrors));
  564. #define IOPCDataCallback_OnReadComplete(pThis, dwTransid, hGroup, hrMasterquality, hrMastererror, dwCount, phClientItems, pvValues, pwQualities, pftTimeStamps, pErrors) pThis->lpVtbl->OnReadComplete(COM_ADJUST_THIS(pThis), dwTransid, hGroup, hrMasterquality, hrMastererror, dwCount, phClientItems, pvValues, pwQualities, pftTimeStamps, pErrors)
  565.     COM_VTBL_ENTRY (HRESULT, OnWriteComplete, (IOPCDataCallback* pThis, DWORD dwTransid, OPCHANDLE hGroup, HRESULT hrMastererr, DWORD dwCount, OPCHANDLE* pClienthandles, HRESULT* pErrors));
  566. #define IOPCDataCallback_OnWriteComplete(pThis, dwTransid, hGroup, hrMastererr, dwCount, pClienthandles, pErrors) pThis->lpVtbl->OnWriteComplete(COM_ADJUST_THIS(pThis), dwTransid, hGroup, hrMastererr, dwCount, pClienthandles, pErrors)
  567.     COM_VTBL_ENTRY (HRESULT, OnCancelComplete, (IOPCDataCallback* pThis, DWORD dwTransid, OPCHANDLE hGroup));
  568. #define IOPCDataCallback_OnCancelComplete(pThis, dwTransid, hGroup) pThis->lpVtbl->OnCancelComplete(COM_ADJUST_THIS(pThis), dwTransid, hGroup)
  569.     COM_VTBL_END
  570.     } IOPCDataCallbackVtbl;
  571. #ifdef __cplusplus
  572. interface IOPCDataCallback : public IUnknown
  573. {
  574. virtual HRESULT OnDataChange (DWORD dwTransid, OPCHANDLE hGroup, HRESULT hrMasterquality, HRESULT hrMastererror, DWORD dwCount, OPCHANDLE* phClientItems, VARIANT* pvValues, WORD* pwQualities, FILETIME* pftTimeStamps, HRESULT* pErrors) =0;
  575. virtual HRESULT OnReadComplete (DWORD dwTransid, OPCHANDLE hGroup, HRESULT hrMasterquality, HRESULT hrMastererror, DWORD dwCount, OPCHANDLE* phClientItems, VARIANT* pvValues, WORD* pwQualities, FILETIME* pftTimeStamps, HRESULT* pErrors) =0;
  576. virtual HRESULT OnWriteComplete (DWORD dwTransid, OPCHANDLE hGroup, HRESULT hrMastererr, DWORD dwCount, OPCHANDLE* pClienthandles, HRESULT* pErrors) =0;
  577. virtual HRESULT OnCancelComplete (DWORD dwTransid, OPCHANDLE hGroup) =0;
  578. };
  579. #else
  580. /* C interface definition for IOPCDataCallback */
  581. interface IOPCDataCallback
  582.     {
  583.     const IOPCDataCallbackVtbl *  lpVtbl;
  584.     };
  585. #endif /* __cplusplus */
  586. EXTERN_C const IID IID_IOPCDataCallback;
  587. typedef struct
  588.     {
  589.     COM_VTBL_BEGIN
  590.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  591. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  592.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  593. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  594.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  595. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  596.     COM_VTBL_ENTRY (HRESULT, Read, (IOPCAsyncIO2* pThis, DWORD dwCount, OPCHANDLE* phServer, DWORD dwTransactionID, DWORD* pdwCancelID, HRESULT** ppErrors));
  597. #define IOPCAsyncIO2_Read(pThis, dwCount, phServer, dwTransactionID, pdwCancelID, ppErrors) pThis->lpVtbl->Read(COM_ADJUST_THIS(pThis), dwCount, phServer, dwTransactionID, pdwCancelID, ppErrors)
  598.     COM_VTBL_ENTRY (HRESULT, Write, (IOPCAsyncIO2* pThis, DWORD dwCount, OPCHANDLE* phServer, VARIANT* pItemValues, DWORD dwTransactionID, DWORD* pdwCancelID, HRESULT** ppErrors));
  599. #define IOPCAsyncIO2_Write(pThis, dwCount, phServer, pItemValues, dwTransactionID, pdwCancelID, ppErrors) pThis->lpVtbl->Write(COM_ADJUST_THIS(pThis), dwCount, phServer, pItemValues, dwTransactionID, pdwCancelID, ppErrors)
  600.     COM_VTBL_ENTRY (HRESULT, Refresh2, (IOPCAsyncIO2* pThis, OPCDATASOURCE dwSource, DWORD dwTransactionID, DWORD* pdwCancelID));
  601. #define IOPCAsyncIO2_Refresh2(pThis, dwSource, dwTransactionID, pdwCancelID) pThis->lpVtbl->Refresh2(COM_ADJUST_THIS(pThis), dwSource, dwTransactionID, pdwCancelID)
  602.     COM_VTBL_ENTRY (HRESULT, Cancel2, (IOPCAsyncIO2* pThis, DWORD dwCancelID));
  603. #define IOPCAsyncIO2_Cancel2(pThis, dwCancelID) pThis->lpVtbl->Cancel2(COM_ADJUST_THIS(pThis), dwCancelID)
  604.     COM_VTBL_ENTRY (HRESULT, SetEnable, (IOPCAsyncIO2* pThis, BOOL bEnable));
  605. #define IOPCAsyncIO2_SetEnable(pThis, bEnable) pThis->lpVtbl->SetEnable(COM_ADJUST_THIS(pThis), bEnable)
  606.     COM_VTBL_ENTRY (HRESULT, GetEnable, (IOPCAsyncIO2* pThis, BOOL* pbEnable));
  607. #define IOPCAsyncIO2_GetEnable(pThis, pbEnable) pThis->lpVtbl->GetEnable(COM_ADJUST_THIS(pThis), pbEnable)
  608.     COM_VTBL_END
  609.     } IOPCAsyncIO2Vtbl;
  610. #ifdef __cplusplus
  611. interface IOPCAsyncIO2 : public IUnknown
  612. {
  613. virtual HRESULT Read (DWORD dwCount, OPCHANDLE* phServer, DWORD dwTransactionID, DWORD* pdwCancelID, HRESULT** ppErrors) =0;
  614. virtual HRESULT Write (DWORD dwCount, OPCHANDLE* phServer, VARIANT* pItemValues, DWORD dwTransactionID, DWORD* pdwCancelID, HRESULT** ppErrors) =0;
  615. virtual HRESULT Refresh2 (OPCDATASOURCE dwSource, DWORD dwTransactionID, DWORD* pdwCancelID) =0;
  616. virtual HRESULT Cancel2 (DWORD dwCancelID) =0;
  617. virtual HRESULT SetEnable (BOOL bEnable) =0;
  618. virtual HRESULT GetEnable (BOOL* pbEnable) =0;
  619. };
  620. #else
  621. /* C interface definition for IOPCAsyncIO2 */
  622. interface IOPCAsyncIO2
  623.     {
  624.     const IOPCAsyncIO2Vtbl *  lpVtbl;
  625.     };
  626. #endif /* __cplusplus */
  627. EXTERN_C const IID IID_IOPCAsyncIO2;
  628. typedef struct
  629.     {
  630.     COM_VTBL_BEGIN
  631.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  632. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  633.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  634. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  635.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  636. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  637.     COM_VTBL_ENTRY (HRESULT, QueryAvailableProperties, (IOPCItemProperties* pThis, LPWSTR szItemID, DWORD* pdwCount, DWORD** ppPropertyIDs, LPWSTR** ppDescriptions, VARTYPE** ppvtDataTypes));
  638. #define IOPCItemProperties_QueryAvailableProperties(pThis, szItemID, pdwCount, ppPropertyIDs, ppDescriptions, ppvtDataTypes) pThis->lpVtbl->QueryAvailableProperties(COM_ADJUST_THIS(pThis), szItemID, pdwCount, ppPropertyIDs, ppDescriptions, ppvtDataTypes)
  639.     COM_VTBL_ENTRY (HRESULT, GetItemProperties, (IOPCItemProperties* pThis, LPWSTR szItemID, DWORD dwCount, DWORD* pdwPropertyIDs, VARIANT** ppvData, HRESULT** ppErrors));
  640. #define IOPCItemProperties_GetItemProperties(pThis, szItemID, dwCount, pdwPropertyIDs, ppvData, ppErrors) pThis->lpVtbl->GetItemProperties(COM_ADJUST_THIS(pThis), szItemID, dwCount, pdwPropertyIDs, ppvData, ppErrors)
  641.     COM_VTBL_ENTRY (HRESULT, LookupItemIDs, (IOPCItemProperties* pThis, LPWSTR szItemID, DWORD dwCount, DWORD* pdwPropertyIDs, LPWSTR** ppszNewItemIDs, HRESULT** ppErrors));
  642. #define IOPCItemProperties_LookupItemIDs(pThis, szItemID, dwCount, pdwPropertyIDs, ppszNewItemIDs, ppErrors) pThis->lpVtbl->LookupItemIDs(COM_ADJUST_THIS(pThis), szItemID, dwCount, pdwPropertyIDs, ppszNewItemIDs, ppErrors)
  643.     COM_VTBL_END
  644.     } IOPCItemPropertiesVtbl;
  645. #ifdef __cplusplus
  646. interface IOPCItemProperties : public IUnknown
  647. {
  648. virtual HRESULT QueryAvailableProperties (LPWSTR szItemID, DWORD* pdwCount, DWORD** ppPropertyIDs, LPWSTR** ppDescriptions, VARTYPE** ppvtDataTypes) =0;
  649. virtual HRESULT GetItemProperties (LPWSTR szItemID, DWORD dwCount, DWORD* pdwPropertyIDs, VARIANT** ppvData, HRESULT** ppErrors) =0;
  650. virtual HRESULT LookupItemIDs (LPWSTR szItemID, DWORD dwCount, DWORD* pdwPropertyIDs, LPWSTR** ppszNewItemIDs, HRESULT** ppErrors) =0;
  651. };
  652. #else
  653. /* C interface definition for IOPCItemProperties */
  654. interface IOPCItemProperties
  655.     {
  656.     const IOPCItemPropertiesVtbl *  lpVtbl;
  657.     };
  658. #endif /* __cplusplus */
  659. EXTERN_C const IID IID_IOPCItemProperties;
  660. #ifdef __cplusplus
  661. }
  662. #endif
  663. #endif /* __INCopcda_h */