wtypes.idl 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729
  1. /*
  2. * Basic types used by COM interfaces
  3. *
  4. * Copyright 2002 Ove Kaaven
  5. *
  6. * This library is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Lesser General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 2.1 of the License, or (at your option) any later version.
  10. *
  11. * This library is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public
  17. * License along with this library; if not, write to the Free Software
  18. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  19. */
  20. import "basetsd.h";
  21. import "guiddef.h";
  22. [
  23. uuid(D3980A60-910C-1068-9341-00DD010F2F1C),
  24. version(0.1),
  25. pointer_default(unique)
  26. ]
  27. interface IWinTypes
  28. {
  29. /******************** BASIC WIN32 TYPES ********************/
  30. cpp_quote("#if 0 /* winnt.h */") /* don't redefine these */
  31. typedef unsigned char BYTE;
  32. typedef unsigned short WORD;
  33. typedef unsigned long DWORD;
  34. typedef long BOOL;
  35. typedef unsigned char UCHAR;
  36. typedef int INT;
  37. typedef unsigned int UINT;
  38. typedef short SHORT;
  39. typedef unsigned short USHORT;
  40. typedef long LONG;
  41. typedef unsigned long ULONG;
  42. typedef float FLOAT;
  43. typedef void *PVOID, *LPVOID;
  44. typedef char CHAR;
  45. typedef [string] CHAR *LPSTR;
  46. typedef [string] const CHAR *LPCSTR;
  47. typedef wchar_t WCHAR;
  48. typedef [string] WCHAR *LPWSTR;
  49. typedef [string] const WCHAR *LPCWSTR;
  50. typedef boolean BOOLEAN;
  51. typedef DWORD COLORREF;
  52. typedef void *HANDLE;
  53. #define DECLARE_HANDLE(name) typedef void *name
  54. #define DECLARE_WIREM_HANDLE(name) typedef [wire_marshal(wire##name)] void*name
  55. DECLARE_HANDLE(HACCEL);
  56. DECLARE_HANDLE(HDC);
  57. DECLARE_HANDLE(HFONT);
  58. DECLARE_HANDLE(HWND);
  59. DECLARE_HANDLE(HMENU);
  60. DECLARE_HANDLE(HMODULE);
  61. DECLARE_HANDLE(HINSTANCE);
  62. DECLARE_HANDLE(HRGN);
  63. DECLARE_HANDLE(HTASK);
  64. DECLARE_HANDLE(HKEY);
  65. DECLARE_HANDLE(HICON);
  66. typedef LONG_PTR LRESULT;
  67. typedef LONG HRESULT;
  68. typedef DWORD LCID;
  69. typedef unsigned __int64 DWORDLONG;
  70. typedef __int64 LONGLONG;
  71. typedef unsigned __int64 ULONGLONG;
  72. typedef struct _LARGE_INTEGER {
  73. LONGLONG QuadPart;
  74. } LARGE_INTEGER;
  75. typedef struct _ULARGE_INTEGER {
  76. ULONGLONG QuadPart;
  77. } ULARGE_INTEGER;
  78. typedef struct _SID_IDENTIFIER_AUTHORITY {
  79. UCHAR Value[6];
  80. } SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
  81. typedef struct _SID {
  82. UCHAR Revision;
  83. UCHAR SubAuthorityCount;
  84. SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
  85. [size_is(SubAuthorityCount)] ULONG SubAuthority[*];
  86. } SID, *PSID;
  87. typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
  88. typedef struct _ACL {
  89. UCHAR AclRevision;
  90. UCHAR Sbz1;
  91. USHORT AclSize;
  92. USHORT AceCount;
  93. USHORT Sbz2;
  94. } ACL;
  95. typedef ACL *PACL;
  96. typedef struct _SECURITY_DESCRIPTOR {
  97. UCHAR Revision;
  98. UCHAR Sbz1;
  99. SECURITY_DESCRIPTOR_CONTROL Control;
  100. PSID Owner;
  101. PSID Group;
  102. PACL Sacl;
  103. PACL Dacl;
  104. } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
  105. typedef struct _SECURITY_ATTRIBUTES
  106. {
  107. DWORD nLength;
  108. LPVOID lpSecurityDescriptor;
  109. BOOL bInheritHandle;
  110. } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
  111. typedef struct tagSIZE
  112. {
  113. LONG cx;
  114. LONG cy;
  115. } SIZE, *PSIZE, *LPSIZE;
  116. typedef SIZE SIZEL, *PSIZEL, *LPSIZEL;
  117. typedef struct tagPOINT
  118. {
  119. LONG x;
  120. LONG y;
  121. } POINT, *PPOINT, *LPPOINT;
  122. typedef struct _POINTL
  123. {
  124. LONG x;
  125. LONG y;
  126. } POINTL, *PPOINTL;
  127. typedef struct tagRECT
  128. {
  129. LONG left;
  130. LONG top;
  131. LONG right;
  132. LONG bottom;
  133. } RECT, *PRECT, *LPRECT;
  134. typedef const RECT *LPCRECT;
  135. typedef struct _RECTL
  136. {
  137. LONG left;
  138. LONG top;
  139. LONG right;
  140. LONG bottom;
  141. } RECTL, *PRECTL, *LPRECTL;
  142. typedef const RECTL *LPCRECTL;
  143. typedef UINT_PTR WPARAM;
  144. typedef LONG_PTR LPARAM;
  145. typedef struct tagMSG
  146. {
  147. HWND hwnd;
  148. UINT message;
  149. WPARAM wParam;
  150. LPARAM lParam;
  151. DWORD time;
  152. POINT pt;
  153. } MSG, *PMSG, *NPMSG, *LPMSG;
  154. cpp_quote("#endif /* winnt.h */")
  155. cpp_quote("#if 0") /* for IDL only */
  156. typedef double DOUBLE;
  157. cpp_quote("#else")
  158. cpp_quote("typedef double DECLSPEC_ALIGN(8) DOUBLE;")
  159. cpp_quote("#endif")
  160. cpp_quote("#ifndef _PALETTEENTRY_DEFINED")
  161. cpp_quote("#define _PALETTEENTRY_DEFINED")
  162. typedef struct tagPALETTEENTRY {
  163. BYTE peRed;
  164. BYTE peGreen;
  165. BYTE peBlue;
  166. BYTE peFlags;
  167. } PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY;
  168. cpp_quote("#endif")
  169. cpp_quote("#ifndef _LOGPALETTE_DEFINED")
  170. cpp_quote("#define _LOGPALETTE_DEFINED")
  171. typedef struct tagLOGPALETTE
  172. {
  173. WORD palVersion;
  174. WORD palNumEntries;
  175. [size_is(palNumEntries)] PALETTEENTRY palPalEntry[*];
  176. } LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE;
  177. cpp_quote("#endif")
  178. cpp_quote("#ifndef _FILETIME_")
  179. cpp_quote("#define _FILETIME_")
  180. typedef struct _FILETIME {
  181. DWORD dwLowDateTime;
  182. DWORD dwHighDateTime;
  183. } FILETIME, *PFILETIME, *LPFILETIME;
  184. cpp_quote("#endif")
  185. cpp_quote("#ifndef _TEXTMETRIC_DEFINED")
  186. cpp_quote("#define _TEXTMETRIC_DEFINED")
  187. typedef struct tagTEXTMETRICA
  188. {
  189. LONG tmHeight;
  190. LONG tmAscent;
  191. LONG tmDescent;
  192. LONG tmInternalLeading;
  193. LONG tmExternalLeading;
  194. LONG tmAveCharWidth;
  195. LONG tmMaxCharWidth;
  196. LONG tmWeight;
  197. LONG tmOverhang;
  198. LONG tmDigitizedAspectX;
  199. LONG tmDigitizedAspectY;
  200. BYTE tmFirstChar;
  201. BYTE tmLastChar;
  202. BYTE tmDefaultChar;
  203. BYTE tmBreakChar;
  204. BYTE tmItalic;
  205. BYTE tmUnderlined;
  206. BYTE tmStruckOut;
  207. BYTE tmPitchAndFamily;
  208. BYTE tmCharSet;
  209. } TEXTMETRICA, *LPTEXTMETRICA, *PTEXTMETRICA;
  210. typedef struct tagTEXTMETRICW
  211. {
  212. LONG tmHeight;
  213. LONG tmAscent;
  214. LONG tmDescent;
  215. LONG tmInternalLeading;
  216. LONG tmExternalLeading;
  217. LONG tmAveCharWidth;
  218. LONG tmMaxCharWidth;
  219. LONG tmWeight;
  220. LONG tmOverhang;
  221. LONG tmDigitizedAspectX;
  222. LONG tmDigitizedAspectY;
  223. WCHAR tmFirstChar;
  224. WCHAR tmLastChar;
  225. WCHAR tmDefaultChar;
  226. WCHAR tmBreakChar;
  227. BYTE tmItalic;
  228. BYTE tmUnderlined;
  229. BYTE tmStruckOut;
  230. BYTE tmPitchAndFamily;
  231. BYTE tmCharSet;
  232. } TEXTMETRICW, *LPTEXTMETRICW, *PTEXTMETRICW;
  233. cpp_quote("#endif")
  234. /******************** BASIC COM/OLE TYPES ********************/
  235. typedef WCHAR OLECHAR;
  236. typedef [string] OLECHAR *LPOLESTR;
  237. typedef [string] const OLECHAR *LPCOLESTR;
  238. cpp_quote("#ifndef __WINESRC__")
  239. cpp_quote("#define OLESTR(str) L##str")
  240. cpp_quote("#endif")
  241. typedef LONG SCODE;
  242. typedef struct _COAUTHIDENTITY {
  243. [size_is(UserLength+1)] USHORT *User;
  244. ULONG UserLength;
  245. [size_is(DomainLength+1)] USHORT *Domain;
  246. ULONG DomainLength;
  247. [size_is(PasswordLength+1)] USHORT *Password;
  248. ULONG PasswordLength;
  249. ULONG Flags;
  250. } COAUTHIDENTITY;
  251. typedef struct _COAUTHINFO {
  252. DWORD dwAuthnSvc;
  253. DWORD dwAuthzSvc;
  254. LPWSTR pwszServerPrincName;
  255. DWORD dwAuthnLevel;
  256. DWORD dwImpersonationLevel;
  257. COAUTHIDENTITY *pAuthIdentityData;
  258. DWORD dwCapabilities;
  259. } COAUTHINFO;
  260. /* FIXME: COSERVERINFO was in Wine's pre-WIDL wtypes.h, but should be in objidl.idl */
  261. typedef struct _COSERVERINFO {
  262. DWORD dwReserved1;
  263. LPWSTR pwszName;
  264. COAUTHINFO *pAuthInfo;
  265. DWORD dwReserved2;
  266. } COSERVERINFO;
  267. typedef enum tagMEMCTX {
  268. MEMCTX_TASK = 1,
  269. MEMCTX_SHARED = 2,
  270. MEMCTX_MACSYSTEM = 3,
  271. MEMCTX_UNKNOWN = -1,
  272. MEMCTX_SAME = -2
  273. } MEMCTX;
  274. cpp_quote("#ifndef _ROTFLAGS_DEFINED")
  275. cpp_quote("#define _ROTFLAGS_DEFINED")
  276. cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1")
  277. cpp_quote("#define ROTFLAGS_ALLOWANYCLIENT 0x2")
  278. cpp_quote("#endif")
  279. typedef enum tagCLSCTX {
  280. CLSCTX_INPROC_SERVER = 0x1,
  281. CLSCTX_INPROC_HANDLER = 0x2,
  282. CLSCTX_LOCAL_SERVER = 0x4,
  283. CLSCTX_INPROC_SERVER16 = 0x8,
  284. CLSCTX_REMOTE_SERVER = 0x10,
  285. CLSCTX_INPROC_HANDLER16 = 0x20,
  286. CLSCTX_INPROC_SERVERX86 = 0x40,
  287. CLSCTX_INPROC_HANDLERX86 = 0x80,
  288. CLSCTX_ESERVER_HANDLER = 0x100,
  289. CLSCTX_NO_CODE_DOWNLOAD = 0x400,
  290. CLSCTX_NO_CUSTOM_MARSHAL = 0x1000,
  291. CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
  292. CLSCTX_NO_FAILURE_LOG = 0x4000,
  293. CLSCTX_DISABLE_AAA = 0x8000,
  294. CLSCTX_ENABLE_AAA = 0x10000,
  295. CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000
  296. } CLSCTX;
  297. cpp_quote("#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)")
  298. cpp_quote("#define CLSCTX_ALL (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)")
  299. cpp_quote("#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)")
  300. typedef enum tagMSHLFLAGS {
  301. MSHLFLAGS_NORMAL = 0,
  302. MSHLFLAGS_TABLESTRONG = 1,
  303. MSHLFLAGS_TABLEWEAK = 2,
  304. MSHLFLAGS_NOPING = 4
  305. } MSHLFLAGS;
  306. typedef enum tagMSHCTX {
  307. MSHCTX_LOCAL = 0,
  308. MSHCTX_NOSHAREDMEM = 1,
  309. MSHCTX_DIFFERENTMACHINE = 2,
  310. MSHCTX_INPROC = 3,
  311. MSHCTX_CROSSCTX = 4
  312. } MSHCTX;
  313. /******************** BLOB TYPES ********************/
  314. typedef struct _BYTE_BLOB {
  315. unsigned long clSize;
  316. [size_is(clSize)] byte abData[];
  317. } BYTE_BLOB;
  318. typedef [unique] BYTE_BLOB *UP_BYTE_BLOB;
  319. typedef struct _FLAGGED_BYTE_BLOB {
  320. unsigned long fFlags;
  321. unsigned long clSize;
  322. [size_is(clSize)] byte abData[];
  323. } FLAGGED_BYTE_BLOB;
  324. typedef [unique] FLAGGED_BYTE_BLOB *UP_FLAGGED_BYTE_BLOB;
  325. typedef struct _FLAGGED_WORD_BLOB {
  326. unsigned long fFlags;
  327. unsigned long clSize;
  328. [size_is(clSize)] unsigned short asData[];
  329. } FLAGGED_WORD_BLOB;
  330. typedef [unique] FLAGGED_WORD_BLOB *UP_FLAGGED_WORD_BLOB;
  331. typedef struct _BYTE_SIZEDARR {
  332. unsigned long clSize;
  333. [size_is(clSize)] byte *pData;
  334. } BYTE_SIZEDARR;
  335. typedef struct _SHORT_SIZEDARR {
  336. unsigned long clSize;
  337. [size_is(clSize)] unsigned short *pData;
  338. } WORD_SIZEDARR;
  339. typedef struct _LONG_SIZEDARR {
  340. unsigned long clSize;
  341. [size_is(clSize)] unsigned long *pData;
  342. } DWORD_SIZEDARR;
  343. typedef struct _HYPER_SIZEDARR {
  344. unsigned long clSize;
  345. [size_is(clSize)] hyper *pData;
  346. } HYPER_SIZEDARR;
  347. /******************** GDI TYPES ********************/
  348. const unsigned long WDT_INPROC_CALL = 0x48746457;
  349. const unsigned long WDT_REMOTE_CALL = 0x52746457;
  350. typedef union _userCLIPFORMAT switch(long fContext) u {
  351. case WDT_INPROC_CALL: DWORD dwValue;
  352. case WDT_REMOTE_CALL: LPWSTR pwszName;
  353. } userCLIPFORMAT;
  354. typedef [unique] userCLIPFORMAT *wireCLIPFORMAT;
  355. typedef [wire_marshal(wireCLIPFORMAT)] WORD CLIPFORMAT;
  356. typedef struct tagRemHGLOBAL {
  357. long fNullHGlobal;
  358. unsigned long cbData;
  359. [size_is(cbData)] byte data[];
  360. } RemHGLOBAL;
  361. typedef union _userHGLOBAL switch(long fContext) u {
  362. case WDT_INPROC_CALL: long hInproc;
  363. case WDT_REMOTE_CALL: FLAGGED_BYTE_BLOB *hRemote;
  364. default: long hGlobal;
  365. } userHGLOBAL;
  366. typedef [unique] userHGLOBAL *wireHGLOBAL;
  367. typedef struct tagRemHMETAFILEPICT {
  368. long mm;
  369. long xExt;
  370. long yExt;
  371. unsigned long cbData;
  372. [size_is(cbData)] byte data[];
  373. } RemHMETAFILEPICT;
  374. typedef union _userHMETAFILE switch(long fContext) u {
  375. case WDT_INPROC_CALL: long hInproc;
  376. case WDT_REMOTE_CALL: BYTE_BLOB *hRemote;
  377. default: long hGlobal;
  378. } userHMETAFILE;
  379. typedef [unique] userHMETAFILE *wireHMETAFILE;
  380. typedef struct _remoteMETAFILEPICT {
  381. long mm;
  382. long xExt;
  383. long yExt;
  384. userHMETAFILE *hMF;
  385. } remoteMETAFILEPICT;
  386. typedef union _userHMETAFILEPICT switch(long fContext) u {
  387. case WDT_INPROC_CALL: long hInproc;
  388. case WDT_REMOTE_CALL: remoteMETAFILEPICT *hRemote;
  389. default: long hGlobal;
  390. } userHMETAFILEPICT;
  391. typedef [unique] userHMETAFILEPICT *wireHMETAFILEPICT;
  392. typedef struct tagRemHENHMETAFILE {
  393. unsigned long cbData;
  394. [size_is(cbData)] byte data[];
  395. } RemHENHMETAFILE;
  396. typedef union _userHENHMETAFILE switch(long fContext) u {
  397. case WDT_INPROC_CALL: long hInproc;
  398. case WDT_REMOTE_CALL: BYTE_BLOB *hRemote;
  399. default: long hGlobal;
  400. } userHENHMETAFILE;
  401. typedef [unique] userHENHMETAFILE *wireHENHMETAFILE;
  402. typedef struct tagRemHBITMAP
  403. {
  404. unsigned long cbData;
  405. [size_is(cbData)] byte data[];
  406. } RemHBITMAP;
  407. typedef struct _userBITMAP {
  408. LONG bmType;
  409. LONG bmWidth;
  410. LONG bmHeight;
  411. LONG bmWidthBytes;
  412. WORD bmPlanes;
  413. WORD bmBitsPixel;
  414. ULONG cbSize;
  415. [size_is(cbSize)] byte pBuffer[];
  416. } userBITMAP;
  417. typedef union _userHBITMAP switch(long fContext) u {
  418. case WDT_INPROC_CALL: long hInproc;
  419. case WDT_REMOTE_CALL: userBITMAP *hRemote;
  420. default: long hGlobal;
  421. } userHBITMAP;
  422. typedef [unique] userHBITMAP *wireHBITMAP;
  423. typedef struct tagRemHPALETTE {
  424. unsigned long cbData;
  425. [size_is(cbData)] byte data[];
  426. } RemHPALETTE;
  427. typedef struct tagrpcLOGPALETTE {
  428. WORD palVersion;
  429. WORD palNumEntries;
  430. [size_is(palNumEntries)] PALETTEENTRY palPalEntry[];
  431. } rpcLOGPALETTE;
  432. typedef union _userHPALETTE switch(long fContext) u {
  433. case WDT_INPROC_CALL: long hInproc;
  434. case WDT_REMOTE_CALL: rpcLOGPALETTE *hRemote;
  435. default: long hGlobal;
  436. } userHPALETTE;
  437. typedef [unique] userHPALETTE *wireHPALETTE;
  438. cpp_quote("#if 0")
  439. DECLARE_WIREM_HANDLE(HGLOBAL);
  440. typedef HGLOBAL HLOCAL;
  441. DECLARE_WIREM_HANDLE(HBITMAP);
  442. DECLARE_WIREM_HANDLE(HPALETTE);
  443. DECLARE_WIREM_HANDLE(HENHMETAFILE);
  444. DECLARE_WIREM_HANDLE(HMETAFILE);
  445. cpp_quote("#endif")
  446. DECLARE_WIREM_HANDLE(HMETAFILEPICT);
  447. /******************** GUID TYPES ********************/
  448. cpp_quote("#if 0") /* for IDL only (C/C++ defs are in guiddef.h) */
  449. typedef GUID *REFGUID;
  450. typedef IID *REFIID;
  451. typedef CLSID *REFCLSID;
  452. typedef FMTID *REFFMTID;
  453. cpp_quote("#endif")
  454. /******************** MISC TYPES ********************/
  455. typedef enum tagDVASPECT {
  456. DVASPECT_CONTENT = 1,
  457. DVASPECT_THUMBNAIL = 2,
  458. DVASPECT_ICON = 4,
  459. DVASPECT_DOCPRINT = 8
  460. } DVASPECT;
  461. typedef enum tagSTGC {
  462. STGC_DEFAULT = 0,
  463. STGC_OVERWRITE = 1,
  464. STGC_ONLYIFCURRENT = 2,
  465. STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
  466. STGC_CONSOLIDATE = 8
  467. } STGC;
  468. typedef enum tagSTGMOVE {
  469. STGMOVE_MOVE = 0,
  470. STGMOVE_COPY = 1,
  471. STGMOVE_SHALLOWCOPY = 2
  472. } STGMOVE;
  473. typedef enum tagSTATFLAG {
  474. STATFLAG_DEFAULT = 0,
  475. STATFLAG_NONAME = 1,
  476. STATFLAG_NOOPEN = 2
  477. } STATFLAG;
  478. /******************** OLE Automation ********************/
  479. cpp_quote("#if 0") /* for IDL only */
  480. typedef double DATE;
  481. cpp_quote("#else")
  482. cpp_quote("typedef double DECLSPEC_ALIGN(8) DATE;")
  483. cpp_quote("#endif")
  484. cpp_quote("#if 0") /* for IDL only */
  485. typedef struct tagCY {
  486. LONGLONG int64;
  487. } CY;
  488. cpp_quote("#else") /* C/C++ defs */
  489. cpp_quote("#ifndef _tagCY_DEFINED")
  490. cpp_quote("#define _tagCY_DEFINED")
  491. cpp_quote("typedef union tagCY {")
  492. cpp_quote(" struct {")
  493. cpp_quote("#ifdef WORDS_BIGENDIAN")
  494. cpp_quote(" LONG Hi;")
  495. cpp_quote(" ULONG Lo;")
  496. cpp_quote("#else")
  497. cpp_quote(" ULONG Lo;")
  498. cpp_quote(" LONG Hi;")
  499. cpp_quote("#endif")
  500. cpp_quote(" } DUMMYSTRUCTNAME;")
  501. cpp_quote(" LONGLONG int64;")
  502. cpp_quote("} CY;")
  503. cpp_quote("#endif")
  504. cpp_quote("#endif")
  505. typedef CY *LPCY;
  506. cpp_quote("#if 0") /* for IDL only */
  507. typedef struct tagDEC {
  508. USHORT wReserved;
  509. BYTE scale;
  510. BYTE sign;
  511. ULONG Hi32;
  512. ULONGLONG Lo64;
  513. } DECIMAL;
  514. cpp_quote("#else") /* C/C++ defs */
  515. cpp_quote("typedef struct tagDEC {")
  516. cpp_quote(" USHORT wReserved;")
  517. cpp_quote(" union {")
  518. cpp_quote(" struct {")
  519. cpp_quote(" BYTE scale;")
  520. cpp_quote(" BYTE sign;")
  521. cpp_quote(" } DUMMYSTRUCTNAME;")
  522. cpp_quote(" USHORT signscale;")
  523. cpp_quote(" } DUMMYUNIONNAME;")
  524. cpp_quote(" ULONG Hi32;")
  525. cpp_quote(" union {")
  526. cpp_quote(" struct {")
  527. cpp_quote("#ifdef WORDS_BIGENDIAN")
  528. cpp_quote(" ULONG Mid32;")
  529. cpp_quote(" ULONG Lo32;")
  530. cpp_quote("#else")
  531. cpp_quote(" ULONG Lo32;")
  532. cpp_quote(" ULONG Mid32;")
  533. cpp_quote("#endif")
  534. cpp_quote(" } DUMMYSTRUCTNAME1;")
  535. cpp_quote(" ULONGLONG Lo64;")
  536. cpp_quote(" } DUMMYUNIONNAME1;")
  537. cpp_quote("} DECIMAL;")
  538. cpp_quote("#endif")
  539. cpp_quote("#define DECIMAL_NEG ((BYTE)0x80)")
  540. cpp_quote("#define DECIMAL_SETZERO(d) do{ memset(((char*)&(d)) + sizeof(USHORT), 0, sizeof(ULONG) * 3u + sizeof(USHORT)); }while (0)")
  541. typedef DECIMAL *LPDECIMAL;
  542. typedef [unique] FLAGGED_WORD_BLOB *wireBSTR;
  543. typedef [wire_marshal(wireBSTR)] OLECHAR *BSTR;
  544. typedef BSTR *LPBSTR;
  545. typedef short VARIANT_BOOL;
  546. typedef VARIANT_BOOL _VARIANT_BOOL;
  547. cpp_quote("#define VARIANT_TRUE ((VARIANT_BOOL)0xFFFF)")
  548. cpp_quote("#define VARIANT_FALSE ((VARIANT_BOOL)0x0000)")
  549. typedef struct tagBSTRBLOB {
  550. ULONG cbSize;
  551. [size_is(cbSize)] BYTE *pData;
  552. } BSTRBLOB, *LPBSTRBLOB;
  553. cpp_quote("#ifndef _tagBLOB_DEFINED")
  554. cpp_quote("#define _tagBLOB_DEFINED")
  555. cpp_quote("#define _BLOB_DEFINED")
  556. cpp_quote("#define _LPBLOB_DEFINED")
  557. typedef struct tagBLOB {
  558. ULONG cbSize;
  559. [size_is(cbSize)] BYTE *pBlobData;
  560. } BLOB, *LPBLOB;
  561. cpp_quote("#endif")
  562. typedef struct tagCLIPDATA {
  563. ULONG cbSize;
  564. long ulClipFmt;
  565. [size_is(cbSize-sizeof(long))] BYTE *pClipData;
  566. } CLIPDATA;
  567. cpp_quote("#define CBPCLIPDATA(cb) ((cb).cbSize - sizeof((cb).ulClipFmt))")
  568. typedef ULONG PROPID;
  569. /******************** VARTYPE ********************/
  570. typedef unsigned short VARTYPE;
  571. enum VARENUM {
  572. VT_EMPTY = 0,
  573. VT_NULL = 1,
  574. VT_I2 = 2,
  575. VT_I4 = 3,
  576. VT_R4 = 4,
  577. VT_R8 = 5,
  578. VT_CY = 6,
  579. VT_DATE = 7,
  580. VT_BSTR = 8,
  581. VT_DISPATCH = 9,
  582. VT_ERROR = 10,
  583. VT_BOOL = 11,
  584. VT_VARIANT = 12,
  585. VT_UNKNOWN = 13,
  586. VT_DECIMAL = 14,
  587. VT_I1 = 16,
  588. VT_UI1 = 17,
  589. VT_UI2 = 18,
  590. VT_UI4 = 19,
  591. VT_I8 = 20,
  592. VT_UI8 = 21,
  593. VT_INT = 22,
  594. VT_UINT = 23,
  595. VT_VOID = 24,
  596. VT_HRESULT = 25,
  597. VT_PTR = 26,
  598. VT_SAFEARRAY = 27,
  599. VT_CARRAY = 28,
  600. VT_USERDEFINED = 29,
  601. VT_LPSTR = 30,
  602. VT_LPWSTR = 31,
  603. VT_RECORD = 36,
  604. VT_INT_PTR = 37,
  605. VT_UINT_PTR = 38,
  606. VT_FILETIME = 64,
  607. VT_BLOB = 65,
  608. VT_STREAM = 66,
  609. VT_STORAGE = 67,
  610. VT_STREAMED_OBJECT = 68,
  611. VT_STORED_OBJECT = 69,
  612. VT_BLOB_OBJECT = 70,
  613. VT_CF = 71,
  614. VT_CLSID = 72,
  615. VT_BSTR_BLOB = 0x0fff,
  616. VT_VECTOR = 0x1000,
  617. VT_ARRAY = 0x2000,
  618. VT_BYREF = 0x4000,
  619. VT_RESERVED = 0x8000,
  620. VT_ILLEGAL = 0xffff,
  621. VT_ILLEGALMASKED = 0x0fff,
  622. VT_TYPEMASK = 0x0fff
  623. };
  624. } /* interface IWinTypes */