Reactos
at master 846 lines 22 kB view raw
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 19 */ 20 21import "basetsd.h"; 22import "guiddef.h"; 23 24[ 25 uuid(D3980A60-910C-1068-9341-00DD010F2F1C), 26 version(0.1), 27 pointer_default(unique) 28] 29 30interface IWinTypes 31{ 32 33/******************** BASIC WIN32 TYPES ********************/ 34cpp_quote("#if 0 /* winnt.h */") /* don't redefine these */ 35 36typedef byte BYTE; 37typedef unsigned short WORD; 38typedef unsigned long DWORD; 39typedef long BOOL; 40typedef unsigned char UCHAR; 41typedef int INT; 42typedef unsigned int UINT; 43typedef short SHORT; 44typedef unsigned short USHORT; 45typedef long LONG; 46typedef unsigned long ULONG; 47typedef float FLOAT; 48 49typedef void *PVOID, *LPVOID; 50 51typedef DWORD *LPDWORD; 52 53typedef char CHAR; 54typedef [string] CHAR *LPSTR; 55typedef [string] const CHAR *LPCSTR; 56 57typedef wchar_t WCHAR; 58typedef [string] WCHAR *LPWSTR; 59typedef [string] const WCHAR *LPCWSTR; 60 61typedef boolean BOOLEAN; 62 63typedef DWORD COLORREF; 64 65typedef void *HANDLE; 66#define DECLARE_HANDLE(name) typedef void *name 67#define DECLARE_WIREM_HANDLE(name) typedef [wire_marshal(wire##name)] void*name 68 69DECLARE_HANDLE(HMODULE); 70DECLARE_HANDLE(HINSTANCE); 71DECLARE_HANDLE(HRGN); 72DECLARE_HANDLE(HTASK); 73DECLARE_HANDLE(HKEY); 74DECLARE_HANDLE(HDESK); 75DECLARE_HANDLE(HMF); 76DECLARE_HANDLE(HEMF); 77DECLARE_HANDLE(HPEN); 78DECLARE_HANDLE(HRSRC); 79DECLARE_HANDLE(HSTR); 80DECLARE_HANDLE(HWINSTA); 81DECLARE_HANDLE(HKL); 82DECLARE_HANDLE(HGDIOBJ); 83 84typedef HANDLE HDWP; 85 86typedef LONG_PTR LRESULT; 87 88typedef LONG HRESULT; 89typedef DWORD LCID; 90typedef USHORT LANGID; 91 92typedef unsigned __int64 DWORDLONG; 93typedef __int64 LONGLONG; 94typedef unsigned __int64 ULONGLONG; 95 96typedef struct _LARGE_INTEGER { 97 LONGLONG QuadPart; 98} LARGE_INTEGER; 99 100typedef struct _ULARGE_INTEGER { 101 ULONGLONG QuadPart; 102} ULARGE_INTEGER; 103 104typedef struct _SID_IDENTIFIER_AUTHORITY { 105 UCHAR Value[6]; 106} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY; 107 108typedef struct _SID { 109 UCHAR Revision; 110 UCHAR SubAuthorityCount; 111 SID_IDENTIFIER_AUTHORITY IdentifierAuthority; 112 [size_is(SubAuthorityCount)] ULONG SubAuthority[*]; 113} SID, *PISID; 114 115typedef void *PSID; 116 117typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL; 118 119typedef struct _ACL { 120 UCHAR AclRevision; 121 UCHAR Sbz1; 122 USHORT AclSize; 123 USHORT AceCount; 124 USHORT Sbz2; 125} ACL; 126typedef ACL *PACL; 127 128typedef struct _SECURITY_DESCRIPTOR { 129 UCHAR Revision; 130 UCHAR Sbz1; 131 SECURITY_DESCRIPTOR_CONTROL Control; 132 PSID Owner; 133 PSID Group; 134 PACL Sacl; 135 PACL Dacl; 136} SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR; 137 138typedef struct _SECURITY_ATTRIBUTES 139{ 140 DWORD nLength; 141 [size_is(nLength)] LPVOID lpSecurityDescriptor; 142 BOOL bInheritHandle; 143} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; 144 145typedef struct tagSIZE 146{ 147 LONG cx; 148 LONG cy; 149} SIZE, *PSIZE, *LPSIZE; 150typedef SIZE SIZEL, *PSIZEL, *LPSIZEL; 151 152typedef struct tagPOINT 153{ 154 LONG x; 155 LONG y; 156} POINT, *PPOINT, *LPPOINT; 157 158typedef struct _POINTL 159{ 160 LONG x; 161 LONG y; 162} POINTL, *PPOINTL; 163 164typedef struct tagRECT 165{ 166 LONG left; 167 LONG top; 168 LONG right; 169 LONG bottom; 170} RECT, *PRECT, *LPRECT; 171typedef const RECT *LPCRECT; 172 173typedef struct _RECTL 174{ 175 LONG left; 176 LONG top; 177 LONG right; 178 LONG bottom; 179} RECTL, *PRECTL, *LPRECTL; 180typedef const RECTL *LPCRECTL; 181 182typedef UINT_PTR WPARAM; 183typedef LONG_PTR LPARAM; 184 185cpp_quote("#endif /* winnt.h */") 186 187cpp_quote("#ifdef _MSC_VER") /* for IDL and MSVC only */ 188typedef double DOUBLE; 189cpp_quote("#else") 190cpp_quote("typedef double DECLSPEC_ALIGN(8) DOUBLE;") 191cpp_quote("#endif") 192 193cpp_quote("#ifndef _PALETTEENTRY_DEFINED") 194cpp_quote("#define _PALETTEENTRY_DEFINED") 195typedef struct tagPALETTEENTRY { 196 BYTE peRed; 197 BYTE peGreen; 198 BYTE peBlue; 199 BYTE peFlags; 200} PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY; 201cpp_quote("#endif") 202 203cpp_quote("#ifndef _LOGPALETTE_DEFINED") 204cpp_quote("#define _LOGPALETTE_DEFINED") 205typedef struct tagLOGPALETTE 206{ 207 WORD palVersion; 208 WORD palNumEntries; 209 [size_is(palNumEntries)] PALETTEENTRY palPalEntry[*]; 210} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE; 211cpp_quote("#endif") 212 213cpp_quote("#ifndef _SYSTEMTIME_") 214cpp_quote("#define _SYSTEMTIME_") 215typedef struct _SYSTEMTIME{ 216 WORD wYear; 217 WORD wMonth; 218 WORD wDayOfWeek; 219 WORD wDay; 220 WORD wHour; 221 WORD wMinute; 222 WORD wSecond; 223 WORD wMilliseconds; 224} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME; 225cpp_quote("#endif") 226 227cpp_quote("#ifndef _FILETIME_") 228cpp_quote("#define _FILETIME_") 229typedef struct _FILETIME { 230 DWORD dwLowDateTime; 231 DWORD dwHighDateTime; 232} FILETIME, *PFILETIME, *LPFILETIME; 233cpp_quote("#endif") 234 235cpp_quote("#ifndef _TEXTMETRIC_DEFINED") 236cpp_quote("#define _TEXTMETRIC_DEFINED") 237typedef struct tagTEXTMETRICA 238{ 239 LONG tmHeight; 240 LONG tmAscent; 241 LONG tmDescent; 242 LONG tmInternalLeading; 243 LONG tmExternalLeading; 244 LONG tmAveCharWidth; 245 LONG tmMaxCharWidth; 246 LONG tmWeight; 247 LONG tmOverhang; 248 LONG tmDigitizedAspectX; 249 LONG tmDigitizedAspectY; 250 BYTE tmFirstChar; 251 BYTE tmLastChar; 252 BYTE tmDefaultChar; 253 BYTE tmBreakChar; 254 BYTE tmItalic; 255 BYTE tmUnderlined; 256 BYTE tmStruckOut; 257 BYTE tmPitchAndFamily; 258 BYTE tmCharSet; 259} TEXTMETRICA, *LPTEXTMETRICA, *PTEXTMETRICA; 260 261typedef struct tagTEXTMETRICW 262{ 263 LONG tmHeight; 264 LONG tmAscent; 265 LONG tmDescent; 266 LONG tmInternalLeading; 267 LONG tmExternalLeading; 268 LONG tmAveCharWidth; 269 LONG tmMaxCharWidth; 270 LONG tmWeight; 271 LONG tmOverhang; 272 LONG tmDigitizedAspectX; 273 LONG tmDigitizedAspectY; 274 WCHAR tmFirstChar; 275 WCHAR tmLastChar; 276 WCHAR tmDefaultChar; 277 WCHAR tmBreakChar; 278 BYTE tmItalic; 279 BYTE tmUnderlined; 280 BYTE tmStruckOut; 281 BYTE tmPitchAndFamily; 282 BYTE tmCharSet; 283} TEXTMETRICW, *LPTEXTMETRICW, *PTEXTMETRICW; 284cpp_quote("#endif") 285 286/******************** BASIC COM/OLE TYPES ********************/ 287 288typedef WCHAR OLECHAR; 289typedef [string] OLECHAR *LPOLESTR; 290typedef [string] const OLECHAR *LPCOLESTR; 291cpp_quote("#ifndef __WINESRC__") 292cpp_quote("# ifdef WINE_UNICODE_NATIVE") 293cpp_quote("# define OLESTR(str) L##str") 294cpp_quote("# else") 295cpp_quote("# define OLESTR(str) u##str") 296cpp_quote("# endif") 297cpp_quote("#endif") 298 299typedef LONG SCODE; 300 301typedef struct _COAUTHIDENTITY { 302 [size_is(UserLength+1)] USHORT *User; 303 ULONG UserLength; 304 [size_is(DomainLength+1)] USHORT *Domain; 305 ULONG DomainLength; 306 [size_is(PasswordLength+1)] USHORT *Password; 307 ULONG PasswordLength; 308 ULONG Flags; 309} COAUTHIDENTITY; 310 311typedef struct _COAUTHINFO { 312 DWORD dwAuthnSvc; 313 DWORD dwAuthzSvc; 314 LPWSTR pwszServerPrincName; 315 DWORD dwAuthnLevel; 316 DWORD dwImpersonationLevel; 317 COAUTHIDENTITY *pAuthIdentityData; 318 DWORD dwCapabilities; 319} COAUTHINFO; 320 321typedef enum tagMEMCTX { 322 MEMCTX_TASK = 1, 323 MEMCTX_SHARED = 2, 324 MEMCTX_MACSYSTEM = 3, 325 MEMCTX_UNKNOWN = -1, 326 MEMCTX_SAME = -2 327} MEMCTX; 328 329cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED") 330cpp_quote("#define _ROT_COMPARE_MAX_DEFINED") 331cpp_quote("#define ROT_COMPARE_MAX 2048") 332cpp_quote("#endif") 333 334cpp_quote("#ifndef _ROTFLAGS_DEFINED") 335cpp_quote("#define _ROTFLAGS_DEFINED") 336cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1") 337cpp_quote("#define ROTFLAGS_ALLOWANYCLIENT 0x2") 338cpp_quote("#endif") 339 340typedef enum tagCLSCTX { 341 CLSCTX_INPROC_SERVER = 0x00000001, 342 CLSCTX_INPROC_HANDLER = 0x00000002, 343 CLSCTX_LOCAL_SERVER = 0x00000004, 344 CLSCTX_INPROC_SERVER16 = 0x00000008, 345 CLSCTX_REMOTE_SERVER = 0x00000010, 346 CLSCTX_INPROC_HANDLER16 = 0x00000020, 347 CLSCTX_INPROC_SERVERX86 = 0x00000040, 348 CLSCTX_INPROC_HANDLERX86 = 0x00000080, 349 CLSCTX_ESERVER_HANDLER = 0x00000100, 350 CLSCTX_NO_CODE_DOWNLOAD = 0x00000400, 351 CLSCTX_NO_CUSTOM_MARSHAL = 0x00001000, 352 CLSCTX_ENABLE_CODE_DOWNLOAD = 0x00002000, 353 CLSCTX_NO_FAILURE_LOG = 0x00004000, 354 CLSCTX_DISABLE_AAA = 0x00008000, 355 CLSCTX_ENABLE_AAA = 0x00010000, 356 CLSCTX_FROM_DEFAULT_CONTEXT = 0x00020000, 357 CLSCTX_ACTIVATE_X86_SERVER = 0x00040000, 358 CLSCTX_ACTIVATE_32_BIT_SERVER = CLSCTX_ACTIVATE_X86_SERVER, 359 CLSCTX_ACTIVATE_64_BIT_SERVER = 0x00080000, 360 CLSCTX_ENABLE_CLOAKING = 0x00100000, 361 CLSCTX_APPCONTAINER = 0x00400000, 362 CLSCTX_ACTIVATE_AAA_AS_IU = 0x00800000, 363 CLSCTX_RESERVED6 = 0x01000000, 364 CLSCTX_ACTIVATE_ARM32_SERVER = 0x02000000, 365 CLSCTX_PS_DLL = 0x80000000, 366} CLSCTX; 367 368cpp_quote("#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)") 369cpp_quote("#define CLSCTX_ALL (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)") 370cpp_quote("#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)") 371 372typedef enum tagMSHLFLAGS { 373 MSHLFLAGS_NORMAL = 0, 374 MSHLFLAGS_TABLESTRONG = 1, 375 MSHLFLAGS_TABLEWEAK = 2, 376 MSHLFLAGS_NOPING = 4 377} MSHLFLAGS; 378 379typedef enum tagMSHCTX { 380 MSHCTX_LOCAL = 0, 381 MSHCTX_NOSHAREDMEM = 1, 382 MSHCTX_DIFFERENTMACHINE = 2, 383 MSHCTX_INPROC = 3, 384 MSHCTX_CROSSCTX = 4 385} MSHCTX; 386 387/******************** BLOB TYPES ********************/ 388 389typedef struct _BYTE_BLOB { 390 unsigned long clSize; 391 [size_is(clSize)] byte abData[]; 392} BYTE_BLOB; 393typedef [unique] BYTE_BLOB *UP_BYTE_BLOB; 394 395typedef struct _FLAGGED_BYTE_BLOB { 396 unsigned long fFlags; 397 unsigned long clSize; 398 [size_is(clSize)] byte abData[]; 399} FLAGGED_BYTE_BLOB; 400typedef [unique] FLAGGED_BYTE_BLOB *UP_FLAGGED_BYTE_BLOB; 401 402typedef struct _FLAGGED_WORD_BLOB { 403 unsigned long fFlags; 404 unsigned long clSize; 405 [size_is(clSize)] unsigned short asData[]; 406} FLAGGED_WORD_BLOB; 407typedef [unique] FLAGGED_WORD_BLOB *UP_FLAGGED_WORD_BLOB; 408 409typedef struct _BYTE_SIZEDARR { 410 unsigned long clSize; 411 [size_is(clSize)] byte *pData; 412} BYTE_SIZEDARR; 413 414typedef struct _SHORT_SIZEDARR { 415 unsigned long clSize; 416 [size_is(clSize)] unsigned short *pData; 417} WORD_SIZEDARR; 418 419typedef struct _LONG_SIZEDARR { 420 unsigned long clSize; 421 [size_is(clSize)] unsigned long *pData; 422} DWORD_SIZEDARR; 423 424typedef struct _HYPER_SIZEDARR { 425 unsigned long clSize; 426 [size_is(clSize)] hyper *pData; 427} HYPER_SIZEDARR; 428 429/******************** GDI TYPES ********************/ 430 431const unsigned long WDT_INPROC_CALL = 0x48746457; 432const unsigned long WDT_REMOTE_CALL = 0x52746457; 433const unsigned long WDT_INPROC64_CALL = 0x50746457; 434 435typedef union _userCLIPFORMAT switch(long fContext) u { 436 case WDT_INPROC_CALL: DWORD dwValue; 437 case WDT_REMOTE_CALL: LPWSTR pwszName; 438} userCLIPFORMAT; 439 440typedef [unique] userCLIPFORMAT *wireCLIPFORMAT; 441typedef [wire_marshal(wireCLIPFORMAT)] WORD CLIPFORMAT; 442 443typedef struct tagRemHGLOBAL { 444 long fNullHGlobal; 445 unsigned long cbData; 446 [size_is(cbData)] byte data[]; 447} RemHGLOBAL; 448 449typedef union _userHGLOBAL switch(long fContext) u { 450 case WDT_INPROC_CALL: long hInproc; 451 case WDT_REMOTE_CALL: FLAGGED_BYTE_BLOB *hRemote; 452 case WDT_INPROC64_CALL: __int64 hInproc64; 453} userHGLOBAL; 454 455typedef [unique] userHGLOBAL *wireHGLOBAL; 456 457typedef struct tagRemHMETAFILEPICT { 458 long mm; 459 long xExt; 460 long yExt; 461 unsigned long cbData; 462 [size_is(cbData)] byte data[]; 463} RemHMETAFILEPICT; 464 465typedef union _userHMETAFILE switch(long fContext) u { 466 case WDT_INPROC_CALL: long hInproc; 467 case WDT_REMOTE_CALL: BYTE_BLOB *hRemote; 468 case WDT_INPROC64_CALL: __int64 hInproc64; 469} userHMETAFILE; 470 471typedef [unique] userHMETAFILE *wireHMETAFILE; 472 473typedef struct _remoteMETAFILEPICT { 474 long mm; 475 long xExt; 476 long yExt; 477 userHMETAFILE *hMF; 478} remoteMETAFILEPICT; 479 480typedef union _userHMETAFILEPICT switch(long fContext) u { 481 case WDT_INPROC_CALL: long hInproc; 482 case WDT_REMOTE_CALL: remoteMETAFILEPICT *hRemote; 483 case WDT_INPROC64_CALL: __int64 hInproc64; 484} userHMETAFILEPICT; 485 486typedef [unique] userHMETAFILEPICT *wireHMETAFILEPICT; 487 488typedef struct tagRemHENHMETAFILE { 489 unsigned long cbData; 490 [size_is(cbData)] byte data[]; 491} RemHENHMETAFILE; 492 493typedef union _userHENHMETAFILE switch(long fContext) u { 494 case WDT_INPROC_CALL: long hInproc; 495 case WDT_REMOTE_CALL: BYTE_BLOB *hRemote; 496 case WDT_INPROC64_CALL: __int64 hInproc64; 497} userHENHMETAFILE; 498 499typedef [unique] userHENHMETAFILE *wireHENHMETAFILE; 500 501typedef struct tagRemHBITMAP 502{ 503 unsigned long cbData; 504 [size_is(cbData)] byte data[]; 505} RemHBITMAP; 506 507typedef struct _userBITMAP { 508 LONG bmType; 509 LONG bmWidth; 510 LONG bmHeight; 511 LONG bmWidthBytes; 512 WORD bmPlanes; 513 WORD bmBitsPixel; 514 ULONG cbSize; 515 [size_is(cbSize)] byte pBuffer[]; 516} userBITMAP; 517 518typedef union _userHBITMAP switch(long fContext) u { 519 case WDT_INPROC_CALL: long hInproc; 520 case WDT_REMOTE_CALL: userBITMAP *hRemote; 521 case WDT_INPROC64_CALL: __int64 hInproc64; 522} userHBITMAP; 523 524typedef [unique] userHBITMAP *wireHBITMAP; 525 526typedef struct tagRemHPALETTE { 527 unsigned long cbData; 528 [size_is(cbData)] byte data[]; 529} RemHPALETTE; 530 531typedef struct tagrpcLOGPALETTE { 532 WORD palVersion; 533 WORD palNumEntries; 534 [size_is(palNumEntries)] PALETTEENTRY palPalEntry[]; 535} rpcLOGPALETTE; 536 537typedef union _userHPALETTE switch(long fContext) u { 538 case WDT_INPROC_CALL: long hInproc; 539 case WDT_REMOTE_CALL: rpcLOGPALETTE *hRemote; 540 case WDT_INPROC64_CALL: __int64 hInproc64; 541} userHPALETTE; 542 543typedef [unique] userHPALETTE *wireHPALETTE; 544 545cpp_quote("#if 0") 546DECLARE_WIREM_HANDLE(HGLOBAL); 547typedef HGLOBAL HLOCAL; 548DECLARE_WIREM_HANDLE(HBITMAP); 549DECLARE_WIREM_HANDLE(HPALETTE); 550DECLARE_WIREM_HANDLE(HENHMETAFILE); 551DECLARE_WIREM_HANDLE(HMETAFILE); 552cpp_quote("#endif") 553DECLARE_WIREM_HANDLE(HMETAFILEPICT); 554 555typedef union _RemotableHandle switch (long fContext) u 556{ 557 case WDT_INPROC_CALL: long hInproc; 558 case WDT_REMOTE_CALL: long hRemote; 559} RemotableHandle; 560 561typedef [unique] RemotableHandle *wireHACCEL; 562typedef [unique] RemotableHandle *wireHBRUSH; 563typedef [unique] RemotableHandle *wireHDC; 564typedef [unique] RemotableHandle *wireHFONT; 565typedef [unique] RemotableHandle *wireHICON; 566typedef [unique] RemotableHandle *wireHMENU; 567typedef [unique] RemotableHandle *wireHWND; 568typedef [unique] RemotableHandle *wireHMONITOR; 569 570cpp_quote("#if 0") /* for IDL only (C/C++ defs are in windef.h) */ 571DECLARE_WIREM_HANDLE(HACCEL); 572DECLARE_WIREM_HANDLE(HBRUSH); 573DECLARE_WIREM_HANDLE(HDC); 574DECLARE_WIREM_HANDLE(HFONT); 575DECLARE_WIREM_HANDLE(HICON); 576DECLARE_WIREM_HANDLE(HMENU); 577DECLARE_WIREM_HANDLE(HWND); 578DECLARE_WIREM_HANDLE(HMONITOR); 579 580typedef HICON HCURSOR; 581 582typedef struct tagMSG 583{ 584 HWND hwnd; 585 UINT message; 586 WPARAM wParam; 587 LPARAM lParam; 588 DWORD time; 589 POINT pt; 590} MSG, *PMSG, *NPMSG, *LPMSG; 591 592cpp_quote("#endif") 593 594/******************** GUID TYPES ********************/ 595 596cpp_quote("#if 0") /* for IDL only (C/C++ defs are in guiddef.h) */ 597typedef GUID *REFGUID; 598typedef IID *REFIID; 599typedef CLSID *REFCLSID; 600typedef FMTID *REFFMTID; 601cpp_quote("#endif") 602 603/******************** MISC TYPES ********************/ 604 605typedef enum tagDVASPECT { 606 DVASPECT_CONTENT = 1, 607 DVASPECT_THUMBNAIL = 2, 608 DVASPECT_ICON = 4, 609 DVASPECT_DOCPRINT = 8 610} DVASPECT; 611 612typedef enum tagSTGC { 613 STGC_DEFAULT = 0, 614 STGC_OVERWRITE = 1, 615 STGC_ONLYIFCURRENT = 2, 616 STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4, 617 STGC_CONSOLIDATE = 8 618} STGC; 619 620typedef enum tagSTGMOVE { 621 STGMOVE_MOVE = 0, 622 STGMOVE_COPY = 1, 623 STGMOVE_SHALLOWCOPY = 2 624} STGMOVE; 625 626typedef enum tagSTATFLAG { 627 STATFLAG_DEFAULT = 0, 628 STATFLAG_NONAME = 1, 629 STATFLAG_NOOPEN = 2 630} STATFLAG; 631 632/******************** OLE Automation ********************/ 633 634cpp_quote("#ifdef _MSC_VER") /* for IDL and MSVC only */ 635typedef double DATE; 636cpp_quote("#else") 637cpp_quote("typedef double DECLSPEC_ALIGN(8) DATE;") 638cpp_quote("#endif") 639 640cpp_quote("#if 0") /* for IDL only */ 641typedef struct tagCY { 642 LONGLONG int64; 643} CY; 644cpp_quote("#else") /* C/C++ defs */ 645cpp_quote("#ifndef _tagCY_DEFINED") 646cpp_quote("#define _tagCY_DEFINED") 647cpp_quote("typedef union tagCY {") 648cpp_quote(" struct {") 649cpp_quote(" ULONG Lo;") 650cpp_quote(" LONG Hi;") 651cpp_quote(" } DUMMYSTRUCTNAME;") 652cpp_quote(" LONGLONG int64;") 653cpp_quote("} CY;") 654cpp_quote("#endif") 655cpp_quote("#endif") 656 657typedef CY *LPCY; 658 659cpp_quote("#if 0") /* for IDL only */ 660typedef struct tagDEC { 661 USHORT wReserved; 662 BYTE scale; 663 BYTE sign; 664 ULONG Hi32; 665 ULONGLONG Lo64; 666} DECIMAL; 667cpp_quote("#else") /* C/C++ defs */ 668cpp_quote("typedef struct tagDEC {") 669cpp_quote(" USHORT wReserved;") 670cpp_quote(" union {") 671cpp_quote(" struct {") 672cpp_quote(" BYTE scale;") 673cpp_quote(" BYTE sign;") 674cpp_quote(" } DUMMYSTRUCTNAME;") 675cpp_quote(" USHORT signscale;") 676cpp_quote(" } DUMMYUNIONNAME;") 677cpp_quote(" ULONG Hi32;") 678cpp_quote(" union {") 679cpp_quote(" struct {") 680cpp_quote(" ULONG Lo32;") 681cpp_quote(" ULONG Mid32;") 682cpp_quote(" } DUMMYSTRUCTNAME1;") 683cpp_quote(" ULONGLONG Lo64;") 684cpp_quote(" } DUMMYUNIONNAME1;") 685cpp_quote("} DECIMAL;") 686cpp_quote("#endif") 687cpp_quote("#define DECIMAL_NEG ((BYTE)0x80)") 688cpp_quote("#define DECIMAL_SETZERO(d) do{ memset(((char*)&(d)) + sizeof(USHORT), 0, sizeof(ULONG) * 3u + sizeof(USHORT)); }while (0)") 689 690typedef DECIMAL *LPDECIMAL; 691 692typedef [unique] FLAGGED_WORD_BLOB *wireBSTR; 693typedef [wire_marshal(wireBSTR)] OLECHAR *BSTR; 694typedef BSTR *LPBSTR; 695 696typedef short VARIANT_BOOL; 697typedef VARIANT_BOOL _VARIANT_BOOL; 698cpp_quote("#define VARIANT_TRUE ((VARIANT_BOOL)0xFFFF)") 699cpp_quote("#define VARIANT_FALSE ((VARIANT_BOOL)0x0000)") 700 701typedef struct tagBSTRBLOB { 702 ULONG cbSize; 703 [size_is(cbSize)] BYTE *pData; 704} BSTRBLOB, *LPBSTRBLOB; 705 706cpp_quote("#ifndef _tagBLOB_DEFINED") 707cpp_quote("#define _tagBLOB_DEFINED") 708cpp_quote("#define _BLOB_DEFINED") 709cpp_quote("#define _LPBLOB_DEFINED") 710typedef struct tagBLOB { 711 ULONG cbSize; 712 [size_is(cbSize)] BYTE *pBlobData; 713} BLOB, *LPBLOB; 714cpp_quote("#endif") 715 716typedef struct tagCLIPDATA { 717 ULONG cbSize; 718 long ulClipFmt; 719 [size_is(cbSize-sizeof(long))] BYTE *pClipData; 720} CLIPDATA; 721cpp_quote("#define CBPCLIPDATA(cb) ((cb).cbSize - sizeof((cb).ulClipFmt))") 722 723typedef ULONG PROPID; 724 725/******************** VARTYPE ********************/ 726 727typedef unsigned short VARTYPE; 728enum VARENUM { 729 VT_EMPTY = 0, 730 VT_NULL = 1, 731 VT_I2 = 2, 732 VT_I4 = 3, 733 VT_R4 = 4, 734 VT_R8 = 5, 735 VT_CY = 6, 736 VT_DATE = 7, 737 VT_BSTR = 8, 738 VT_DISPATCH = 9, 739 VT_ERROR = 10, 740 VT_BOOL = 11, 741 VT_VARIANT = 12, 742 VT_UNKNOWN = 13, 743 VT_DECIMAL = 14, 744 VT_I1 = 16, 745 VT_UI1 = 17, 746 VT_UI2 = 18, 747 VT_UI4 = 19, 748 VT_I8 = 20, 749 VT_UI8 = 21, 750 VT_INT = 22, 751 VT_UINT = 23, 752 VT_VOID = 24, 753 VT_HRESULT = 25, 754 VT_PTR = 26, 755 VT_SAFEARRAY = 27, 756 VT_CARRAY = 28, 757 VT_USERDEFINED = 29, 758 VT_LPSTR = 30, 759 VT_LPWSTR = 31, 760 VT_RECORD = 36, 761 VT_INT_PTR = 37, 762 VT_UINT_PTR = 38, 763 VT_FILETIME = 64, 764 VT_BLOB = 65, 765 VT_STREAM = 66, 766 VT_STORAGE = 67, 767 VT_STREAMED_OBJECT = 68, 768 VT_STORED_OBJECT = 69, 769 VT_BLOB_OBJECT = 70, 770 VT_CF = 71, 771 VT_CLSID = 72, 772 VT_VERSIONED_STREAM= 73, 773 VT_BSTR_BLOB = 0x0fff, 774 VT_VECTOR = 0x1000, 775 VT_ARRAY = 0x2000, 776 VT_BYREF = 0x4000, 777 VT_RESERVED = 0x8000, 778 VT_ILLEGAL = 0xffff, 779 VT_ILLEGALMASKED = 0x0fff, 780 VT_TYPEMASK = 0x0fff 781}; 782 783typedef struct tagCSPLATFORM 784{ 785 DWORD dwPlatformId; 786 DWORD dwVersionHi; 787 DWORD dwVersionLo; 788 DWORD dwProcessorArch; 789} CSPLATFORM; 790 791typedef struct tagQUERYCONTEXT 792{ 793 DWORD dwContext; 794 CSPLATFORM Platform; 795 LCID Locale; 796 DWORD dwVersionHi; 797 DWORD dwVersionLo; 798} QUERYCONTEXT; 799 800typedef [v1_enum] enum tagTYSPEC 801{ 802 TYSPEC_CLSID, 803 TYSPEC_FILEEXT, 804 TYSPEC_MIMETYPE, 805 TYSPEC_PROGID, 806 TYSPEC_FILENAME, 807 TYSPEC_PACKAGENAME, 808 TYSPEC_OBJECTID 809} TYSPEC; 810 811typedef union switch(DWORD tyspec) 812{ 813 case TYSPEC_CLSID: 814 CLSID clsid; 815 case TYSPEC_FILEEXT: 816 LPOLESTR pFileExt; 817 case TYSPEC_MIMETYPE: 818 LPOLESTR pMimeType; 819 case TYSPEC_PROGID: 820 LPOLESTR pProgId; 821 case TYSPEC_FILENAME: 822 LPOLESTR pFileName; 823 case TYSPEC_PACKAGENAME: 824 struct 825 { 826 LPOLESTR pPackageName; 827 GUID PolicyId; 828 } ByName; 829 case TYSPEC_OBJECTID: 830 struct 831 { 832 GUID ObjectId; 833 GUID PolicyId; 834 } ByObjectId; 835} uCLSSPEC; 836 837cpp_quote("#ifndef PROPERTYKEY_DEFINED") 838cpp_quote("#define PROPERTYKEY_DEFINED") 839typedef struct _tagpropertykey 840{ 841 GUID fmtid; 842 DWORD pid; 843} PROPERTYKEY; 844cpp_quote("#endif /*PROPERTYKEY_DEFINED*/") 845 846} /* interface IWinTypes */