| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/shared/ |
Upload File : |
//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: wtypes.idl
//
// Contents: This interface definition contains typedefs for remotable
// data types.
//--------------------------------------------------------------------------
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Microsoft Windows")
cpp_quote("// Copyright (c) Microsoft Corporation. All rights reserved.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("#if ( _MSC_VER >= 1020 )")
cpp_quote("#pragma once")
cpp_quote("#endif")
import "wtypesbase.idl";
cpp_quote("#if _MSC_VER >= 1200")
cpp_quote("#pragma warning(push)")
cpp_quote("#pragma warning(disable:4820) /* padding added after data member */")
cpp_quote("#endif")
[ uuid(D3980A60-910C-1068-9341-00DD010F2F1C),
version(0.1), pointer_default(unique) ]
interface IWinTypes
{
typedef struct tagRemHGLOBAL
{
LONG fNullHGlobal;
ULONG cbData;
[size_is(cbData)] byte data[];
} RemHGLOBAL;
typedef struct tagRemHMETAFILEPICT
{
LONG mm;
LONG xExt;
LONG yExt;
ULONG cbData;
[size_is(cbData)] byte data[];
} RemHMETAFILEPICT;
typedef struct tagRemHENHMETAFILE
{
ULONG cbData;
[size_is(cbData)] byte data[];
} RemHENHMETAFILE;
typedef struct tagRemHBITMAP
{
ULONG cbData;
[size_is(cbData)] byte data[];
} RemHBITMAP;
typedef struct tagRemHPALETTE
{
ULONG cbData;
[size_is(cbData)] byte data[];
} RemHPALETTE;
typedef struct tagRemBRUSH
{
ULONG cbData;
[size_is(cbData)] byte data[];
} RemHBRUSH;
cpp_quote("#if !defined(_WIN32) && !defined(_MPPC_)" )
cpp_quote("// The following code is for Win16 only")
cpp_quote("#ifndef WINAPI // If not included with 3.1 headers...")
cpp_quote("#define FAR _far")
cpp_quote("#define PASCAL _pascal")
cpp_quote("#define CDECL _cdecl")
cpp_quote("#define VOID void")
cpp_quote("#define WINAPI FAR PASCAL")
cpp_quote("#define CALLBACK FAR PASCAL")
cpp_quote("#ifndef FALSE")
cpp_quote("#define FALSE 0")
cpp_quote("#define TRUE 1")
cpp_quote("#endif // !FALSE")
cpp_quote("#ifndef _BYTE_DEFINED")
cpp_quote("#define _BYTE_DEFINED")
cpp_quote("typedef byte BYTE;")
cpp_quote("#endif // !_BYTE_DEFINED")
cpp_quote("#ifndef _WORD_DEFINED")
cpp_quote("#define _WORD_DEFINED")
cpp_quote("typedef unsigned short WORD;")
cpp_quote("#endif // !_WORD_DEFINED")
cpp_quote("typedef unsigned int UINT;")
cpp_quote("typedef int INT;")
cpp_quote("typedef long BOOL;")
cpp_quote("#ifndef _LONG_DEFINED")
cpp_quote("#define _LONG_DEFINED")
cpp_quote("typedef long LONG;")
cpp_quote("#endif // !_LONG_DEFINED")
cpp_quote("#ifndef _WPARAM_DEFINED")
cpp_quote("#define _WPARAM_DEFINED")
typedef UINT_PTR WPARAM;
cpp_quote("#endif // _WPARAM_DEFINED")
cpp_quote("#ifndef _DWORD_DEFINED")
cpp_quote("#define _DWORD_DEFINED")
cpp_quote("typedef unsigned long DWORD;")
cpp_quote("#endif // !_DWORD_DEFINED")
cpp_quote("#ifndef _LPARAM_DEFINED")
cpp_quote("#define _LPARAM_DEFINED")
typedef LONG_PTR LPARAM;
cpp_quote("#endif // !_LPARAM_DEFINED")
cpp_quote("#ifndef _LRESULT_DEFINED")
cpp_quote("#define _LRESULT_DEFINED")
typedef LONG_PTR LRESULT;
cpp_quote("#endif // !_LRESULT_DEFINED")
cpp_quote("typedef void * HANDLE;")
#define DECLARE_WIREM_HANDLE(name) \
typedef [wire_marshal(wire ## name)] void * name
#define DECLARE_HANDLE(name) typedef void * name
DECLARE_HANDLE(HMODULE);
DECLARE_HANDLE(HINSTANCE);
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;
cpp_quote("#ifndef _HFILE_DEFINED")
cpp_quote("#define _HFILE_DEFINED")
typedef INT HFILE; /* Polymorphic with C runtime file handle type */
cpp_quote("#endif // !_HFILE_DEFINED")
cpp_quote("#ifndef _LPWORD_DEFINED")
cpp_quote("#define _LPWORD_DEFINED")
cpp_quote("typedef WORD *LPWORD;")
cpp_quote("#endif // !_LPWORD_DEFINED")
cpp_quote("#ifndef _LPDWORD_DEFINED")
cpp_quote("#define _LPDWORD_DEFINED")
cpp_quote("typedef DWORD *LPDWORD;")
cpp_quote("#endif // !_LPDWORD_DEFINED")
cpp_quote("typedef char CHAR;")
cpp_quote("typedef CHAR *LPSTR;")
cpp_quote("typedef const CHAR *LPCSTR;")
cpp_quote("#ifndef _WCHAR_DEFINED")
cpp_quote("#define _WCHAR_DEFINED")
cpp_quote("typedef wchar_t WCHAR;")
cpp_quote("typedef WCHAR TCHAR;")
cpp_quote("#endif // !_WCHAR_DEFINED")
cpp_quote("typedef WCHAR *LPWSTR;")
cpp_quote("typedef TCHAR *LPTSTR;")
cpp_quote("typedef const WCHAR *LPCWSTR;")
cpp_quote("typedef const TCHAR *LPCTSTR;")
cpp_quote("#ifndef _COLORREF_DEFINED")
cpp_quote("#define _COLORREF_DEFINED")
typedef DWORD COLORREF;
cpp_quote("#endif // !_COLORREF_DEFINED")
cpp_quote("#ifndef _LPCOLORREF_DEFINED")
cpp_quote("#define _LPCOLORREF_DEFINED")
typedef DWORD *LPCOLORREF;
cpp_quote("#endif // !_LPCOLORREF_DEFINED")
cpp_quote("typedef HANDLE *LPHANDLE;")
//typedefs for remotable types from wingdi.h
typedef struct _RECTL
{
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECTL, *PRECTL, *LPRECTL;
typedef struct tagPOINT
{
LONG x;
LONG y;
} POINT, *PPOINT, *LPPOINT;
typedef struct _POINTL
{
LONG x;
LONG y;
} POINTL, *PPOINTL;
cpp_quote("#ifndef WIN16")
typedef struct tagSIZE
{
LONG cx;
LONG cy;
} SIZE, *PSIZE, *LPSIZE;
cpp_quote("#else // WIN16")
cpp_quote("typedef struct tagSIZE")
cpp_quote("{")
cpp_quote(" INT cx;")
cpp_quote(" INT cy;")
cpp_quote("} SIZE, *PSIZE, *LPSIZE;")
cpp_quote("#endif // WIN16")
typedef struct tagSIZEL
{
LONG cx;
LONG cy;
} SIZEL, *PSIZEL, *LPSIZEL;
cpp_quote("#endif //WINAPI")
cpp_quote("#endif //!WIN32 && !MPPC")
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 // !_PALETTEENTRY_DEFINED")
// Logical Palette
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 // !_LOGPALETTE_DEFINED")
// This block contains types that are normally defined by the nt sdk in WINDEF.H
// but we need them here for definitions that follow in this file. If WINDEF.H
// hasn't been included then we need to define them now so that WTYPES.H
// will compile.
cpp_quote("#ifndef _WINDEF_")
typedef const RECTL *LPCRECTL;
typedef struct tagRECT
{
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT, *PRECT, *LPRECT;
typedef const RECT *LPCRECT;
cpp_quote("#endif //_WINDEF_")
//The following typedefs are used internally by MIDL.
cpp_quote("#if 0")
/* MIDL 2.0+ definitions */
typedef FMTID *REFFMTID;
cpp_quote("#endif // 0")
/************************* Misc types ***********************************/
// Common typdefs used in API paramaters, gleamed from compobj.h
// For IRunningObjectTable::Register
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 // !_ROTFLAGS_DEFINED")
// Maximum size of comparison buffer for IROTData::GetComparisonData
cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED")
cpp_quote("#define _ROT_COMPARE_MAX_DEFINED")
cpp_quote("#define ROT_COMPARE_MAX 2048")
cpp_quote("#endif // !_ROT_COMPARE_MAX_DEFINED")
//
// Common typedefs for paramaters used in data view API's, gleamed
// from dvobj.h
//
// Data/View aspect; specifies the desired aspect of the object when
// drawing or getting data.
typedef enum tagDVASPECT
{
DVASPECT_CONTENT = 1,
DVASPECT_THUMBNAIL = 2,
DVASPECT_ICON = 4,
DVASPECT_DOCPRINT = 8
} DVASPECT;
/****** Storage types *************************************************/
/* Storage commit types */
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;
typedef [context_handle] void *HCONTEXT;
/****** Critical Section Wrappers ***********************************/
/* if not already picked up from olenls.h */
cpp_quote("#ifndef _LCID_DEFINED")
cpp_quote("#define _LCID_DEFINED")
typedef DWORD LCID;
cpp_quote("#endif // !_LCID_DEFINED")
cpp_quote("#ifndef _LANGID_DEFINED")
cpp_quote("#define _LANGID_DEFINED")
typedef USHORT LANGID;
cpp_quote("#endif // !_LANGID_DEFINED")
// #########################################################################
//
// Constants for the call context
//
const ULONG WDT_INPROC_CALL = 0x48746457;
const ULONG WDT_REMOTE_CALL = 0x52746457;
const ULONG WDT_INPROC64_CALL = 0x50746457;
// #########################################################################
//
// CLIPFORMAT
//
typedef union _userCLIPFORMAT switch(LONG fContext) u
{
case WDT_INPROC_CALL: DWORD dwValue;
case WDT_REMOTE_CALL: [string] wchar_t * pwszName;
} userCLIPFORMAT;
typedef [unique] userCLIPFORMAT * wireCLIPFORMAT;
typedef [wire_marshal(wireCLIPFORMAT)] WORD CLIPFORMAT;
// #########################################################################
//
// Good for most of the gdi handles.
typedef union _GDI_NONREMOTE switch( LONG fContext ) u
{
case WDT_INPROC_CALL: LONG hInproc;
case WDT_REMOTE_CALL: DWORD_BLOB *hRemote;
} GDI_NONREMOTE;
// #########################################################################
//
// HGLOBAL
//
// A global may be Null or may be non-NULL with 0 length.
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;
// #########################################################################
//
// HMETAFILE
//
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;
// #########################################################################
//
// HMETAFILEPICT
//
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;
// #########################################################################
//
// HENHMETAFILE
//
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;
// #########################################################################
//
// HBITMAP
//
// RemHBITMAP was just a byte blob, but the whole bitmap structure was copied
// at the beginning of the buffer.
// So, we take BITMAP fields from wingdi.x
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;
// #########################################################################
//
// HPALETTE
//
// PALETTEENTRY is in wingdi.x, it is a struct with 4 bytes.
// LOGPALETTE is in wingdi.x, it is a conf struct with paletteentries and
// a version field
typedef union _userHPALETTE switch( LONG fContext ) u
{
case WDT_INPROC_CALL: LONG hInproc;
case WDT_REMOTE_CALL: LOGPALETTE * hRemote;
case WDT_INPROC64_CALL: __int64 hInproc64;
} userHPALETTE;
// #########################################################################
//
// Handles passed locally as longs.
//
typedef union _RemotableHandle switch( LONG fContext ) u
{
case WDT_INPROC_CALL: LONG hInproc;
case WDT_REMOTE_CALL: LONG hRemote;
} RemotableHandle;
typedef [unique] RemotableHandle * wireHWND;
typedef [unique] RemotableHandle * wireHMENU;
typedef [unique] RemotableHandle * wireHACCEL;
typedef [unique] RemotableHandle * wireHBRUSH;
typedef [unique] RemotableHandle * wireHFONT;
typedef [unique] RemotableHandle * wireHDC;
typedef [unique] RemotableHandle * wireHICON;
typedef [unique] RemotableHandle * wireHRGN;
typedef [unique] RemotableHandle * wireHMONITOR;
cpp_quote("#if 0")
#ifndef _MIDL_DECLARE_WIREM_HANDLE
DECLARE_WIREM_HANDLE( HWND );
DECLARE_WIREM_HANDLE( HMENU );
DECLARE_WIREM_HANDLE( HACCEL );
DECLARE_WIREM_HANDLE( HBRUSH );
DECLARE_WIREM_HANDLE( HFONT );
DECLARE_WIREM_HANDLE( HDC );
DECLARE_WIREM_HANDLE( HICON );
DECLARE_WIREM_HANDLE( HRGN );
DECLARE_WIREM_HANDLE( HMONITOR );
#endif
cpp_quote("#ifndef _HCURSOR_DEFINED")
cpp_quote("#define _HCURSOR_DEFINED")
typedef HICON HCURSOR; /* HICONs & HCURSORs are polymorphic */
cpp_quote("#endif // !_HCURSOR_DEFINED")
cpp_quote("#endif //0")
cpp_quote("#ifndef _TEXTMETRIC_DEFINED")
cpp_quote("#define _TEXTMETRIC_DEFINED")
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, *PTEXTMETRICW, *LPTEXTMETRICW;
cpp_quote("#endif // !_TEXTMETRIC_DEFINED")
cpp_quote("#ifndef _WIN32 // The following code is for Win16 only")
cpp_quote("#ifndef WINAPI // If not included with 3.1 headers...")
// Message structure
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG, *PMSG, *NPMSG, *LPMSG;
cpp_quote("#endif // _WIN32")
cpp_quote("#endif // WINAPI")
typedef [unique] userHBITMAP * wireHBITMAP;
typedef [unique] userHPALETTE * wireHPALETTE;
typedef [unique] userHENHMETAFILE * wireHENHMETAFILE;
typedef [unique] userHMETAFILE * wireHMETAFILE;
typedef [unique] userHMETAFILEPICT* wireHMETAFILEPICT;
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 //0")
DECLARE_WIREM_HANDLE( HMETAFILEPICT );
}
// #########################################################################
//
cpp_quote("#if ( _MSC_VER >= 800 )")
cpp_quote("#if _MSC_VER >= 1200")
cpp_quote("#pragma warning(push)")
cpp_quote("#endif")
cpp_quote("#pragma warning(disable:4201)")
cpp_quote("#endif")
typedef double DATE;
/* This is a helper struct for use in handling currency. */
cpp_quote("#ifndef _tagCY_DEFINED")
cpp_quote("#define _tagCY_DEFINED")
cpp_quote("#define _CY_DEFINED")
cpp_quote("#if 0")
cpp_quote("/* the following isn't the real definition of CY, but it is */")
cpp_quote("/* what RPC knows how to remote */")
typedef struct tagCY {
LONGLONG int64;
} CY;
cpp_quote("#else /* 0 */")
cpp_quote("/* real definition that makes the C++ compiler happy */")
cpp_quote("typedef union tagCY {")
cpp_quote(" struct {")
cpp_quote(" ULONG Lo;")
cpp_quote(" LONG Hi;")
cpp_quote(" } DUMMYSTRUCTNAME;")
cpp_quote(" LONGLONG int64;")
cpp_quote("} CY;")
cpp_quote("#endif /* 0 */")
cpp_quote("#endif /* _tagCY_DEFINED */")
typedef CY *LPCY;
cpp_quote("#if 0 /* _tagDEC_DEFINED */")
cpp_quote("/* The following isn't the real definition of Decimal type, */")
cpp_quote("/* but it is what RPC knows how to remote */")
typedef struct tagDEC {
USHORT wReserved;
BYTE scale;
BYTE sign;
ULONG Hi32;
ULONGLONG Lo64;
} DECIMAL;
cpp_quote("#else /* _tagDEC_DEFINED */")
cpp_quote("/* real definition that makes the C++ compiler happy */")
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(" ULONG Lo32;")
cpp_quote(" ULONG Mid32;")
cpp_quote(" } DUMMYSTRUCTNAME2;")
cpp_quote(" ULONGLONG Lo64;")
cpp_quote(" } DUMMYUNIONNAME2;")
cpp_quote("} DECIMAL;")
cpp_quote("#define DECIMAL_NEG ((BYTE)0x80)")
cpp_quote("#define DECIMAL_SETZERO(dec) \\")
cpp_quote(" {(dec).Lo64 = 0; (dec).Hi32 = 0; (dec).signscale = 0;}")
cpp_quote("#endif /* _tagDEC_DEFINED */")
typedef DECIMAL *LPDECIMAL;
cpp_quote("#if ( _MSC_VER >= 800 )")
cpp_quote("#if _MSC_VER >= 1200")
cpp_quote("#pragma warning(pop)")
cpp_quote("#else")
cpp_quote("#pragma warning(default:4201)")
cpp_quote("#endif")
cpp_quote("#endif")
/* IDL declarations for BSTR how to transmit them */
//
typedef [unique] FLAGGED_WORD_BLOB * wireBSTR;
cpp_quote("#ifndef _PREFAST_")
typedef [wire_marshal( wireBSTR )] OLECHAR * BSTR;
cpp_quote("#else // _PREFAST_")
cpp_quote("typedef _Null_terminated_ OLECHAR *BSTR;")
cpp_quote("#endif")
typedef BSTR * LPBSTR;
cpp_quote("/* 0 == FALSE, -1 == TRUE */")
typedef short VARIANT_BOOL;
cpp_quote("/* The BSTRBLOB structure is used by some implementations */")
cpp_quote("/* of the IPropertyStorage interface when marshaling BSTRs */")
cpp_quote("/* on systems which don't support BSTR marshaling. */")
cpp_quote("#ifndef _tagBSTRBLOB_DEFINED")
cpp_quote("#define _tagBSTRBLOB_DEFINED")
typedef struct tagBSTRBLOB
{
ULONG cbSize;
[size_is(cbSize)] BYTE *pData;
} BSTRBLOB, *LPBSTRBLOB;
cpp_quote("#endif")
cpp_quote("#define VARIANT_TRUE ((VARIANT_BOOL)-1)")
cpp_quote("#define VARIANT_FALSE ((VARIANT_BOOL)0)")
typedef struct tagCLIPDATA {
ULONG cbSize; // count that includes sizeof(ulClipFmt)
LONG ulClipFmt; // LONG to keep alignment
[size_is(cbSize-4)]
BYTE * pClipData; // cbSize-sizeof(ULONG) bytes of data in clipboard format
} CLIPDATA;
cpp_quote("// Macro to calculate the size of the above pClipData")
cpp_quote("#define CBPCLIPDATA(clipdata) ( (clipdata).cbSize - sizeof((clipdata).ulClipFmt) )")
typedef unsigned short VARTYPE;
// #########################################################################
//
// VARTYPE
//
// #########################################################################
cpp_quote("/*")
cpp_quote(" * VARENUM usage key,")
cpp_quote(" *")
cpp_quote(" * * [V] - may appear in a VARIANT")
cpp_quote(" * * [T] - may appear in a TYPEDESC")
cpp_quote(" * * [P] - may appear in an OLE property set")
cpp_quote(" * * [S] - may appear in a Safe Array")
cpp_quote(" *")
cpp_quote(" *")
cpp_quote(" * VT_EMPTY [V] [P] nothing")
cpp_quote(" * VT_NULL [V] [P] SQL style Null")
cpp_quote(" * VT_I2 [V][T][P][S] 2 byte signed int")
cpp_quote(" * VT_I4 [V][T][P][S] 4 byte signed int")
cpp_quote(" * VT_R4 [V][T][P][S] 4 byte real")
cpp_quote(" * VT_R8 [V][T][P][S] 8 byte real")
cpp_quote(" * VT_CY [V][T][P][S] currency")
cpp_quote(" * VT_DATE [V][T][P][S] date")
cpp_quote(" * VT_BSTR [V][T][P][S] OLE Automation string")
cpp_quote(" * VT_DISPATCH [V][T] [S] IDispatch *")
cpp_quote(" * VT_ERROR [V][T][P][S] SCODE")
cpp_quote(" * VT_BOOL [V][T][P][S] True=-1, False=0")
cpp_quote(" * VT_VARIANT [V][T][P][S] VARIANT *")
cpp_quote(" * VT_UNKNOWN [V][T] [S] IUnknown *")
cpp_quote(" * VT_DECIMAL [V][T] [S] 16 byte fixed point")
cpp_quote(" * VT_RECORD [V] [P][S] user defined type")
cpp_quote(" * VT_I1 [V][T][P][s] signed char")
cpp_quote(" * VT_UI1 [V][T][P][S] unsigned char")
cpp_quote(" * VT_UI2 [V][T][P][S] unsigned short")
cpp_quote(" * VT_UI4 [V][T][P][S] ULONG")
cpp_quote(" * VT_I8 [T][P] signed 64-bit int")
cpp_quote(" * VT_UI8 [T][P] unsigned 64-bit int")
cpp_quote(" * VT_INT [V][T][P][S] signed machine int")
cpp_quote(" * VT_UINT [V][T] [S] unsigned machine int")
cpp_quote(" * VT_INT_PTR [T] signed machine register size width")
cpp_quote(" * VT_UINT_PTR [T] unsigned machine register size width")
cpp_quote(" * VT_VOID [T] C style void")
cpp_quote(" * VT_HRESULT [T] Standard return type")
cpp_quote(" * VT_PTR [T] pointer type")
cpp_quote(" * VT_SAFEARRAY [T] (use VT_ARRAY in VARIANT)")
cpp_quote(" * VT_CARRAY [T] C style array")
cpp_quote(" * VT_USERDEFINED [T] user defined type")
cpp_quote(" * VT_LPSTR [T][P] null terminated string")
cpp_quote(" * VT_LPWSTR [T][P] wide null terminated string")
cpp_quote(" * VT_FILETIME [P] FILETIME")
cpp_quote(" * VT_BLOB [P] Length prefixed bytes")
cpp_quote(" * VT_STREAM [P] Name of the stream follows")
cpp_quote(" * VT_STORAGE [P] Name of the storage follows")
cpp_quote(" * VT_STREAMED_OBJECT [P] Stream contains an object")
cpp_quote(" * VT_STORED_OBJECT [P] Storage contains an object")
cpp_quote(" * VT_VERSIONED_STREAM [P] Stream with a GUID version")
cpp_quote(" * VT_BLOB_OBJECT [P] Blob contains an object ")
cpp_quote(" * VT_CF [P] Clipboard format")
cpp_quote(" * VT_CLSID [P] A Class ID")
cpp_quote(" * VT_VECTOR [P] simple counted array")
cpp_quote(" * VT_ARRAY [V] SAFEARRAY*")
cpp_quote(" * VT_BYREF [V] void* for local use")
cpp_quote(" * VT_BSTR_BLOB Reserved for system use")
cpp_quote(" */")
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,
// VBA reserves 15 for future use
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,
// VBA reserves 32-35 for future use
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
};
// Property stuff
typedef ULONG PROPID;
cpp_quote( "#ifndef PROPERTYKEY_DEFINED" )
cpp_quote( "#define PROPERTYKEY_DEFINED" )
typedef struct _tagpropertykey
{
GUID fmtid;
DWORD pid;
} PROPERTYKEY;
cpp_quote( "#endif" )
// Class Store types
//
// Platform/Architecture Definition
//
typedef struct tagCSPLATFORM
{
DWORD dwPlatformId; // This is the OS Platform
DWORD dwVersionHi; // Major Version of OS
DWORD dwVersionLo; // Minor Version of OS
DWORD dwProcessorArch; // This is the Processor Architecure
} CSPLATFORM;
//
// Query Context Structure
// This contains a list of attributes used to look up a class implementation
//
typedef struct tagQUERYCONTEXT {
DWORD dwContext; // Execution context
CSPLATFORM Platform; // Client Platform/Architecture
LCID Locale; // Locale ID
DWORD dwVersionHi; // Low Version number
DWORD dwVersionLo; // Hi Version number
} QUERYCONTEXT;
//
// Class Specifier structure
// All means of mapping to a Class ID
// (Union of CLSID, File Extension, ProgId, MimeType, File Ext)
//
typedef [v1_enum] enum tagTYSPEC {
TYSPEC_CLSID,
TYSPEC_FILEEXT,
TYSPEC_MIMETYPE,
TYSPEC_FILENAME,
TYSPEC_PROGID,
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("#if _MSC_VER >= 1200")
cpp_quote("#pragma warning(pop)")
cpp_quote("#endif")