comCoreTypes.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:21k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* comCoreTypes.h generated by WIDL Version 2.2.1 on 10-Dec-01 at 11:59:07 AM */
  2. #include "comBase.h"
  3. #ifndef __INCcomCoreTypes_h
  4. #define __INCcomCoreTypes_h
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. int include_comCoreTypes (void);
  9. #ifndef __IWindTypes_FWD_DEFINED__
  10. #define __IWindTypes_FWD_DEFINED__
  11. typedef interface IWindTypes IWindTypes;
  12. #endif /* __IWindTypes_FWD_DEFINED__ */
  13. #ifndef __IUnknown_FWD_DEFINED__
  14. #define __IUnknown_FWD_DEFINED__
  15. typedef interface IUnknown IUnknown;
  16. #endif /* __IUnknown_FWD_DEFINED__ */
  17. #ifndef __IClassFactory_FWD_DEFINED__
  18. #define __IClassFactory_FWD_DEFINED__
  19. typedef interface IClassFactory IClassFactory;
  20. #endif /* __IClassFactory_FWD_DEFINED__ */
  21. #ifndef __IMultiQI_FWD_DEFINED__
  22. #define __IMultiQI_FWD_DEFINED__
  23. typedef interface IMultiQI IMultiQI;
  24. #endif /* __IMultiQI_FWD_DEFINED__ */
  25. #ifndef __IRegistry_FWD_DEFINED__
  26. #define __IRegistry_FWD_DEFINED__
  27. typedef interface IRegistry IRegistry;
  28. #endif /* __IRegistry_FWD_DEFINED__ */
  29. #ifndef __IEnumGUID_FWD_DEFINED__
  30. #define __IEnumGUID_FWD_DEFINED__
  31. typedef interface IEnumGUID IEnumGUID;
  32. #endif /* __IEnumGUID_FWD_DEFINED__ */
  33. #ifndef __IEnumString_FWD_DEFINED__
  34. #define __IEnumString_FWD_DEFINED__
  35. typedef interface IEnumString IEnumString;
  36. #endif /* __IEnumString_FWD_DEFINED__ */
  37. #ifndef __IEnumUnknown_FWD_DEFINED__
  38. #define __IEnumUnknown_FWD_DEFINED__
  39. typedef interface IEnumUnknown IEnumUnknown;
  40. #endif /* __IEnumUnknown_FWD_DEFINED__ */
  41. #ifndef __IMalloc_FWD_DEFINED__
  42. #define __IMalloc_FWD_DEFINED__
  43. typedef interface IMalloc IMalloc;
  44. #endif /* __IMalloc_FWD_DEFINED__ */
  45. #if 0
  46. /* These types are defined by the OS (vxWorks.h) */
  47. typedef unsigned char UCHAR;
  48. typedef unsigned short USHORT;
  49. typedef unsigned long ULONG;
  50. typedef int BOOL;
  51. typedef unsigned int UINT;
  52. #endif
  53. #if !(defined (CPU) && defined (SIMNT) && (CPU == SIMNT))
  54. /* These are defined by the SIMNT BSP */
  55. typedef short WORD;
  56. typedef unsigned long DWORD;
  57. #endif
  58. typedef unsigned char BYTE;
  59. typedef char CHAR;
  60. typedef short SHORT;
  61. typedef long LONG;
  62. typedef float FLOAT;
  63. typedef double DOUBLE;
  64. typedef long SCODE;
  65. typedef long HRESULT;
  66. typedef int INT;
  67. typedef unsigned short WCHAR;
  68. typedef unsigned short OLECHAR;
  69. typedef void* PVOID;
  70. typedef void* LPVOID;
  71. typedef OLECHAR* LPOLESTR;
  72. typedef WCHAR* LPWSTR;
  73. typedef const OLECHAR* LPCOLESTR;
  74. typedef const WCHAR* LPCWSTR;
  75. typedef long long LONGLONG;
  76. typedef long unsigned long ULONGLONG;
  77. #if 0
  78. typedef hyper LONGLONG;
  79. typedef unsigned hyper ULONGLONG;
  80. #else
  81. typedef LONGLONG hyper;
  82. typedef ULONGLONG uhyper;
  83. #endif
  84. typedef LONGLONG LARGE_INTEGER;
  85. typedef ULONGLONG ULARGE_INTEGER;
  86. struct _tagCY
  87. {
  88. LONGLONG int64;
  89. };
  90. typedef struct _tagCY CY;
  91. typedef LONGLONG OID;
  92. typedef LONGLONG OXID;
  93. typedef unsigned short PROTSEQ;
  94. /* Basic IDL types */
  95. typedef unsigned char byte;
  96. typedef unsigned char uchar;
  97. typedef unsigned long ulong;
  98. struct _FILETIME
  99. {
  100. DWORD dwLowDateTime;
  101. DWORD dwHighDateTime;
  102. };
  103. typedef struct _FILETIME FILETIME;
  104. typedef struct _FILETIME* PFILETIME;
  105. typedef struct _FILETIME* LPFILETIME;
  106. struct _SYSTEMTIME
  107. {
  108. WORD wYear;
  109. WORD wMonth;
  110. WORD wDayOfWeek;
  111. WORD wDay;
  112. WORD wHour;
  113. WORD wMinute;
  114. WORD wSecond;
  115. WORD wMilliseconds;
  116. };
  117. typedef struct _SYSTEMTIME SYSTEMTIME;
  118. typedef struct _SYSTEMTIME* PSYSTEMTIME;
  119. typedef struct _SYSTEMTIME* LPSYSTEMTIME;
  120. struct _SECURITY_ATTRIBUTES
  121. {
  122. DWORD nLength;
  123. LPVOID lpSecurityDescriptor;
  124. BOOL bInheritHandle;
  125. };
  126. typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES;
  127. typedef struct _SECURITY_ATTRIBUTES* PSECURITY_ATTRIBUTES;
  128. typedef struct _SECURITY_ATTRIBUTES* LPSECURITY_ATTRIBUTES;
  129. typedef USHORT SECURITY_DESCRIPTOR_CONTROL;
  130. typedef USHORT* PSECURITY_DESCRIPTOR_CONTROL;
  131. typedef PVOID PSID;
  132. struct _ACL
  133. {
  134. UCHAR AclRevision;
  135. UCHAR Sbz1;
  136. USHORT AclSize;
  137. USHORT AceCount;
  138. USHORT Sbz2;
  139. };
  140. typedef struct _ACL ACL;
  141. typedef ACL* PACL;
  142. struct _SECURITY_DESCRIPTOR
  143. {
  144. UCHAR Revision;
  145. UCHAR Sbz1;
  146. SECURITY_DESCRIPTOR_CONTROL Control;
  147. PSID Owner;
  148. PSID Group;
  149. PACL Sacl;
  150. PACL Dacl;
  151. };
  152. typedef struct _SECURITY_DESCRIPTOR SECURITY_DESCRIPTOR;
  153. typedef struct _SECURITY_DESCRIPTOR* PISECURITY_DESCRIPTOR;
  154. struct _COAUTHIDENTITY
  155. {
  156. LPWSTR User;
  157. ULONG UserLength;
  158. LPWSTR Domain;
  159. ULONG DomainLength;
  160. LPWSTR Password;
  161. ULONG PasswordLength;
  162. ULONG Flags;
  163. };
  164. typedef struct _COAUTHIDENTITY COAUTHIDENTITY;
  165. struct _COAUTHINFO
  166. {
  167. DWORD dwAuthnSvc;
  168. DWORD dwAuthzSvc;
  169. LPWSTR pwszServerPrincName;
  170. DWORD dwAuthnLevel;
  171. DWORD dwImpersonationLevel;
  172. COAUTHIDENTITY* pAuthIdentityData;
  173. DWORD dwCapabilities;
  174. };
  175. typedef struct _COAUTHINFO COAUTHINFO;
  176. struct _COSERVERINFO
  177. {
  178. DWORD dwReserved1;
  179. LPWSTR pwszName;
  180. COAUTHINFO* pAuthInfo;
  181. DWORD dwReserved2;
  182. };
  183. typedef struct _COSERVERINFO COSERVERINFO;
  184. #ifndef GUID_DEFINED
  185. #define GUID_DEFINED
  186. struct _GUID
  187. {
  188. DWORD Data1;
  189. WORD Data2;
  190. WORD Data3;
  191. BYTE Data4[8];
  192. };
  193. typedef struct _GUID GUID;
  194. typedef struct _GUID* LPGUID;
  195. #endif /* !GUID_DEFINED */
  196. extern const GUID GUID_NULL;
  197. #define IID_NULL GUID_NULL
  198. typedef GUID IID;
  199. typedef IID* LPIID;
  200. #define __IID_DEFINED__
  201. typedef GUID CLSID;
  202. typedef CLSID* LPCLSID;
  203. #define CLSID_NULL GUID_NULL
  204. typedef GUID IPID;
  205. typedef IPID* LPIPID;
  206. typedef GUID CATID;
  207. typedef CATID* LPCATID;
  208. #define CATID_NULL GUID_NULL
  209. typedef const GUID WIDL_CPP_REF  REFGUID;
  210. typedef const IID WIDL_CPP_REF  REFIID;
  211. typedef const CLSID WIDL_CPP_REF  REFCLSID;
  212. typedef const IPID WIDL_CPP_REF  REFIPID;
  213. enum tagCLSCTX
  214. {
  215. CLSCTX_INPROC_SERVER = 1,
  216. CLSCTX_INPROC_HANDLER = 2,
  217. CLSCTX_LOCAL_SERVER = 4,
  218. CLSCTX_INPROC_SERVER16 = 8,
  219. CLSCTX_REMOTE_SERVER = 16,
  220. CLSCTX_INPROC_HANDLER16 = 32,
  221. CLSCTX_INPROC_SERVERX86 = 64,
  222. CLSCTX_INPROC_HANDLERX86 = 128,
  223. };
  224. typedef enum tagCLSCTX CLSCTX;
  225. enum tagMSHLFLAGS
  226. {
  227. MSHLFLAGS_NORMAL = 0,
  228. MSHLFLAGS_TABLESTRONG = 1,
  229. MSHLFLAGS_TABLEWEAK = 2,
  230. MSHLFLAGS_NOPING = 4,
  231. };
  232. typedef enum tagMSHLFLAGS MSHLFLAGS;
  233. enum tagMSHCTX
  234. {
  235. MSHCTX_LOCAL = 0,
  236. MSHCTX_NOSHAREDMEM = 1,
  237. MSHCTX_DIFFERENTMACHINE = 2,
  238. MSHCTX_INPROC = 3,
  239. };
  240. typedef enum tagMSHCTX MSHCTX;
  241. typedef DWORD LCID;
  242. struct _BYTE_BLOB
  243. {
  244. unsigned long clSize;
  245. byte abData[1];
  246. };
  247. typedef struct _BYTE_BLOB BYTE_BLOB;
  248. typedef BYTE_BLOB* UP_BYTE_BLOB;
  249. struct _WORD_BLOB
  250. {
  251. unsigned long clSize;
  252. unsigned short asData[1];
  253. };
  254. typedef struct _WORD_BLOB WORD_BLOB;
  255. typedef WORD_BLOB* UP_WORD_BLOB;
  256. struct _DWORD_BLOB
  257. {
  258. unsigned long clSize;
  259. unsigned long alData[1];
  260. };
  261. typedef struct _DWORD_BLOB DWORD_BLOB;
  262. typedef DWORD_BLOB* UP_DWORD_BLOB;
  263. struct _FLAGGED_BYTE_BLOB
  264. {
  265. unsigned long fFlags;
  266. unsigned long clSize;
  267. byte abData[1];
  268. };
  269. typedef struct _FLAGGED_BYTE_BLOB FLAGGED_BYTE_BLOB;
  270. typedef FLAGGED_BYTE_BLOB* UP_FLAGGED_BYTE_BLOB;
  271. struct _FLAGGED_WORD_BLOB
  272. {
  273. unsigned long fFlags;
  274. unsigned long clSize;
  275. unsigned short asData[1];
  276. };
  277. typedef struct _FLAGGED_WORD_BLOB FLAGGED_WORD_BLOB;
  278. typedef FLAGGED_WORD_BLOB* UP_FLAGGED_WORD_BLOB;
  279. struct _BYTE_SIZEDARR
  280. {
  281. unsigned long clSize;
  282. byte* pData;
  283. };
  284. typedef struct _BYTE_SIZEDARR BYTE_SIZEDARR;
  285. struct _SHORT_SIZEDARR
  286. {
  287. unsigned long clSize;
  288. unsigned short* pData;
  289. };
  290. typedef struct _SHORT_SIZEDARR WORD_SIZEDARR;
  291. struct _LONG_SIZEDARR
  292. {
  293. unsigned long clSize;
  294. unsigned long* pData;
  295. };
  296. typedef struct _LONG_SIZEDARR DWORD_SIZEDARR;
  297. struct _HYPER_SIZEDARR
  298. {
  299. unsigned long clSize;
  300. hyper* pData;
  301. };
  302. typedef struct _HYPER_SIZEDARR HYPER_SIZEDARR;
  303. typedef double DATE;
  304. struct tagDEC
  305. {
  306. USHORT wReserved;
  307. BYTE scale;
  308. BYTE sign;
  309. ULONG Hi32;
  310. ULONGLONG Lo64;
  311. };
  312. typedef struct tagDEC DECIMAL;
  313. typedef OLECHAR* BSTR;
  314. typedef BSTR* LPBSTR;
  315. /* 0 == FALSE, -1 == TRUE */
  316. typedef short VARIANT_BOOL;
  317. typedef BYTE boolean;
  318. #if 0
  319. typedef boolean BOOLEAN;
  320. #endif
  321. #define VARIANT_TRUE ((VARIANT_BOOL)0xffff)
  322. #define VARIANT_FALSE ((VARIANT_BOOL)0)
  323. struct tagBLOB
  324. {
  325. ULONG cbSize;
  326. BYTE* pBlobData;
  327. };
  328. typedef struct tagBLOB BLOB;
  329. typedef struct tagBLOB* LPBLOB;
  330. typedef ULONG PROPID;
  331. typedef IUnknown* LPUNKNOWN;
  332. typedef IClassFactory* LPCLASSFACTORY;
  333. typedef IMultiQI* LPMULTIQI;
  334. struct tagMULTI_QI
  335. {
  336. const IID* pIID;
  337. IUnknown* pItf;
  338. HRESULT hr;
  339. };
  340. typedef struct tagMULTI_QI MULTI_QI;
  341. typedef IEnumGUID* LPENUMGUID;
  342. typedef IEnumString* LPENUMSTRING;
  343. typedef IEnumUnknown* LPENUMUNKNOWN;
  344. typedef struct
  345.     {
  346.     COM_VTBL_BEGIN
  347.     COM_VTBL_END
  348.     } IWindTypesVtbl;
  349. #ifdef __cplusplus
  350. interface IWindTypes {};
  351. #else
  352. /* C interface definition for IWindTypes */
  353. interface IWindTypes
  354.     {
  355.     const IWindTypesVtbl *  lpVtbl;
  356.     };
  357. #endif /* __cplusplus */
  358. EXTERN_C const IID IID_IWindTypes;
  359. typedef struct
  360.     {
  361.     COM_VTBL_BEGIN
  362.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  363. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  364.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  365. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  366.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  367. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  368.     COM_VTBL_END
  369.     } IUnknownVtbl;
  370. #ifdef __cplusplus
  371. interface IUnknown
  372. {
  373. virtual HRESULT QueryInterface (REFIID riid, void** ppvObject) =0;
  374. virtual ULONG AddRef () =0;
  375. virtual ULONG Release () =0;
  376. };
  377. #else
  378. /* C interface definition for IUnknown */
  379. interface IUnknown
  380.     {
  381.     const IUnknownVtbl *  lpVtbl;
  382.     };
  383. #endif /* __cplusplus */
  384. EXTERN_C const IID IID_IUnknown;
  385. typedef struct
  386.     {
  387.     COM_VTBL_BEGIN
  388.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  389. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  390.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  391. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  392.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  393. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  394.     COM_VTBL_ENTRY (HRESULT, CreateInstance, (IClassFactory* pThis, IUnknown* pUnkOuter, REFIID riid, void** ppvObject));
  395. #define IClassFactory_CreateInstance(pThis, pUnkOuter, riid, ppvObject) pThis->lpVtbl->CreateInstance(COM_ADJUST_THIS(pThis), pUnkOuter, riid, ppvObject)
  396.     COM_VTBL_ENTRY (HRESULT, LockServer, (IClassFactory* pThis, BOOL fLock));
  397. #define IClassFactory_LockServer(pThis, fLock) pThis->lpVtbl->LockServer(COM_ADJUST_THIS(pThis), fLock)
  398.     COM_VTBL_END
  399.     } IClassFactoryVtbl;
  400. #ifdef __cplusplus
  401. interface IClassFactory : public IUnknown
  402. {
  403. virtual HRESULT CreateInstance (IUnknown* pUnkOuter, REFIID riid, void** ppvObject) =0;
  404. virtual HRESULT LockServer (BOOL fLock) =0;
  405. };
  406. #else
  407. /* C interface definition for IClassFactory */
  408. interface IClassFactory
  409.     {
  410.     const IClassFactoryVtbl *  lpVtbl;
  411.     };
  412. #endif /* __cplusplus */
  413. EXTERN_C const IID IID_IClassFactory;
  414. typedef struct
  415.     {
  416.     COM_VTBL_BEGIN
  417.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  418. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  419.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  420. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  421.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  422. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  423.     COM_VTBL_ENTRY (HRESULT, QueryMultipleInterfaces, (IMultiQI* pThis, ULONG cMQIs, MULTI_QI* pMQIs));
  424. #define IMultiQI_QueryMultipleInterfaces(pThis, cMQIs, pMQIs) pThis->lpVtbl->QueryMultipleInterfaces(COM_ADJUST_THIS(pThis), cMQIs, pMQIs)
  425.     COM_VTBL_END
  426.     } IMultiQIVtbl;
  427. #ifdef __cplusplus
  428. interface IMultiQI : public IUnknown
  429. {
  430. virtual HRESULT QueryMultipleInterfaces (ULONG cMQIs, MULTI_QI* pMQIs) =0;
  431. };
  432. #else
  433. /* C interface definition for IMultiQI */
  434. interface IMultiQI
  435.     {
  436.     const IMultiQIVtbl *  lpVtbl;
  437.     };
  438. #endif /* __cplusplus */
  439. EXTERN_C const IID IID_IMultiQI;
  440. typedef struct
  441.     {
  442.     COM_VTBL_BEGIN
  443.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  444. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  445.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  446. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  447.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  448. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  449.     COM_VTBL_ENTRY (HRESULT, RegisterClass, (IRegistry* pThis, REFCLSID clsid, void* pfnGetClassObject));
  450. #define IRegistry_RegisterClass(pThis, clsid, pfnGetClassObject) pThis->lpVtbl->RegisterClass(COM_ADJUST_THIS(pThis), clsid, pfnGetClassObject)
  451.     COM_VTBL_ENTRY (HRESULT, IsClassRegistered, (IRegistry* pThis, REFCLSID clsid));
  452. #define IRegistry_IsClassRegistered(pThis, clsid) pThis->lpVtbl->IsClassRegistered(COM_ADJUST_THIS(pThis), clsid)
  453.     COM_VTBL_ENTRY (HRESULT, CreateInstance, (IRegistry* pThis, REFCLSID clsid, IUnknown* pUnkOuter, DWORD dwClsContext, const char* hint, ULONG cMQIs, MULTI_QI* pMQIs));
  454. #define IRegistry_CreateInstance(pThis, clsid, pUnkOuter, dwClsContext, hint, cMQIs, pMQIs) pThis->lpVtbl->CreateInstance(COM_ADJUST_THIS(pThis), clsid, pUnkOuter, dwClsContext, hint, cMQIs, pMQIs)
  455.     COM_VTBL_ENTRY (HRESULT, GetClassObject, (IRegistry* pThis, REFCLSID clsid, REFIID iid, DWORD dwClsContext, const char* hint, IUnknown** ppClsObj));
  456. #define IRegistry_GetClassObject(pThis, clsid, iid, dwClsContext, hint, ppClsObj) pThis->lpVtbl->GetClassObject(COM_ADJUST_THIS(pThis), clsid, iid, dwClsContext, hint, ppClsObj)
  457.     COM_VTBL_ENTRY (HRESULT, GetClassID, (IRegistry* pThis, DWORD dwIndex, LPCLSID pclsid));
  458. #define IRegistry_GetClassID(pThis, dwIndex, pclsid) pThis->lpVtbl->GetClassID(COM_ADJUST_THIS(pThis), dwIndex, pclsid)
  459.     COM_VTBL_END
  460.     } IRegistryVtbl;
  461. #ifdef __cplusplus
  462. interface IRegistry : public IUnknown
  463. {
  464. virtual HRESULT RegisterClass (REFCLSID clsid, void* pfnGetClassObject) =0;
  465. virtual HRESULT IsClassRegistered (REFCLSID clsid) =0;
  466. virtual HRESULT CreateInstance (REFCLSID clsid, IUnknown* pUnkOuter, DWORD dwClsContext, const char* hint, ULONG cMQIs, MULTI_QI* pMQIs) =0;
  467. virtual HRESULT GetClassObject (REFCLSID clsid, REFIID iid, DWORD dwClsContext, const char* hint, IUnknown** ppClsObj) =0;
  468. virtual HRESULT GetClassID (DWORD dwIndex, LPCLSID pclsid) =0;
  469. };
  470. #else
  471. /* C interface definition for IRegistry */
  472. interface IRegistry
  473.     {
  474.     const IRegistryVtbl *  lpVtbl;
  475.     };
  476. #endif /* __cplusplus */
  477. EXTERN_C const IID IID_IRegistry;
  478. typedef struct
  479.     {
  480.     COM_VTBL_BEGIN
  481.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  482. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  483.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  484. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  485.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  486. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  487.     COM_VTBL_ENTRY (HRESULT, Next, (IEnumGUID* pThis, ULONG celt, GUID* rgelt, ULONG* pceltFetched));
  488. #define IEnumGUID_Next(pThis, celt, rgelt, pceltFetched) pThis->lpVtbl->Next(COM_ADJUST_THIS(pThis), celt, rgelt, pceltFetched)
  489.     COM_VTBL_ENTRY (HRESULT, Skip, (IEnumGUID* pThis, ULONG celt));
  490. #define IEnumGUID_Skip(pThis, celt) pThis->lpVtbl->Skip(COM_ADJUST_THIS(pThis), celt)
  491.     COM_VTBL_ENTRY (HRESULT, Reset, (IEnumGUID* pThis));
  492. #define IEnumGUID_Reset(pThis) pThis->lpVtbl->Reset(COM_ADJUST_THIS(pThis))
  493.     COM_VTBL_ENTRY (HRESULT, Clone, (IEnumGUID* pThis, IEnumGUID** ppenum));
  494. #define IEnumGUID_Clone(pThis, ppenum) pThis->lpVtbl->Clone(COM_ADJUST_THIS(pThis), ppenum)
  495.     COM_VTBL_END
  496.     } IEnumGUIDVtbl;
  497. #ifdef __cplusplus
  498. interface IEnumGUID : public IUnknown
  499. {
  500. virtual HRESULT Next (ULONG celt, GUID* rgelt, ULONG* pceltFetched) =0;
  501. virtual HRESULT Skip (ULONG celt) =0;
  502. virtual HRESULT Reset () =0;
  503. virtual HRESULT Clone (IEnumGUID** ppenum) =0;
  504. };
  505. #else
  506. /* C interface definition for IEnumGUID */
  507. interface IEnumGUID
  508.     {
  509.     const IEnumGUIDVtbl *  lpVtbl;
  510.     };
  511. #endif /* __cplusplus */
  512. EXTERN_C const IID IID_IEnumGUID;
  513. typedef struct
  514.     {
  515.     COM_VTBL_BEGIN
  516.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  517. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  518.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  519. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  520.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  521. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  522.     COM_VTBL_ENTRY (HRESULT, Next, (IEnumString* pThis, ULONG celt, LPOLESTR* rgelt, ULONG* pceltFetched));
  523. #define IEnumString_Next(pThis, celt, rgelt, pceltFetched) pThis->lpVtbl->Next(COM_ADJUST_THIS(pThis), celt, rgelt, pceltFetched)
  524.     COM_VTBL_ENTRY (HRESULT, Skip, (IEnumString* pThis, ULONG celt));
  525. #define IEnumString_Skip(pThis, celt) pThis->lpVtbl->Skip(COM_ADJUST_THIS(pThis), celt)
  526.     COM_VTBL_ENTRY (HRESULT, Reset, (IEnumString* pThis));
  527. #define IEnumString_Reset(pThis) pThis->lpVtbl->Reset(COM_ADJUST_THIS(pThis))
  528.     COM_VTBL_ENTRY (HRESULT, Clone, (IEnumString* pThis, IEnumString** ppenum));
  529. #define IEnumString_Clone(pThis, ppenum) pThis->lpVtbl->Clone(COM_ADJUST_THIS(pThis), ppenum)
  530.     COM_VTBL_END
  531.     } IEnumStringVtbl;
  532. #ifdef __cplusplus
  533. interface IEnumString : public IUnknown
  534. {
  535. virtual HRESULT Next (ULONG celt, LPOLESTR* rgelt, ULONG* pceltFetched) =0;
  536. virtual HRESULT Skip (ULONG celt) =0;
  537. virtual HRESULT Reset () =0;
  538. virtual HRESULT Clone (IEnumString** ppenum) =0;
  539. };
  540. #else
  541. /* C interface definition for IEnumString */
  542. interface IEnumString
  543.     {
  544.     const IEnumStringVtbl *  lpVtbl;
  545.     };
  546. #endif /* __cplusplus */
  547. EXTERN_C const IID IID_IEnumString;
  548. typedef struct
  549.     {
  550.     COM_VTBL_BEGIN
  551.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  552. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  553.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  554. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  555.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  556. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  557.     COM_VTBL_ENTRY (HRESULT, Next, (IEnumUnknown* pThis, ULONG celt, IUnknown** rgelt, ULONG* pceltFetched));
  558. #define IEnumUnknown_Next(pThis, celt, rgelt, pceltFetched) pThis->lpVtbl->Next(COM_ADJUST_THIS(pThis), celt, rgelt, pceltFetched)
  559.     COM_VTBL_ENTRY (HRESULT, Skip, (IEnumUnknown* pThis, ULONG celt));
  560. #define IEnumUnknown_Skip(pThis, celt) pThis->lpVtbl->Skip(COM_ADJUST_THIS(pThis), celt)
  561.     COM_VTBL_ENTRY (HRESULT, Reset, (IEnumUnknown* pThis));
  562. #define IEnumUnknown_Reset(pThis) pThis->lpVtbl->Reset(COM_ADJUST_THIS(pThis))
  563.     COM_VTBL_ENTRY (HRESULT, Clone, (IEnumUnknown* pThis, IEnumUnknown** ppenum));
  564. #define IEnumUnknown_Clone(pThis, ppenum) pThis->lpVtbl->Clone(COM_ADJUST_THIS(pThis), ppenum)
  565.     COM_VTBL_END
  566.     } IEnumUnknownVtbl;
  567. #ifdef __cplusplus
  568. interface IEnumUnknown : public IUnknown
  569. {
  570. virtual HRESULT Next (ULONG celt, IUnknown** rgelt, ULONG* pceltFetched) =0;
  571. virtual HRESULT Skip (ULONG celt) =0;
  572. virtual HRESULT Reset () =0;
  573. virtual HRESULT Clone (IEnumUnknown** ppenum) =0;
  574. };
  575. #else
  576. /* C interface definition for IEnumUnknown */
  577. interface IEnumUnknown
  578.     {
  579.     const IEnumUnknownVtbl *  lpVtbl;
  580.     };
  581. #endif /* __cplusplus */
  582. EXTERN_C const IID IID_IEnumUnknown;
  583. typedef struct
  584.     {
  585.     COM_VTBL_BEGIN
  586.     COM_VTBL_ENTRY (HRESULT, QueryInterface, (IUnknown* pThis, REFIID riid, void** ppvObject));
  587. #define IUnknown_QueryInterface(pThis, riid, ppvObject) pThis->lpVtbl->QueryInterface(COM_ADJUST_THIS(pThis), riid, ppvObject)
  588.     COM_VTBL_ENTRY (ULONG, AddRef, (IUnknown* pThis));
  589. #define IUnknown_AddRef(pThis) pThis->lpVtbl->AddRef(COM_ADJUST_THIS(pThis))
  590.     COM_VTBL_ENTRY (ULONG, Release, (IUnknown* pThis));
  591. #define IUnknown_Release(pThis) pThis->lpVtbl->Release(COM_ADJUST_THIS(pThis))
  592.     COM_VTBL_ENTRY (void*, Alloc, (IMalloc* pThis, ULONG cb));
  593. #define IMalloc_Alloc(pThis, cb) pThis->lpVtbl->Alloc(COM_ADJUST_THIS(pThis), cb)
  594.     COM_VTBL_ENTRY (void*, Realloc, (IMalloc* pThis, void* pv, ULONG cb));
  595. #define IMalloc_Realloc(pThis, pv, cb) pThis->lpVtbl->Realloc(COM_ADJUST_THIS(pThis), pv, cb)
  596.     COM_VTBL_ENTRY (void, Free, (IMalloc* pThis, void* pv));
  597. #define IMalloc_Free(pThis, pv) pThis->lpVtbl->Free(COM_ADJUST_THIS(pThis), pv)
  598.     COM_VTBL_ENTRY (ULONG, GetSize, (IMalloc* pThis, void* pv));
  599. #define IMalloc_GetSize(pThis, pv) pThis->lpVtbl->GetSize(COM_ADJUST_THIS(pThis), pv)
  600.     COM_VTBL_ENTRY (int, DidAlloc, (IMalloc* pThis, void* pv));
  601. #define IMalloc_DidAlloc(pThis, pv) pThis->lpVtbl->DidAlloc(COM_ADJUST_THIS(pThis), pv)
  602.     COM_VTBL_ENTRY (void, HeapMinimize, (IMalloc* pThis));
  603. #define IMalloc_HeapMinimize(pThis) pThis->lpVtbl->HeapMinimize(COM_ADJUST_THIS(pThis))
  604.     COM_VTBL_END
  605.     } IMallocVtbl;
  606. #ifdef __cplusplus
  607. interface IMalloc : public IUnknown
  608. {
  609. virtual void* Alloc (ULONG cb) =0;
  610. virtual void* Realloc (void* pv, ULONG cb) =0;
  611. virtual void Free (void* pv) =0;
  612. virtual ULONG GetSize (void* pv) =0;
  613. virtual int DidAlloc (void* pv) =0;
  614. virtual void HeapMinimize () =0;
  615. };
  616. #else
  617. /* C interface definition for IMalloc */
  618. interface IMalloc
  619.     {
  620.     const IMallocVtbl *  lpVtbl;
  621.     };
  622. #endif /* __cplusplus */
  623. EXTERN_C const IID IID_IMalloc;
  624. #ifdef __cplusplus
  625. }
  626. #endif
  627. #endif /* __INCcomCoreTypes_h */