1cpp_quote("/**") 2cpp_quote(" * This file is part of the mingw-w64 runtime package.") 3cpp_quote(" * No warranty is given; refer to the file DISCLAIMER within this package.") 4cpp_quote(" */") 5cpp_quote("") 6 7import "wtypesbase.idl"; 8 9cpp_quote("") 10[uuid (D3980A60-910c-1068-9341-00dd010f2f1c), version (0.1), pointer_default (unique)] 11interface IWinTypes { 12 typedef struct tagRemHGLOBAL { 13 long fNullHGlobal; 14 unsigned long cbData; 15 [size_is (cbData)] byte data[]; 16 } RemHGLOBAL; 17 18cpp_quote("") 19 typedef struct tagRemHMETAFILEPICT { 20 long mm; 21 long xExt; 22 long yExt; 23 unsigned long cbData; 24 [size_is (cbData)] byte data[]; 25 } RemHMETAFILEPICT; 26 27cpp_quote("") 28 typedef struct tagRemHENHMETAFILE { 29 unsigned long cbData; 30 [size_is (cbData)] byte data[]; 31 } RemHENHMETAFILE; 32 typedef struct tagRemHBITMAP { 33 unsigned long cbData; 34 [size_is (cbData)] byte data[]; 35 } RemHBITMAP; 36 37cpp_quote("") 38 typedef struct tagRemHPALETTE { 39 unsigned long cbData; 40 [size_is (cbData)] byte data[]; 41 } RemHPALETTE; 42 43cpp_quote("") 44 typedef struct tagRemBRUSH { 45 unsigned long cbData; 46 [size_is (cbData)] byte data[]; 47 } RemHBRUSH; 48 49 cpp_quote("#if 0") 50 typedef UINT_PTR WPARAM; 51 typedef LONG_PTR LPARAM; 52 typedef LONG_PTR LRESULT; 53 54#define DECLARE_WIREM_HANDLE(name) typedef [wire_marshal (wire ## name)] void *name 55#define DECLARE_HANDLE(name) typedef void *name 56 57 DECLARE_HANDLE (HMODULE); 58 DECLARE_HANDLE (HINSTANCE); 59 DECLARE_HANDLE (HTASK); 60 DECLARE_HANDLE (HKEY); 61 DECLARE_HANDLE (HDESK); 62 DECLARE_HANDLE (HMF); 63 DECLARE_HANDLE (HEMF); 64 DECLARE_HANDLE (HPEN); 65 DECLARE_HANDLE (HRSRC); 66 DECLARE_HANDLE (HSTR); 67 DECLARE_HANDLE (HWINSTA); 68 DECLARE_HANDLE (HKL); 69 DECLARE_HANDLE (HGDIOBJ); 70 typedef HANDLE HDWP; 71 typedef INT HFILE; 72 73 typedef DWORD COLORREF; 74 typedef DWORD *LPCOLORREF; 75 76 typedef struct _RECTL { 77 LONG left; 78 LONG top; 79 LONG right; 80 LONG bottom; 81 } RECTL,*PRECTL,*LPRECTL; 82 83 typedef struct tagPOINT { 84 LONG x; 85 LONG y; 86 } POINT,*PPOINT,*LPPOINT; 87 88 typedef struct _POINTL { 89 LONG x; 90 LONG y; 91 } POINTL,*PPOINTL; 92 93 typedef struct tagSIZE { 94 LONG cx; 95 LONG cy; 96 } SIZE,*PSIZE,*LPSIZE; 97 98 typedef struct tagSIZEL { 99 LONG cx; 100 LONG cy; 101 } SIZEL,*PSIZEL,*LPSIZEL; 102 103 cpp_quote("#endif") 104 105cpp_quote("") 106 cpp_quote("#ifndef _PALETTEENTRY_DEFINED") 107 cpp_quote("#define _PALETTEENTRY_DEFINED") 108 cpp_quote("") 109 typedef struct tagPALETTEENTRY { 110 BYTE peRed; 111 BYTE peGreen; 112 BYTE peBlue; 113 BYTE peFlags; 114 } PALETTEENTRY,*PPALETTEENTRY,*LPPALETTEENTRY; 115 cpp_quote("#endif") 116 cpp_quote("") 117 cpp_quote("#ifndef _LOGPALETTE_DEFINED") 118 cpp_quote("#define _LOGPALETTE_DEFINED") 119 cpp_quote("") 120 typedef struct tagLOGPALETTE { 121 WORD palVersion; 122 WORD palNumEntries; 123 [size_is (palNumEntries)] PALETTEENTRY palPalEntry[]; 124 } LOGPALETTE,*PLOGPALETTE,*LPLOGPALETTE; 125 cpp_quote("#endif") 126 cpp_quote("") 127 cpp_quote("#ifndef _WINDEF_") 128 typedef const RECTL *LPCRECTL; 129 typedef struct tagRECT { 130 LONG left; 131 LONG top; 132 LONG right; 133 LONG bottom; 134 } RECT,*PRECT,*LPRECT; 135 typedef const RECT *LPCRECT; 136 cpp_quote("#endif") 137 138cpp_quote("") 139 cpp_quote("#if 0") 140 typedef FMTID *REFFMTID; 141 cpp_quote("#endif") 142 143cpp_quote("") 144 cpp_quote("#ifndef _ROTFLAGS_DEFINED") 145 cpp_quote("#define _ROTFLAGS_DEFINED") 146 cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1") 147 cpp_quote("#define ROTFLAGS_ALLOWANYCLIENT 0x2") 148 cpp_quote("#endif") 149 150cpp_quote("") 151 cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED") 152 cpp_quote("#define _ROT_COMPARE_MAX_DEFINED") 153 cpp_quote("#define ROT_COMPARE_MAX 2048") 154 cpp_quote("#endif") 155 156cpp_quote("") 157 typedef enum tagDVASPECT { 158 DVASPECT_CONTENT = 1, 159 DVASPECT_THUMBNAIL = 2, 160 DVASPECT_ICON = 4, 161 DVASPECT_DOCPRINT = 8 162 } DVASPECT; 163 164 cpp_quote("") 165 typedef enum tagSTGC { 166 STGC_DEFAULT = 0, 167 STGC_OVERWRITE = 1, 168 STGC_ONLYIFCURRENT = 2, 169 STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4, 170 STGC_CONSOLIDATE = 8 171 } STGC; 172 173cpp_quote("") 174 typedef enum tagSTGMOVE { 175 STGMOVE_MOVE = 0, 176 STGMOVE_COPY = 1, 177 STGMOVE_SHALLOWCOPY = 2 178 } STGMOVE; 179 180cpp_quote("") 181 typedef enum tagSTATFLAG { 182 STATFLAG_DEFAULT = 0, 183 STATFLAG_NONAME = 1, 184 STATFLAG_NOOPEN = 2 185 } STATFLAG; 186 typedef [context_handle] void *HCONTEXT; 187cpp_quote("") 188 cpp_quote("#ifndef _LCID_DEFINED") 189 cpp_quote("#define _LCID_DEFINED") 190 typedef DWORD LCID; 191 cpp_quote("#endif") 192 193cpp_quote("") 194 cpp_quote("#ifndef _LANGID_DEFINED") 195 cpp_quote("#define _LANGID_DEFINED") 196 typedef USHORT LANGID; 197 cpp_quote("#endif") 198 199cpp_quote("") 200 const unsigned long WDT_INPROC_CALL = 0x48746457; 201 const unsigned long WDT_REMOTE_CALL = 0x52746457; 202 const unsigned long WDT_INPROC64_CALL = 0x50746457; 203 204cpp_quote("") 205 typedef union _userCLIPFORMAT switch (long fContext) u { 206 case WDT_INPROC_CALL: DWORD dwValue; 207 case WDT_REMOTE_CALL: [string] wchar_t *pwszName; 208 } userCLIPFORMAT; 209cpp_quote("") 210 typedef [unique] userCLIPFORMAT *wireCLIPFORMAT; 211 typedef [wire_marshal (wireCLIPFORMAT)] WORD CLIPFORMAT; 212cpp_quote("") 213 typedef union _GDI_NONREMOTE switch (long fContext) u { 214 case WDT_INPROC_CALL: long hInproc; 215 case WDT_REMOTE_CALL: DWORD_BLOB *hRemote; 216 } GDI_NONREMOTE; 217cpp_quote("") 218 typedef union _userHGLOBAL switch (long fContext) u { 219 case WDT_INPROC_CALL: long hInproc; 220 case WDT_REMOTE_CALL: FLAGGED_BYTE_BLOB *hRemote; 221 case WDT_INPROC64_CALL: __int64 hInproc64; 222 } userHGLOBAL; 223cpp_quote("") 224 typedef [unique] userHGLOBAL *wireHGLOBAL; 225cpp_quote("") 226 typedef union _userHMETAFILE switch (long fContext) u { 227 case WDT_INPROC_CALL: long hInproc; 228 case WDT_REMOTE_CALL: BYTE_BLOB *hRemote; 229 case WDT_INPROC64_CALL: __int64 hInproc64; 230 } userHMETAFILE; 231cpp_quote("") 232 typedef struct _remoteMETAFILEPICT { 233 long mm; 234 long xExt; 235 long yExt; 236 userHMETAFILE *hMF; 237 } remoteMETAFILEPICT; 238cpp_quote("") 239 typedef union _userHMETAFILEPICT switch (long fContext) u { 240 case WDT_INPROC_CALL: long hInproc; 241 case WDT_REMOTE_CALL: remoteMETAFILEPICT *hRemote; 242 case WDT_INPROC64_CALL: __int64 hInproc64; 243 } userHMETAFILEPICT; 244cpp_quote("") 245 typedef union _userHENHMETAFILE switch (long fContext) u { 246 case WDT_INPROC_CALL: long hInproc; 247 case WDT_REMOTE_CALL: BYTE_BLOB *hRemote; 248 case WDT_INPROC64_CALL: __int64 hInproc64; 249 } userHENHMETAFILE; 250cpp_quote("") 251 typedef struct _userBITMAP { 252 LONG bmType; 253 LONG bmWidth; 254 LONG bmHeight; 255 LONG bmWidthBytes; 256 WORD bmPlanes; 257 WORD bmBitsPixel; 258 ULONG cbSize; 259 [size_is (cbSize)] byte pBuffer[]; 260 } userBITMAP; 261cpp_quote("") 262 typedef union _userHBITMAP switch (long fContext) u { 263 case WDT_INPROC_CALL: long hInproc; 264 case WDT_REMOTE_CALL: userBITMAP *hRemote; 265 case WDT_INPROC64_CALL: __int64 hInproc64; 266 } userHBITMAP; 267cpp_quote("") 268 typedef union _userHPALETTE switch (long fContext) u { 269 case WDT_INPROC_CALL: long hInproc; 270 case WDT_REMOTE_CALL: LOGPALETTE *hRemote; 271 case WDT_INPROC64_CALL: __int64 hInproc64; 272 } userHPALETTE; 273cpp_quote("") 274 typedef union _RemotableHandle switch (long fContext) u { 275 case WDT_INPROC_CALL: long hInproc; 276 case WDT_REMOTE_CALL: long hRemote; 277 } RemotableHandle; 278cpp_quote("") 279 typedef [unique] RemotableHandle *wireHWND; 280 typedef [unique] RemotableHandle *wireHMENU; 281 typedef [unique] RemotableHandle *wireHACCEL; 282 typedef [unique] RemotableHandle *wireHBRUSH; 283 typedef [unique] RemotableHandle *wireHFONT; 284 typedef [unique] RemotableHandle *wireHDC; 285 typedef [unique] RemotableHandle *wireHICON; 286 typedef [unique] RemotableHandle *wireHRGN; 287 typedef [unique] RemotableHandle *wireHMONITOR; 288cpp_quote("") 289 cpp_quote("#if 0") 290#ifndef _MIDL_DECLARE_WIREM_HANDLE 291 DECLARE_WIREM_HANDLE (HWND); 292 DECLARE_WIREM_HANDLE (HMENU); 293 DECLARE_WIREM_HANDLE (HACCEL); 294 DECLARE_WIREM_HANDLE (HBRUSH); 295 DECLARE_WIREM_HANDLE (HFONT); 296 DECLARE_WIREM_HANDLE (HDC); 297 DECLARE_WIREM_HANDLE (HICON); 298 DECLARE_WIREM_HANDLE (HRGN); 299 DECLARE_WIREM_HANDLE (HMONITOR); 300#endif 301 302cpp_quote("") 303 cpp_quote("#ifndef _HCURSOR_DEFINED") 304 cpp_quote("#define _HCURSOR_DEFINED") 305 typedef HICON HCURSOR; 306 cpp_quote("#endif") 307 cpp_quote("") 308 cpp_quote("#endif") 309 310cpp_quote("") 311 cpp_quote("#ifndef _TEXTMETRIC_DEFINED") 312 cpp_quote("#define _TEXTMETRIC_DEFINED") 313cpp_quote("") 314 typedef struct tagTEXTMETRICW { 315 LONG tmHeight; 316 LONG tmAscent; 317 LONG tmDescent; 318 LONG tmInternalLeading; 319 LONG tmExternalLeading; 320 LONG tmAveCharWidth; 321 LONG tmMaxCharWidth; 322 LONG tmWeight; 323 LONG tmOverhang; 324 LONG tmDigitizedAspectX; 325 LONG tmDigitizedAspectY; 326 WCHAR tmFirstChar; 327 WCHAR tmLastChar; 328 WCHAR tmDefaultChar; 329 WCHAR tmBreakChar; 330 BYTE tmItalic; 331 BYTE tmUnderlined; 332 BYTE tmStruckOut; 333 BYTE tmPitchAndFamily; 334 BYTE tmCharSet; 335 } TEXTMETRICW,*PTEXTMETRICW,*LPTEXTMETRICW; 336 cpp_quote("#endif") 337 338cpp_quote("") 339 cpp_quote("#ifndef _WIN32") 340 cpp_quote("#ifndef WINAPI") 341 typedef struct tagMSG { 342 HWND hwnd; 343 UINT message; 344 WPARAM wParam; 345 LPARAM lParam; 346 DWORD time; 347 POINT pt; 348 } MSG,*PMSG,*NPMSG,*LPMSG; 349 cpp_quote("#endif") 350 cpp_quote("#endif") 351 352cpp_quote("") 353 typedef [unique] userHBITMAP *wireHBITMAP; 354 typedef [unique] userHPALETTE *wireHPALETTE; 355 typedef [unique] userHENHMETAFILE *wireHENHMETAFILE; 356 typedef [unique] userHMETAFILE *wireHMETAFILE; 357 typedef [unique] userHMETAFILEPICT *wireHMETAFILEPICT; 358cpp_quote("") 359 cpp_quote("#if 0") 360 DECLARE_WIREM_HANDLE (HGLOBAL); 361 typedef HGLOBAL HLOCAL; 362 DECLARE_WIREM_HANDLE (HBITMAP); 363 DECLARE_WIREM_HANDLE (HPALETTE); 364 DECLARE_WIREM_HANDLE (HENHMETAFILE); 365 DECLARE_WIREM_HANDLE (HMETAFILE); 366 cpp_quote("#endif") 367cpp_quote("") 368 DECLARE_WIREM_HANDLE (HMETAFILEPICT); 369} 370 371cpp_quote("") 372typedef double DATE; 373cpp_quote("") 374cpp_quote("#ifndef _tagCY_DEFINED") 375cpp_quote("#define _tagCY_DEFINED") 376cpp_quote("#define _CY_DEFINED") 377cpp_quote("") 378cpp_quote("#if 0") 379typedef struct tagCY { 380 LONGLONG int64; 381} CY; 382cpp_quote("#else") 383cpp_quote("typedef union tagCY {") 384cpp_quote(" __C89_NAMELESS struct {") 385cpp_quote(" unsigned __LONG32 Lo;") 386cpp_quote(" __LONG32 Hi;") 387cpp_quote(" } DUMMYSTRUCTNAME;") 388cpp_quote(" LONGLONG int64;") 389cpp_quote("} CY;") 390cpp_quote("#endif") 391cpp_quote("#endif") 392 393cpp_quote("") 394typedef CY *LPCY; 395cpp_quote("") 396cpp_quote("#if 0") 397typedef struct tagDEC { 398 USHORT wReserved; 399 BYTE scale; 400 BYTE sign; 401 ULONG Hi32; 402 ULONGLONG Lo64; 403} DECIMAL; 404cpp_quote("#else") 405cpp_quote("typedef struct tagDEC {") 406cpp_quote(" USHORT wReserved;") 407cpp_quote(" __C89_NAMELESS union {") 408cpp_quote(" __C89_NAMELESS struct {") 409cpp_quote(" BYTE scale;") 410cpp_quote(" BYTE sign;") 411cpp_quote(" } DUMMYSTRUCTNAME;") 412cpp_quote(" USHORT signscale;") 413cpp_quote(" } DUMMYUNIONNAME;") 414cpp_quote(" ULONG Hi32;") 415cpp_quote(" __C89_NAMELESS union {") 416cpp_quote(" __C89_NAMELESS struct {") 417cpp_quote(" ULONG Lo32;") 418cpp_quote(" ULONG Mid32;") 419cpp_quote(" } DUMMYSTRUCTNAME2;") 420cpp_quote(" ULONGLONG Lo64;") 421cpp_quote(" } DUMMYUNIONNAME2;") 422cpp_quote("} DECIMAL;") 423 424cpp_quote("") 425cpp_quote("#define DECIMAL_NEG ((BYTE)0x80)") 426cpp_quote("#define DECIMAL_SETZERO(dec) { (dec).Lo64 = 0; (dec).Hi32 = 0; (dec).signscale = 0; }") 427cpp_quote("#endif") 428 429cpp_quote("") 430typedef DECIMAL *LPDECIMAL; 431 432cpp_quote("") 433typedef [unique] FLAGGED_WORD_BLOB *wireBSTR; 434typedef [wire_marshal (wireBSTR)] OLECHAR *BSTR; 435cpp_quote("") 436typedef BSTR *LPBSTR; 437cpp_quote("") 438typedef short VARIANT_BOOL; 439cpp_quote("#if 0") 440typedef VARIANT_BOOL _VARIANT_BOOL; 441cpp_quote("#else") 442cpp_quote("#define _VARIANT_BOOL /##/") 443cpp_quote("#endif") 444 445cpp_quote("") 446cpp_quote("#ifndef _tagBSTRBLOB_DEFINED") 447cpp_quote("#define _tagBSTRBLOB_DEFINED") 448cpp_quote("") 449typedef struct tagBSTRBLOB { 450 ULONG cbSize; 451 [size_is (cbSize)] BYTE *pData; 452} BSTRBLOB,*LPBSTRBLOB; 453cpp_quote("#endif") 454cpp_quote("") 455 456cpp_quote("#define VARIANT_TRUE ((VARIANT_BOOL)-1)") 457cpp_quote("#define VARIANT_FALSE ((VARIANT_BOOL)0)") 458 459cpp_quote("") 460typedef struct tagCLIPDATA { 461 ULONG cbSize; 462 long ulClipFmt; 463 [size_is (cbSize-4)] BYTE *pClipData; 464} CLIPDATA; 465cpp_quote("") 466cpp_quote("#define CBPCLIPDATA(clipdata) ((clipdata).cbSize - sizeof((clipdata).ulClipFmt))") 467 468cpp_quote("") 469typedef unsigned short VARTYPE; 470 471cpp_quote("") 472enum VARENUM { 473 VT_EMPTY = 0, 474 VT_NULL = 1, 475 VT_I2 = 2, 476 VT_I4 = 3, 477 VT_R4 = 4, 478 VT_R8 = 5, 479 VT_CY = 6, 480 VT_DATE = 7, 481 VT_BSTR = 8, 482 VT_DISPATCH = 9, 483 VT_ERROR = 10, 484 VT_BOOL = 11, 485 VT_VARIANT = 12, 486 VT_UNKNOWN = 13, 487 VT_DECIMAL = 14, 488 VT_I1 = 16, 489 VT_UI1 = 17, 490 VT_UI2 = 18, 491 VT_UI4 = 19, 492 VT_I8 = 20, 493 VT_UI8 = 21, 494 VT_INT = 22, 495 VT_UINT = 23, 496 VT_VOID = 24, 497 VT_HRESULT = 25, 498 VT_PTR = 26, 499 VT_SAFEARRAY = 27, 500 VT_CARRAY = 28, 501 VT_USERDEFINED = 29, 502 VT_LPSTR = 30, 503 VT_LPWSTR = 31, 504 VT_RECORD = 36, 505 VT_INT_PTR = 37, 506 VT_UINT_PTR = 38, 507 VT_FILETIME = 64, 508 VT_BLOB = 65, 509 VT_STREAM = 66, 510 VT_STORAGE = 67, 511 VT_STREAMED_OBJECT = 68, 512 VT_STORED_OBJECT = 69, 513 VT_BLOB_OBJECT = 70, 514 VT_CF = 71, 515 VT_CLSID = 72, 516 VT_VERSIONED_STREAM= 73, 517 VT_BSTR_BLOB = 0x0fff, 518 VT_VECTOR = 0x1000, 519 VT_ARRAY = 0x2000, 520 VT_BYREF = 0x4000, 521 VT_RESERVED = 0x8000, 522 VT_ILLEGAL = 0xffff, 523 VT_ILLEGALMASKED = 0x0fff, 524 VT_TYPEMASK = 0x0fff 525}; 526cpp_quote("") 527typedef ULONG PROPID; 528cpp_quote("") 529cpp_quote("#ifndef PROPERTYKEY_DEFINED") 530cpp_quote("#define PROPERTYKEY_DEFINED") 531cpp_quote("") 532typedef struct _tagpropertykey { 533 GUID fmtid; 534 DWORD pid; 535} PROPERTYKEY; 536cpp_quote("#endif") 537 538cpp_quote("") 539typedef struct tagCSPLATFORM { 540 DWORD dwPlatformId; 541 DWORD dwVersionHi; 542 DWORD dwVersionLo; 543 DWORD dwProcessorArch; 544} CSPLATFORM; 545 546cpp_quote("") 547typedef struct tagQUERYCONTEXT { 548 DWORD dwContext; 549 CSPLATFORM Platform; 550 LCID Locale; 551 DWORD dwVersionHi; 552 DWORD dwVersionLo; 553} QUERYCONTEXT; 554 555cpp_quote("") 556typedef [v1_enum] enum tagTYSPEC { 557 TYSPEC_CLSID, 558 TYSPEC_FILEEXT, 559 TYSPEC_MIMETYPE, 560 TYSPEC_FILENAME, 561 TYSPEC_PROGID, 562 TYSPEC_PACKAGENAME, 563 TYSPEC_OBJECTID 564} TYSPEC; 565 566cpp_quote("") 567typedef union switch (DWORD tyspec) { 568 case TYSPEC_CLSID: CLSID clsid; 569 case TYSPEC_FILEEXT: LPOLESTR pFileExt; 570 case TYSPEC_MIMETYPE: LPOLESTR pMimeType; 571 case TYSPEC_PROGID: LPOLESTR pProgId; 572 case TYSPEC_FILENAME: LPOLESTR pFileName; 573 case TYSPEC_PACKAGENAME: struct { 574 LPOLESTR pPackageName; 575 GUID PolicyId; 576 } ByName; 577 case TYSPEC_OBJECTID: struct { 578 GUID ObjectId; 579 GUID PolicyId; 580 } ByObjectId; 581} uCLSSPEC; 582