diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-11 08:17:27 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-11 08:17:27 +0000 |
commit | f215e02bf85f68d3a6106c2a1f4f7f063f819064 (patch) | |
tree | 6bb5b92c046312c4e95ac2620b10ddf482d3fa8b /src/VBox/Devices/Graphics/shaderlib/wine/include/wtypes.idl | |
parent | Initial commit. (diff) | |
download | virtualbox-f215e02bf85f68d3a6106c2a1f4f7f063f819064.tar.xz virtualbox-f215e02bf85f68d3a6106c2a1f4f7f063f819064.zip |
Adding upstream version 7.0.14-dfsg.upstream/7.0.14-dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/VBox/Devices/Graphics/shaderlib/wine/include/wtypes.idl')
-rw-r--r-- | src/VBox/Devices/Graphics/shaderlib/wine/include/wtypes.idl | 848 |
1 files changed, 848 insertions, 0 deletions
diff --git a/src/VBox/Devices/Graphics/shaderlib/wine/include/wtypes.idl b/src/VBox/Devices/Graphics/shaderlib/wine/include/wtypes.idl new file mode 100644 index 00000000..bb76dc36 --- /dev/null +++ b/src/VBox/Devices/Graphics/shaderlib/wine/include/wtypes.idl @@ -0,0 +1,848 @@ +/* + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + +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(HMODULE); +DECLARE_HANDLE(HINSTANCE); +DECLARE_HANDLE(HRGN); +DECLARE_HANDLE(HTASK); +DECLARE_HANDLE(HKEY); +DECLARE_HANDLE(HDESK); +DECLARE_HANDLE(HMF); +DECLARE_HANDLE(HEMF); +DECLARE_HANDLE(HPEN); +DECLARE_HANDLE(HRSRC); +DECLARE_HANDLE(HSTR); +DECLARE_HANDLE(HWINSTA); +DECLARE_HANDLE(HKL); +DECLARE_HANDLE(HGDIOBJ); + +typedef HANDLE HDWP; + +typedef LONG_PTR LRESULT; + +typedef LONG HRESULT; +typedef DWORD LCID; +typedef USHORT LANGID; + +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; + [size_is(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; + +cpp_quote("#endif /* winnt.h */") + +cpp_quote("#ifdef _MSC_VER") /* for IDL and MSVC 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 _SYSTEMTIME_") +cpp_quote("#define _SYSTEMTIME_") +typedef struct _SYSTEMTIME{ + WORD wYear; + WORD wMonth; + WORD wDayOfWeek; + WORD wDay; + WORD wHour; + WORD wMinute; + WORD wSecond; + WORD wMilliseconds; +} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME; +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; + +typedef enum tagMEMCTX { + MEMCTX_TASK = 1, + MEMCTX_SHARED = 2, + MEMCTX_MACSYSTEM = 3, + MEMCTX_UNKNOWN = -1, + MEMCTX_SAME = -2 +} MEMCTX; + +cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED") +cpp_quote("#define _ROT_COMPARE_MAX_DEFINED") +cpp_quote("#define ROT_COMPARE_MAX 2048") +cpp_quote("#endif") + +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; +const unsigned long WDT_INPROC64_CALL = 0x50746457; + +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; + case WDT_INPROC64_CALL: __int64 hInproc64; +} 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; + case WDT_INPROC64_CALL: __int64 hInproc64; +} 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; + case WDT_INPROC64_CALL: __int64 hInproc64; +} 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; + case WDT_INPROC64_CALL: __int64 hInproc64; +} 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; + case WDT_INPROC64_CALL: __int64 hInproc64; +} 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; + case WDT_INPROC64_CALL: __int64 hInproc64; +} 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); + +typedef union _RemotableHandle switch (long fContext) u +{ + case WDT_INPROC_CALL: long hInproc; + case WDT_REMOTE_CALL: long hRemote; +} RemotableHandle; + +typedef [unique] RemotableHandle *wireHACCEL; +typedef [unique] RemotableHandle *wireHBRUSH; +typedef [unique] RemotableHandle *wireHDC; +typedef [unique] RemotableHandle *wireHFONT; +typedef [unique] RemotableHandle *wireHICON; +typedef [unique] RemotableHandle *wireHMENU; +typedef [unique] RemotableHandle *wireHWND; + +cpp_quote("#if 0") /* for IDL only (C/C++ defs are in windef.h) */ +DECLARE_WIREM_HANDLE(HACCEL); +DECLARE_WIREM_HANDLE(HBRUSH); +DECLARE_WIREM_HANDLE(HDC); +DECLARE_WIREM_HANDLE(HFONT); +DECLARE_WIREM_HANDLE(HICON); +DECLARE_WIREM_HANDLE(HMENU); +DECLARE_WIREM_HANDLE(HWND); + +typedef HICON HCURSOR; + +typedef struct tagMSG +{ + HWND hwnd; + UINT message; + WPARAM wParam; + LPARAM lParam; + DWORD time; + POINT pt; +} MSG, *PMSG, *NPMSG, *LPMSG; + +cpp_quote("#endif") + +/******************** 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("#ifdef _MSC_VER") /* for IDL and MSVC 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_VERSIONED_STREAM= 73, + 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 +}; + +typedef struct tagCSPLATFORM +{ + DWORD dwPlatformId; + DWORD dwVersionHi; + DWORD dwVersionLo; + DWORD dwProcessorArch; +} CSPLATFORM; + +typedef struct tagQUERYCONTEXT +{ + DWORD dwContext; + CSPLATFORM Platform; + LCID Locale; + DWORD dwVersionHi; + DWORD dwVersionLo; +} QUERYCONTEXT; + +typedef [v1_enum] enum tagTYSPEC +{ + TYSPEC_CLSID, + TYSPEC_FILEEXT, + TYSPEC_MIMETYPE, + TYSPEC_PROGID, + TYSPEC_FILENAME, + TYSPEC_PACKAGENAME, + TYSPEC_OBJECTID +} TYSPEC; + +typedef union switch(DWORD tyspec) +{ + case TYSPEC_CLSID: + CLSID clsid; + case TYSPEC_FILEEXT: + LPOLESTR pFileExt; + case TYSPEC_MIMETYPE: + LPOLESTR pMimeType; + case TYSPEC_PROGID: + LPOLESTR pProgId; + case TYSPEC_FILENAME: + LPOLESTR pFileName; + case TYSPEC_PACKAGENAME: + struct + { + LPOLESTR pPackageName; + GUID PolicyId; + } ByName; + case TYSPEC_OBJECTID: + struct + { + GUID ObjectId; + GUID PolicyId; + } ByObjectId; +} uCLSSPEC; + +cpp_quote("#ifndef PROPERTYKEY_DEFINED") +cpp_quote("#define PROPERTYKEY_DEFINED") +typedef struct _tagpropertykey +{ + GUID fmtid; + DWORD pid; +} PROPERTYKEY; +cpp_quote("#endif /*PROPERTYKEY_DEFINED*/") + +} /* interface IWinTypes */ |