| /* | |
| * Basic types used by COM interfaces | |
| * | |
| * Copyright 2002 Ove Kaaven | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | |
| import "basetsd.h"; | |
| import "guiddef.h"; | |
| [ | |
| uuid(D3980A60-910C-1068-9341-00DD010F2F1C), | |
| version(0.1), | |
| pointer_default(unique) | |
| ] | |
| interface IWinTypes | |
| { | |
| /******************** BASIC WIN32 TYPES ********************/ | |
| cpp_quote("#if 0 /* winnt.h */") /* don't redefine these */ | |
| typedef unsigned char BYTE; | |
| typedef unsigned short WORD; | |
| typedef unsigned long DWORD; | |
| typedef long BOOL; | |
| typedef unsigned char UCHAR; | |
| typedef int INT; | |
| typedef unsigned int UINT; | |
| typedef short SHORT; | |
| typedef unsigned short USHORT; | |
| typedef long LONG; | |
| typedef unsigned long ULONG; | |
| typedef float FLOAT; | |
| typedef void *PVOID, *LPVOID; | |
| typedef DWORD *LPDWORD; | |
| typedef char CHAR; | |
| typedef [string] CHAR *LPSTR; | |
| typedef [string] const CHAR *LPCSTR; | |
| typedef wchar_t WCHAR; | |
| typedef [string] WCHAR *LPWSTR; | |
| typedef [string] const WCHAR *LPCWSTR; | |
| typedef boolean BOOLEAN; | |
| typedef DWORD COLORREF; | |
| typedef void *HANDLE; | |
| #define DECLARE_HANDLE(name) typedef void *name | |
| #define DECLARE_WIREM_HANDLE(name) typedef [wire_marshal(wire##name)] void*name | |
| DECLARE_HANDLE(HACCEL); | |
| DECLARE_HANDLE(HDC); | |
| DECLARE_HANDLE(HFONT); | |
| DECLARE_HANDLE(HWND); | |
| DECLARE_HANDLE(HMENU); | |
| DECLARE_HANDLE(HMODULE); | |
| DECLARE_HANDLE(HINSTANCE); | |
| DECLARE_HANDLE(HRGN); | |
| DECLARE_HANDLE(HTASK); | |
| DECLARE_HANDLE(HKEY); | |
| DECLARE_HANDLE(HICON); | |
| typedef LONG_PTR LRESULT; | |
| typedef LONG HRESULT; | |
| typedef DWORD LCID; | |
| typedef unsigned __int64 DWORDLONG; | |
| typedef __int64 LONGLONG; | |
| typedef unsigned __int64 ULONGLONG; | |
| typedef struct _LARGE_INTEGER { | |
| LONGLONG QuadPart; | |
| } LARGE_INTEGER; | |
| typedef struct _ULARGE_INTEGER { | |
| ULONGLONG QuadPart; | |
| } ULARGE_INTEGER; | |
| typedef struct _SID_IDENTIFIER_AUTHORITY { | |
| UCHAR Value[6]; | |
| } SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY; | |
| typedef struct _SID { | |
| UCHAR Revision; | |
| UCHAR SubAuthorityCount; | |
| SID_IDENTIFIER_AUTHORITY IdentifierAuthority; | |
| [size_is(SubAuthorityCount)] ULONG SubAuthority[*]; | |
| } SID, *PSID; | |
| typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL; | |
| typedef struct _ACL { | |
| UCHAR AclRevision; | |
| UCHAR Sbz1; | |
| USHORT AclSize; | |
| USHORT AceCount; | |
| USHORT Sbz2; | |
| } ACL; | |
| typedef ACL *PACL; | |
| typedef struct _SECURITY_DESCRIPTOR { | |
| UCHAR Revision; | |
| UCHAR Sbz1; | |
| SECURITY_DESCRIPTOR_CONTROL Control; | |
| PSID Owner; | |
| PSID Group; | |
| PACL Sacl; | |
| PACL Dacl; | |
| } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR; | |
| typedef struct _SECURITY_ATTRIBUTES | |
| { | |
| DWORD nLength; | |
| LPVOID lpSecurityDescriptor; | |
| BOOL bInheritHandle; | |
| } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; | |
| typedef struct tagSIZE | |
| { | |
| LONG cx; | |
| LONG cy; | |
| } SIZE, *PSIZE, *LPSIZE; | |
| typedef SIZE SIZEL, *PSIZEL, *LPSIZEL; | |
| typedef struct tagPOINT | |
| { | |
| LONG x; | |
| LONG y; | |
| } POINT, *PPOINT, *LPPOINT; | |
| typedef struct _POINTL | |
| { | |
| LONG x; | |
| LONG y; | |
| } POINTL, *PPOINTL; | |
| typedef struct tagRECT | |
| { | |
| LONG left; | |
| LONG top; | |
| LONG right; | |
| LONG bottom; | |
| } RECT, *PRECT, *LPRECT; | |
| typedef const RECT *LPCRECT; | |
| typedef struct _RECTL | |
| { | |
| LONG left; | |
| LONG top; | |
| LONG right; | |
| LONG bottom; | |
| } RECTL, *PRECTL, *LPRECTL; | |
| typedef const RECTL *LPCRECTL; | |
| typedef UINT_PTR WPARAM; | |
| typedef LONG_PTR LPARAM; | |
| typedef struct tagMSG | |
| { | |
| HWND hwnd; | |
| UINT message; | |
| WPARAM wParam; | |
| LPARAM lParam; | |
| DWORD time; | |
| POINT pt; | |
| } MSG, *PMSG, *NPMSG, *LPMSG; | |
| cpp_quote("#endif /* winnt.h */") | |
| cpp_quote("#if 0") /* for IDL only */ | |
| typedef double DOUBLE; | |
| cpp_quote("#else") | |
| cpp_quote("typedef double DECLSPEC_ALIGN(8) DOUBLE;") | |
| cpp_quote("#endif") | |
| cpp_quote("#ifndef _PALETTEENTRY_DEFINED") | |
| cpp_quote("#define _PALETTEENTRY_DEFINED") | |
| typedef struct tagPALETTEENTRY { | |
| BYTE peRed; | |
| BYTE peGreen; | |
| BYTE peBlue; | |
| BYTE peFlags; | |
| } PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY; | |
| cpp_quote("#endif") | |
| cpp_quote("#ifndef _LOGPALETTE_DEFINED") | |
| cpp_quote("#define _LOGPALETTE_DEFINED") | |
| typedef struct tagLOGPALETTE | |
| { | |
| WORD palVersion; | |
| WORD palNumEntries; | |
| [size_is(palNumEntries)] PALETTEENTRY palPalEntry[*]; | |
| } LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE; | |
| cpp_quote("#endif") | |
| cpp_quote("#ifndef _FILETIME_") | |
| cpp_quote("#define _FILETIME_") | |
| typedef struct _FILETIME { | |
| DWORD dwLowDateTime; | |
| DWORD dwHighDateTime; | |
| } FILETIME, *PFILETIME, *LPFILETIME; | |
| cpp_quote("#endif") | |
| cpp_quote("#ifndef _TEXTMETRIC_DEFINED") | |
| cpp_quote("#define _TEXTMETRIC_DEFINED") | |
| typedef struct tagTEXTMETRICA | |
| { | |
| LONG tmHeight; | |
| LONG tmAscent; | |
| LONG tmDescent; | |
| LONG tmInternalLeading; | |
| LONG tmExternalLeading; | |
| LONG tmAveCharWidth; | |
| LONG tmMaxCharWidth; | |
| LONG tmWeight; | |
| LONG tmOverhang; | |
| LONG tmDigitizedAspectX; | |
| LONG tmDigitizedAspectY; | |
| BYTE tmFirstChar; | |
| BYTE tmLastChar; | |
| BYTE tmDefaultChar; | |
| BYTE tmBreakChar; | |
| BYTE tmItalic; | |
| BYTE tmUnderlined; | |
| BYTE tmStruckOut; | |
| BYTE tmPitchAndFamily; | |
| BYTE tmCharSet; | |
| } TEXTMETRICA, *LPTEXTMETRICA, *PTEXTMETRICA; | |
| typedef struct tagTEXTMETRICW | |
| { | |
| LONG tmHeight; | |
| LONG tmAscent; | |
| LONG tmDescent; | |
| LONG tmInternalLeading; | |
| LONG tmExternalLeading; | |
| LONG tmAveCharWidth; | |
| LONG tmMaxCharWidth; | |
| LONG tmWeight; | |
| LONG tmOverhang; | |
| LONG tmDigitizedAspectX; | |
| LONG tmDigitizedAspectY; | |
| WCHAR tmFirstChar; | |
| WCHAR tmLastChar; | |
| WCHAR tmDefaultChar; | |
| WCHAR tmBreakChar; | |
| BYTE tmItalic; | |
| BYTE tmUnderlined; | |
| BYTE tmStruckOut; | |
| BYTE tmPitchAndFamily; | |
| BYTE tmCharSet; | |
| } TEXTMETRICW, *LPTEXTMETRICW, *PTEXTMETRICW; | |
| cpp_quote("#endif") | |
| /******************** BASIC COM/OLE TYPES ********************/ | |
| typedef WCHAR OLECHAR; | |
| typedef [string] OLECHAR *LPOLESTR; | |
| typedef [string] const OLECHAR *LPCOLESTR; | |
| cpp_quote("#ifndef __WINESRC__") | |
| cpp_quote("#define OLESTR(str) L##str") | |
| cpp_quote("#endif") | |
| typedef LONG SCODE; | |
| typedef struct _COAUTHIDENTITY { | |
| [size_is(UserLength+1)] USHORT *User; | |
| ULONG UserLength; | |
| [size_is(DomainLength+1)] USHORT *Domain; | |
| ULONG DomainLength; | |
| [size_is(PasswordLength+1)] USHORT *Password; | |
| ULONG PasswordLength; | |
| ULONG Flags; | |
| } COAUTHIDENTITY; | |
| typedef struct _COAUTHINFO { | |
| DWORD dwAuthnSvc; | |
| DWORD dwAuthzSvc; | |
| LPWSTR pwszServerPrincName; | |
| DWORD dwAuthnLevel; | |
| DWORD dwImpersonationLevel; | |
| COAUTHIDENTITY *pAuthIdentityData; | |
| DWORD dwCapabilities; | |
| } COAUTHINFO; | |
| /* FIXME: COSERVERINFO was in Wine's pre-WIDL wtypes.h, but should be in objidl.idl */ | |
| typedef struct _COSERVERINFO { | |
| DWORD dwReserved1; | |
| LPWSTR pwszName; | |
| COAUTHINFO *pAuthInfo; | |
| DWORD dwReserved2; | |
| } COSERVERINFO; | |
| typedef enum tagMEMCTX { | |
| MEMCTX_TASK = 1, | |
| MEMCTX_SHARED = 2, | |
| MEMCTX_MACSYSTEM = 3, | |
| MEMCTX_UNKNOWN = -1, | |
| MEMCTX_SAME = -2 | |
| } MEMCTX; | |
| cpp_quote("#ifndef _ROTFLAGS_DEFINED") | |
| cpp_quote("#define _ROTFLAGS_DEFINED") | |
| cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1") | |
| cpp_quote("#define ROTFLAGS_ALLOWANYCLIENT 0x2") | |
| cpp_quote("#endif") | |
| typedef enum tagCLSCTX { | |
| CLSCTX_INPROC_SERVER = 0x1, | |
| CLSCTX_INPROC_HANDLER = 0x2, | |
| CLSCTX_LOCAL_SERVER = 0x4, | |
| CLSCTX_INPROC_SERVER16 = 0x8, | |
| CLSCTX_REMOTE_SERVER = 0x10, | |
| CLSCTX_INPROC_HANDLER16 = 0x20, | |
| CLSCTX_INPROC_SERVERX86 = 0x40, | |
| CLSCTX_INPROC_HANDLERX86 = 0x80, | |
| CLSCTX_ESERVER_HANDLER = 0x100, | |
| CLSCTX_NO_CODE_DOWNLOAD = 0x400, | |
| CLSCTX_NO_CUSTOM_MARSHAL = 0x1000, | |
| CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000, | |
| CLSCTX_NO_FAILURE_LOG = 0x4000, | |
| CLSCTX_DISABLE_AAA = 0x8000, | |
| CLSCTX_ENABLE_AAA = 0x10000, | |
| CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000 | |
| } CLSCTX; | |
| cpp_quote("#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)") | |
| cpp_quote("#define CLSCTX_ALL (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)") | |
| cpp_quote("#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)") | |
| typedef enum tagMSHLFLAGS { | |
| MSHLFLAGS_NORMAL = 0, | |
| MSHLFLAGS_TABLESTRONG = 1, | |
| MSHLFLAGS_TABLEWEAK = 2, | |
| MSHLFLAGS_NOPING = 4 | |
| } MSHLFLAGS; | |
| typedef enum tagMSHCTX { | |
| MSHCTX_LOCAL = 0, | |
| MSHCTX_NOSHAREDMEM = 1, | |
| MSHCTX_DIFFERENTMACHINE = 2, | |
| MSHCTX_INPROC = 3, | |
| MSHCTX_CROSSCTX = 4 | |
| } MSHCTX; | |
| /******************** BLOB TYPES ********************/ | |
| typedef struct _BYTE_BLOB { | |
| unsigned long clSize; | |
| [size_is(clSize)] byte abData[]; | |
| } BYTE_BLOB; | |
| typedef [unique] BYTE_BLOB *UP_BYTE_BLOB; | |
| typedef struct _FLAGGED_BYTE_BLOB { | |
| unsigned long fFlags; | |
| unsigned long clSize; | |
| [size_is(clSize)] byte abData[]; | |
| } FLAGGED_BYTE_BLOB; | |
| typedef [unique] FLAGGED_BYTE_BLOB *UP_FLAGGED_BYTE_BLOB; | |
| typedef struct _FLAGGED_WORD_BLOB { | |
| unsigned long fFlags; | |
| unsigned long clSize; | |
| [size_is(clSize)] unsigned short asData[]; | |
| } FLAGGED_WORD_BLOB; | |
| typedef [unique] FLAGGED_WORD_BLOB *UP_FLAGGED_WORD_BLOB; | |
| typedef struct _BYTE_SIZEDARR { | |
| unsigned long clSize; | |
| [size_is(clSize)] byte *pData; | |
| } BYTE_SIZEDARR; | |
| typedef struct _SHORT_SIZEDARR { | |
| unsigned long clSize; | |
| [size_is(clSize)] unsigned short *pData; | |
| } WORD_SIZEDARR; | |
| typedef struct _LONG_SIZEDARR { | |
| unsigned long clSize; | |
| [size_is(clSize)] unsigned long *pData; | |
| } DWORD_SIZEDARR; | |
| typedef struct _HYPER_SIZEDARR { | |
| unsigned long clSize; | |
| [size_is(clSize)] hyper *pData; | |
| } HYPER_SIZEDARR; | |
| /******************** GDI TYPES ********************/ | |
| const unsigned long WDT_INPROC_CALL = 0x48746457; | |
| const unsigned long WDT_REMOTE_CALL = 0x52746457; | |
| typedef union _userCLIPFORMAT switch(long fContext) u { | |
| case WDT_INPROC_CALL: DWORD dwValue; | |
| case WDT_REMOTE_CALL: LPWSTR pwszName; | |
| } userCLIPFORMAT; | |
| typedef [unique] userCLIPFORMAT *wireCLIPFORMAT; | |
| typedef [wire_marshal(wireCLIPFORMAT)] WORD CLIPFORMAT; | |
| typedef struct tagRemHGLOBAL { | |
| long fNullHGlobal; | |
| unsigned long cbData; | |
| [size_is(cbData)] byte data[]; | |
| } RemHGLOBAL; | |
| typedef union _userHGLOBAL switch(long fContext) u { | |
| case WDT_INPROC_CALL: long hInproc; | |
| case WDT_REMOTE_CALL: FLAGGED_BYTE_BLOB *hRemote; | |
| default: long hGlobal; | |
| } userHGLOBAL; | |
| typedef [unique] userHGLOBAL *wireHGLOBAL; | |
| typedef struct tagRemHMETAFILEPICT { | |
| long mm; | |
| long xExt; | |
| long yExt; | |
| unsigned long cbData; | |
| [size_is(cbData)] byte data[]; | |
| } RemHMETAFILEPICT; | |
| typedef union _userHMETAFILE switch(long fContext) u { | |
| case WDT_INPROC_CALL: long hInproc; | |
| case WDT_REMOTE_CALL: BYTE_BLOB *hRemote; | |
| default: long hGlobal; | |
| } userHMETAFILE; | |
| typedef [unique] userHMETAFILE *wireHMETAFILE; | |
| typedef struct _remoteMETAFILEPICT { | |
| long mm; | |
| long xExt; | |
| long yExt; | |
| userHMETAFILE *hMF; | |
| } remoteMETAFILEPICT; | |
| typedef union _userHMETAFILEPICT switch(long fContext) u { | |
| case WDT_INPROC_CALL: long hInproc; | |
| case WDT_REMOTE_CALL: remoteMETAFILEPICT *hRemote; | |
| default: long hGlobal; | |
| } userHMETAFILEPICT; | |
| typedef [unique] userHMETAFILEPICT *wireHMETAFILEPICT; | |
| typedef struct tagRemHENHMETAFILE { | |
| unsigned long cbData; | |
| [size_is(cbData)] byte data[]; | |
| } RemHENHMETAFILE; | |
| typedef union _userHENHMETAFILE switch(long fContext) u { | |
| case WDT_INPROC_CALL: long hInproc; | |
| case WDT_REMOTE_CALL: BYTE_BLOB *hRemote; | |
| default: long hGlobal; | |
| } userHENHMETAFILE; | |
| typedef [unique] userHENHMETAFILE *wireHENHMETAFILE; | |
| typedef struct tagRemHBITMAP | |
| { | |
| unsigned long cbData; | |
| [size_is(cbData)] byte data[]; | |
| } RemHBITMAP; | |
| typedef struct _userBITMAP { | |
| LONG bmType; | |
| LONG bmWidth; | |
| LONG bmHeight; | |
| LONG bmWidthBytes; | |
| WORD bmPlanes; | |
| WORD bmBitsPixel; | |
| ULONG cbSize; | |
| [size_is(cbSize)] byte pBuffer[]; | |
| } userBITMAP; | |
| typedef union _userHBITMAP switch(long fContext) u { | |
| case WDT_INPROC_CALL: long hInproc; | |
| case WDT_REMOTE_CALL: userBITMAP *hRemote; | |
| default: long hGlobal; | |
| } userHBITMAP; | |
| typedef [unique] userHBITMAP *wireHBITMAP; | |
| typedef struct tagRemHPALETTE { | |
| unsigned long cbData; | |
| [size_is(cbData)] byte data[]; | |
| } RemHPALETTE; | |
| typedef struct tagrpcLOGPALETTE { | |
| WORD palVersion; | |
| WORD palNumEntries; | |
| [size_is(palNumEntries)] PALETTEENTRY palPalEntry[]; | |
| } rpcLOGPALETTE; | |
| typedef union _userHPALETTE switch(long fContext) u { | |
| case WDT_INPROC_CALL: long hInproc; | |
| case WDT_REMOTE_CALL: rpcLOGPALETTE *hRemote; | |
| default: long hGlobal; | |
| } userHPALETTE; | |
| typedef [unique] userHPALETTE *wireHPALETTE; | |
| cpp_quote("#if 0") | |
| DECLARE_WIREM_HANDLE(HGLOBAL); | |
| typedef HGLOBAL HLOCAL; | |
| DECLARE_WIREM_HANDLE(HBITMAP); | |
| DECLARE_WIREM_HANDLE(HPALETTE); | |
| DECLARE_WIREM_HANDLE(HENHMETAFILE); | |
| DECLARE_WIREM_HANDLE(HMETAFILE); | |
| cpp_quote("#endif") | |
| DECLARE_WIREM_HANDLE(HMETAFILEPICT); | |
| /******************** GUID TYPES ********************/ | |
| cpp_quote("#if 0") /* for IDL only (C/C++ defs are in guiddef.h) */ | |
| typedef GUID *REFGUID; | |
| typedef IID *REFIID; | |
| typedef CLSID *REFCLSID; | |
| typedef FMTID *REFFMTID; | |
| cpp_quote("#endif") | |
| /******************** MISC TYPES ********************/ | |
| typedef enum tagDVASPECT { | |
| DVASPECT_CONTENT = 1, | |
| DVASPECT_THUMBNAIL = 2, | |
| DVASPECT_ICON = 4, | |
| DVASPECT_DOCPRINT = 8 | |
| } DVASPECT; | |
| typedef enum tagSTGC { | |
| STGC_DEFAULT = 0, | |
| STGC_OVERWRITE = 1, | |
| STGC_ONLYIFCURRENT = 2, | |
| STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4, | |
| STGC_CONSOLIDATE = 8 | |
| } STGC; | |
| typedef enum tagSTGMOVE { | |
| STGMOVE_MOVE = 0, | |
| STGMOVE_COPY = 1, | |
| STGMOVE_SHALLOWCOPY = 2 | |
| } STGMOVE; | |
| typedef enum tagSTATFLAG { | |
| STATFLAG_DEFAULT = 0, | |
| STATFLAG_NONAME = 1, | |
| STATFLAG_NOOPEN = 2 | |
| } STATFLAG; | |
| /******************** OLE Automation ********************/ | |
| cpp_quote("#if 0") /* for IDL only */ | |
| typedef double DATE; | |
| cpp_quote("#else") | |
| cpp_quote("typedef double DECLSPEC_ALIGN(8) DATE;") | |
| cpp_quote("#endif") | |
| cpp_quote("#if 0") /* for IDL only */ | |
| typedef struct tagCY { | |
| LONGLONG int64; | |
| } CY; | |
| cpp_quote("#else") /* C/C++ defs */ | |
| cpp_quote("#ifndef _tagCY_DEFINED") | |
| cpp_quote("#define _tagCY_DEFINED") | |
| cpp_quote("typedef union tagCY {") | |
| cpp_quote(" struct {") | |
| cpp_quote("#ifdef WORDS_BIGENDIAN") | |
| cpp_quote(" LONG Hi;") | |
| cpp_quote(" ULONG Lo;") | |
| cpp_quote("#else") | |
| cpp_quote(" ULONG Lo;") | |
| cpp_quote(" LONG Hi;") | |
| cpp_quote("#endif") | |
| cpp_quote(" } DUMMYSTRUCTNAME;") | |
| cpp_quote(" LONGLONG int64;") | |
| cpp_quote("} CY;") | |
| cpp_quote("#endif") | |
| cpp_quote("#endif") | |
| typedef CY *LPCY; | |
| cpp_quote("#if 0") /* for IDL only */ | |
| typedef struct tagDEC { | |
| USHORT wReserved; | |
| BYTE scale; | |
| BYTE sign; | |
| ULONG Hi32; | |
| ULONGLONG Lo64; | |
| } DECIMAL; | |
| cpp_quote("#else") /* C/C++ defs */ | |
| cpp_quote("typedef struct tagDEC {") | |
| cpp_quote(" USHORT wReserved;") | |
| cpp_quote(" union {") | |
| cpp_quote(" struct {") | |
| cpp_quote(" BYTE scale;") | |
| cpp_quote(" BYTE sign;") | |
| cpp_quote(" } DUMMYSTRUCTNAME;") | |
| cpp_quote(" USHORT signscale;") | |
| cpp_quote(" } DUMMYUNIONNAME;") | |
| cpp_quote(" ULONG Hi32;") | |
| cpp_quote(" union {") | |
| cpp_quote(" struct {") | |
| cpp_quote("#ifdef WORDS_BIGENDIAN") | |
| cpp_quote(" ULONG Mid32;") | |
| cpp_quote(" ULONG Lo32;") | |
| cpp_quote("#else") | |
| cpp_quote(" ULONG Lo32;") | |
| cpp_quote(" ULONG Mid32;") | |
| cpp_quote("#endif") | |
| cpp_quote(" } DUMMYSTRUCTNAME1;") | |
| cpp_quote(" ULONGLONG Lo64;") | |
| cpp_quote(" } DUMMYUNIONNAME1;") | |
| cpp_quote("} DECIMAL;") | |
| cpp_quote("#endif") | |
| cpp_quote("#define DECIMAL_NEG ((BYTE)0x80)") | |
| cpp_quote("#define DECIMAL_SETZERO(d) do{ memset(((char*)&(d)) + sizeof(USHORT), 0, sizeof(ULONG) * 3u + sizeof(USHORT)); }while (0)") | |
| typedef DECIMAL *LPDECIMAL; | |
| typedef [unique] FLAGGED_WORD_BLOB *wireBSTR; | |
| typedef [wire_marshal(wireBSTR)] OLECHAR *BSTR; | |
| typedef BSTR *LPBSTR; | |
| typedef short VARIANT_BOOL; | |
| typedef VARIANT_BOOL _VARIANT_BOOL; | |
| cpp_quote("#define VARIANT_TRUE ((VARIANT_BOOL)0xFFFF)") | |
| cpp_quote("#define VARIANT_FALSE ((VARIANT_BOOL)0x0000)") | |
| typedef struct tagBSTRBLOB { | |
| ULONG cbSize; | |
| [size_is(cbSize)] BYTE *pData; | |
| } BSTRBLOB, *LPBSTRBLOB; | |
| cpp_quote("#ifndef _tagBLOB_DEFINED") | |
| cpp_quote("#define _tagBLOB_DEFINED") | |
| cpp_quote("#define _BLOB_DEFINED") | |
| cpp_quote("#define _LPBLOB_DEFINED") | |
| typedef struct tagBLOB { | |
| ULONG cbSize; | |
| [size_is(cbSize)] BYTE *pBlobData; | |
| } BLOB, *LPBLOB; | |
| cpp_quote("#endif") | |
| typedef struct tagCLIPDATA { | |
| ULONG cbSize; | |
| long ulClipFmt; | |
| [size_is(cbSize-sizeof(long))] BYTE *pClipData; | |
| } CLIPDATA; | |
| cpp_quote("#define CBPCLIPDATA(cb) ((cb).cbSize - sizeof((cb).ulClipFmt))") | |
| typedef ULONG PROPID; | |
| /******************** VARTYPE ********************/ | |
| typedef unsigned short VARTYPE; | |
| enum VARENUM { | |
| VT_EMPTY = 0, | |
| VT_NULL = 1, | |
| VT_I2 = 2, | |
| VT_I4 = 3, | |
| VT_R4 = 4, | |
| VT_R8 = 5, | |
| VT_CY = 6, | |
| VT_DATE = 7, | |
| VT_BSTR = 8, | |
| VT_DISPATCH = 9, | |
| VT_ERROR = 10, | |
| VT_BOOL = 11, | |
| VT_VARIANT = 12, | |
| VT_UNKNOWN = 13, | |
| VT_DECIMAL = 14, | |
| VT_I1 = 16, | |
| VT_UI1 = 17, | |
| VT_UI2 = 18, | |
| VT_UI4 = 19, | |
| VT_I8 = 20, | |
| VT_UI8 = 21, | |
| VT_INT = 22, | |
| VT_UINT = 23, | |
| VT_VOID = 24, | |
| VT_HRESULT = 25, | |
| VT_PTR = 26, | |
| VT_SAFEARRAY = 27, | |
| VT_CARRAY = 28, | |
| VT_USERDEFINED = 29, | |
| VT_LPSTR = 30, | |
| VT_LPWSTR = 31, | |
| VT_RECORD = 36, | |
| VT_INT_PTR = 37, | |
| VT_UINT_PTR = 38, | |
| VT_FILETIME = 64, | |
| VT_BLOB = 65, | |
| VT_STREAM = 66, | |
| VT_STORAGE = 67, | |
| VT_STREAMED_OBJECT = 68, | |
| VT_STORED_OBJECT = 69, | |
| VT_BLOB_OBJECT = 70, | |
| VT_CF = 71, | |
| VT_CLSID = 72, | |
| VT_BSTR_BLOB = 0x0fff, | |
| VT_VECTOR = 0x1000, | |
| VT_ARRAY = 0x2000, | |
| VT_BYREF = 0x4000, | |
| VT_RESERVED = 0x8000, | |
| VT_ILLEGAL = 0xffff, | |
| VT_ILLEGALMASKED = 0x0fff, | |
| VT_TYPEMASK = 0x0fff | |
| }; | |
| } /* interface IWinTypes */ |