From 729dd8bf28cbbd977e0a99c6574f4a8b1745a386 Mon Sep 17 00:00:00 2001 From: Ove Kaaven Date: Tue, 3 Dec 2002 21:42:17 +0000 Subject: [PATCH] Added more types to wtypes.idl. --- dlls/oleaut32/variant.c | 3 + include/wine/obj_oleaut.h | 61 --------- include/wtypes.h | 270 +++++++++++++++++++++++++++++++++++--- include/wtypes.idl | 235 ++++++++++++++++++++++++++++++--- 4 files changed, 471 insertions(+), 98 deletions(-) diff --git a/dlls/oleaut32/variant.c b/dlls/oleaut32/variant.c index d1d766804f8..8c8d75ffead 100644 --- a/dlls/oleaut32/variant.c +++ b/dlls/oleaut32/variant.c @@ -83,6 +83,9 @@ static const long I4_MIN = -(2147483648U); static const DATE DATE_MIN = -657434; static const DATE DATE_MAX = 2958465; +/* the largest valid type + */ +#define VT_MAXVALIDTYPE VT_CLSID /* This mask is used to set a flag in wReserved1 of * the VARIANTARG structure. The flag indicates if diff --git a/include/wine/obj_oleaut.h b/include/wine/obj_oleaut.h index 8bfc8e1e272..5136726e93e 100644 --- a/include/wine/obj_oleaut.h +++ b/include/wine/obj_oleaut.h @@ -491,66 +491,6 @@ typedef enum tagVARFLAGS } VARFLAGS; -/* - * Data types for Variants. - */ - -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_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_VECTOR = 0x1000, - VT_ARRAY = 0x2000, - VT_BYREF = 0x4000, - VT_RESERVED = 0x8000, - VT_ILLEGAL = 0xffff, - VT_ILLEGALMASKED = 0xfff, - VT_TYPEMASK = 0xfff -}; - -/* the largest valide type - */ -#define VT_MAXVALIDTYPE VT_CLSID - - /* * Declarations of the VARIANT structure and the VARIANT APIs. */ @@ -863,4 +803,3 @@ ICOM_DEFINE(IEnumVARIANT,IUnknown) #define IEnumVARIANT_Clone(p,a) ICOM_CALL1(Clone,p,a) #endif /* __WINE_WINE_OBJ_OLEAUT_H */ - diff --git a/include/wtypes.h b/include/wtypes.h index 067de7108bc..0ecde4f2f32 100644 --- a/include/wtypes.h +++ b/include/wtypes.h @@ -4,6 +4,9 @@ #ifndef __WIDL_WTYPES_H #define __WIDL_WTYPES_H +#ifdef __cplusplus +extern "C" { +#endif #include "basetsd.h" #include "guiddef.h" typedef CHAR OLECHAR16; @@ -57,6 +60,16 @@ typedef boolean BOOLEAN; typedef void *HANDLE; +typedef void *HMODULE; + +typedef void *HINSTANCE; + +typedef void *HRGN; + +typedef void *HTASK; + +typedef void *HKEY; + typedef double DATE; typedef LONG HRESULT; @@ -69,6 +82,14 @@ 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; @@ -103,6 +124,25 @@ typedef struct _SECURITY_DESCRIPTOR { } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR; #endif /* winnt.h */ +#ifndef _PALETTEENTRY_DEFINED +#define _PALETTEENTRY_DEFINED +typedef struct tagPALETTEENTRY { + BYTE peRed; + BYTE peGreen; + BYTE peBlue; + BYTE peFlags; +} PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY; + +#endif +#ifndef _LOGPALETTE_DEFINED +#define _LOGPALETTE_DEFINED +typedef struct tagLOGPALETTE { + WORD palVersion; + WORD palNumEntries; + PALETTEENTRY palPalEntry[1]; +} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE; + +#endif #ifndef _FILETIME_ #define _FILETIME_ typedef struct _FILETIME { @@ -155,22 +195,22 @@ typedef struct _COSERVERINFO { #define ROTFLAGS_ALLOWANYCLIENT 0x2 #endif typedef enum tagCLSCTX { - CLSCTX_INPROC_SERVER = 1, - CLSCTX_INPROC_HANDLER = 2, - CLSCTX_LOCAL_SERVER = 4, - CLSCTX_INPROC_SERVER16 = 8, - CLSCTX_REMOTE_SERVER = 16, - CLSCTX_INPROC_HANDLER16 = 32, - CLSCTX_INPROC_SERVERX86 = 64, - CLSCTX_INPROC_HANDLERX86 = 128, - CLSCTX_ESERVER_HANDLER = 256, - CLSCTX_NO_CODE_DOWNLOAD = 1024, - CLSCTX_NO_CUSTOM_MARSHAL = 4096, - CLSCTX_ENABLE_CODE_DOWNLOAD = 8192, - CLSCTX_NO_FAILURE_LOG = 16384, - CLSCTX_DISABLE_AAA = 32768, - CLSCTX_ENABLE_AAA = 65536, - CLSCTX_FROM_DEFAULT_CONTEXT = 131072 + 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; #define CLSCTX_INPROC (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER) @@ -198,6 +238,14 @@ typedef struct _BYTE_BLOB { typedef BYTE_BLOB *UP_BYTE_BLOB; +typedef struct _FLAGGED_BYTE_BLOB { + unsigned long fFlags; + unsigned long clSize; + byte abData[1]; +} FLAGGED_BYTE_BLOB; + +typedef FLAGGED_BYTE_BLOB *UP_FLAGGED_BYTE_BLOB; + typedef struct _FLAGGED_WORD_BLOB { unsigned long fFlags; unsigned long clSize; @@ -206,11 +254,35 @@ typedef struct _FLAGGED_WORD_BLOB { typedef FLAGGED_WORD_BLOB *UP_FLAGGED_WORD_BLOB; +typedef struct _BYTE_SIZEDARR { + unsigned long clSize; + byte *pData; +} BYTE_SIZEDARR; + +typedef struct _SHORT_SIZEDARR { + unsigned long clSize; + unsigned short *pData; +} WORD_SIZEDARR; + +typedef struct _LONG_SIZEDARR { + unsigned long clSize; + unsigned long *pData; +} DWORD_SIZEDARR; + +typedef struct _HYPER_SIZEDARR { + unsigned long clSize; + hyper *pData; +} HYPER_SIZEDARR; + +#define WDT_INPROC_CALL (0x48746457) + +#define WDT_REMOTE_CALL (0x52746457) + typedef struct _userCLIPFORMAT { long fContext; union { DWORD dwValue; - WCHAR *pwszName; + LPWSTR pwszName; } u; } userCLIPFORMAT; @@ -218,6 +290,23 @@ typedef userCLIPFORMAT *wireCLIPFORMAT; typedef WORD CLIPFORMAT; +typedef struct tagRemHGLOBAL { + long fNullHGlobal; + unsigned long cbData; + byte data[1]; +} RemHGLOBAL; + +typedef struct _userHGLOBAL { + long fContext; + union { + long hInproc; + FLAGGED_BYTE_BLOB *hRemote; + long hGlobal; + } u; +} userHGLOBAL; + +typedef userHGLOBAL *wireHGLOBAL; + typedef struct tagRemHMETAFILEPICT { long mm; long xExt; @@ -255,7 +344,82 @@ typedef struct _userHMETAFILEPICT { typedef userHMETAFILEPICT *wireHMETAFILEPICT; +typedef struct tagRemHENHMETAFILE { + unsigned long cbData; + byte data[1]; +} RemHENHMETAFILE; + +typedef struct _userHENHMETAFILE { + long fContext; + union { + long hInproc; + BYTE_BLOB *hRemote; + long hGlobal; + } u; +} userHENHMETAFILE; + +typedef userHENHMETAFILE *wireHENHMETAFILE; + +typedef struct tagRemHBITMAP { + unsigned long cbData; + byte data[1]; +} RemHBITMAP; + +typedef struct _userBITMAP { + LONG bmType; + LONG bmWidth; + LONG bmHeight; + LONG bmWidthBytes; + WORD bmPlanes; + WORD bmBitsPixel; + ULONG cbSize; + byte pBuffer[1]; +} userBITMAP; + +typedef struct _userHBITMAP { + long fContext; + union { + long hInproc; + userBITMAP *hRemote; + long hGlobal; + } u; +} userHBITMAP; + +typedef userHBITMAP *wireHBITMAP; + +typedef struct tagRemHPALETTE { + unsigned long cbData; + byte data[1]; +} RemHPALETTE; + +typedef struct tagrpcLOGPALETTE { + WORD palVersion; + WORD palNumEntries; + PALETTEENTRY palPalEntry[1]; +} rpcLOGPALETTE; + +typedef struct _userHPALETTE { + long fContext; + union { + long hInproc; + rpcLOGPALETTE *hRemote; + long hGlobal; + } u; +} userHPALETTE; + +typedef userHPALETTE *wireHPALETTE; + #if 0 +typedef void *HGLOBAL; + +typedef HGLOBAL HLOCAL; + +typedef void *HBITMAP; + +typedef void *HPALETTE; + +typedef void *HENHMETAFILE; + typedef void *HMETAFILE; #endif @@ -278,11 +442,23 @@ typedef GUID IID; typedef IID *LPIID; +typedef GUID CLSID; + +typedef CLSID *LPCLSID; + +typedef GUID FMTID; + +typedef FMTID *LPFMTID; + #if 0 typedef GUID *REFGUID; typedef IID *REFIID; +typedef CLSID *REFCLSID; + +typedef FMTID *REFFMTID; + #endif #endif /* guiddef.h */ typedef enum tagDVASPECT { @@ -349,6 +525,11 @@ typedef VARIANT_BOOL _VARIANT_BOOL; #define VARIANT_TRUE ((VARIANT_BOOL)0xFFFF) #define VARIANT_FALSE ((VARIANT_BOOL)0x0000) +typedef struct tagBSTRBLOB { + ULONG cbSize; + BYTE *pData; +} BSTRBLOB, *LPBSTRBLOB; + typedef struct tagBLOB { ULONG cbSize; BYTE *pBlobData; @@ -365,4 +546,59 @@ typedef ULONG PROPID; 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_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 = 0xfff, + VT_VECTOR = 0x1000, + VT_ARRAY = 0x2000, + VT_BYREF = 0x4000, + VT_RESERVED = 0x8000, + VT_ILLEGAL = 0xffff, + VT_ILLEGALMASKED = 0xfff, + VT_TYPEMASK = 0xfff +}; + +#ifdef __cplusplus +} +#endif #endif /* __WIDL_WTYPES_H */ diff --git a/include/wtypes.idl b/include/wtypes.idl index 8b92bc24aaa..07976c90d4f 100644 --- a/include/wtypes.idl +++ b/include/wtypes.idl @@ -73,6 +73,12 @@ 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); + typedef double DATE; typedef LONG HRESULT; typedef DWORD LCID; @@ -81,6 +87,14 @@ 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; @@ -115,6 +129,26 @@ typedef struct _SECURITY_DESCRIPTOR { cpp_quote("#endif /* winnt.h */") +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 { @@ -168,8 +202,7 @@ cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1") cpp_quote("#define ROTFLAGS_ALLOWANYCLIENT 0x2") cpp_quote("#endif") -typedef enum tagCLSCTX -{ +typedef enum tagCLSCTX { CLSCTX_INPROC_SERVER = 0x1, CLSCTX_INPROC_HANDLER = 0x2, CLSCTX_LOCAL_SERVER = 0x4, @@ -192,16 +225,14 @@ 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 -{ +typedef enum tagMSHLFLAGS { MSHLFLAGS_NORMAL = 0, MSHLFLAGS_TABLESTRONG = 1, MSHLFLAGS_TABLEWEAK = 2, MSHLFLAGS_NOPING = 4 } MSHLFLAGS; -typedef enum tagMSHCTX -{ +typedef enum tagMSHCTX { MSHCTX_LOCAL = 0, MSHCTX_NOSHAREDMEM = 1, MSHCTX_DIFFERENTMACHINE = 2, @@ -217,6 +248,13 @@ typedef struct _BYTE_BLOB { } 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; @@ -224,6 +262,26 @@ typedef struct _FLAGGED_WORD_BLOB { } 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; @@ -231,12 +289,26 @@ const unsigned long WDT_REMOTE_CALL = 0x52746457; typedef union _userCLIPFORMAT switch(long fContext) u { case WDT_INPROC_CALL: DWORD dwValue; - case WDT_REMOTE_CALL: [string] WCHAR *pwszName; + 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; @@ -268,7 +340,69 @@ typedef union _userHMETAFILEPICT switch(long fContext) u { 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); @@ -287,39 +421,45 @@ cpp_quote("#endif") cpp_quote("#if 0 /* guiddef.h */") typedef GUID *LPGUID; + typedef GUID IID; typedef IID *LPIID; +typedef GUID CLSID; +typedef CLSID *LPCLSID; + +typedef GUID FMTID; +typedef FMTID *LPFMTID; + 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") cpp_quote("#endif /* guiddef.h */") /******************** MISC TYPES ********************/ -typedef enum tagDVASPECT -{ +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, +typedef enum tagSTGC { + STGC_DEFAULT = 0, + STGC_OVERWRITE = 1, STGC_ONLYIFCURRENT = 2, STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4, - STGC_CONSOLIDATE = 8 + STGC_CONSOLIDATE = 8 } STGC; -typedef enum tagSTGMOVE -{ - STGMOVE_MOVE = 0, - STGMOVE_COPY = 1, +typedef enum tagSTGMOVE { + STGMOVE_MOVE = 0, + STGMOVE_COPY = 1, STGMOVE_SHALLOWCOPY = 2 } STGMOVE; @@ -364,6 +504,11 @@ 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; + typedef struct tagBLOB { ULONG cbSize; [size_is(cbSize)] BYTE *pBlobData; @@ -372,7 +517,7 @@ typedef struct tagBLOB { typedef struct tagCLIPDATA { ULONG cbSize; long ulClipFmt; - [size_is(cbSize-4)] BYTE *pClipData; + [size_is(cbSize-sizeof(long))] BYTE *pClipData; } CLIPDATA; cpp_quote("#define CBPCLIPDATA(cb) ((cb).cbSize - sizeof((cb).ulClipFmt))") @@ -381,6 +526,56 @@ typedef ULONG PROPID; /******************** VARTYPE ********************/ typedef unsigned short VARTYPE; -/* FIXME: enum VARENUM */ +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_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 */