blob: 4ffe87e17546d8915bf91a8f16a788cf83b308b2 [file] [log] [blame]
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
import "basetsd.h";
import "guiddef.h";
[
uuid(D3980A60-910C-1068-9341-00DD010F2F1C),
version(0.1),
pointer_default(unique)
]
interface IWinTypes
{
typedef struct tagRemHGLOBAL {
long fNullHGlobal;
unsigned long cbData;
[size_is(cbData)] byte data[];
} RemHGLOBAL;
typedef struct tagRemHMETAFILEPICT {
long mm;
long xExt;
long yExt;
unsigned long cbData;
[size_is(cbData)] byte data[];
} RemHMETAFILEPICT;
typedef struct tagRemHENHMETAFILE {
unsigned long cbData;
[size_is(cbData)] byte data[];
} RemHENHMETAFILE;
typedef struct tagRemHBITMAP {
unsigned long cbData;
[size_is(cbData)] byte data[];
} RemHBITMAP;
typedef struct tagRemHPALETTE {
unsigned long cbData;
[size_is(cbData)] byte data[];
} RemHPALETTE;
typedef struct tagRemBRUSH {
unsigned long cbData;
[size_is(cbData)] byte data[];
} RemHBRUSH;
cpp_quote("#if 0")
typedef byte BYTE;
typedef unsigned short WORD;
typedef unsigned int UINT;
typedef int INT;
#ifdef BOOL
#undef BOOL
typedef long BOOL;
typedef long WINBOOL;
#define BOOL WINBOOL
#else
typedef long BOOL;
#endif
typedef long LONG;
typedef UINT_PTR WPARAM;
typedef unsigned long DWORD;
typedef LONG_PTR LPARAM;
typedef LONG_PTR LRESULT;
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;
typedef INT HFILE;
typedef WORD *LPWORD;
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 WCHAR TCHAR;
typedef [string] TCHAR *LPTSTR;
typedef [string] const TCHAR *LPCTSTR;
typedef DWORD COLORREF;
typedef DWORD *LPCOLORREF;
typedef HANDLE *LPHANDLE;
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 tagPOINTL {
LONG x;
LONG y;
} POINTL, *PPOINTL;
typedef struct tagSIZE {
LONG cx;
LONG cy;
} SIZE, *PSIZE, *LPSIZE;
typedef struct tagSIZEL {
LONG cx;
LONG cy;
} SIZEL, *PSIZEL, *LPSIZEL;
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 OLE2ANSI")
typedef WCHAR OLECHAR;
typedef OLECHAR *LPOLESTR;
typedef const OLECHAR *LPCOLESTR;
cpp_quote("#define OLESTR(str) L##str")
cpp_quote("#else")
cpp_quote(" typedef char OLECHAR;")
cpp_quote(" typedef LPSTR LPOLESTR;")
cpp_quote(" typedef LPCSTR LPCOLESTR;")
cpp_quote("#define OLESTR(str) str")
cpp_quote("#endif")
cpp_quote("#ifndef _WINDEF_")
typedef const RECTL *LPCRECTL;
typedef void *PVOID, *LPVOID;
typedef float FLOAT;
typedef struct tagRECT {
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT, *PRECT, *LPRECT;
typedef const RECT *LPCRECT;
cpp_quote("#endif")
cpp_quote("#ifndef BASETYPES")
cpp_quote("#define BASETYPES")
typedef unsigned char UCHAR;
typedef short SHORT;
typedef unsigned short USHORT;
typedef DWORD ULONG;
cpp_quote(" typedef ULONG *PULONG;")
cpp_quote(" typedef USHORT *PUSHORT;")
cpp_quote(" typedef UCHAR *PUCHAR;")
cpp_quote(" typedef char *PSZ;")
cpp_quote("#endif")
typedef double DOUBLE;
cpp_quote("#ifndef _DWORDLONG_")
cpp_quote("#define _DWORDLONG_")
cpp_quote(" __MINGW_EXTENSION")
typedef unsigned __int64 DWORDLONG;
typedef DWORDLONG *PDWORDLONG;
cpp_quote("#endif")
cpp_quote("#ifndef _ULONGLONG_")
cpp_quote(" __MINGW_EXTENSION")
typedef __int64 LONGLONG;
cpp_quote(" __MINGW_EXTENSION")
typedef unsigned __int64 ULONGLONG;
typedef LONGLONG *PLONGLONG;
typedef ULONGLONG *PULONGLONG;
cpp_quote("#endif")
cpp_quote("#if 0")
typedef struct _LARGE_INTEGER {
LONGLONG QuadPart;
} LARGE_INTEGER, *PLARGE_INTEGER;
typedef struct _ULARGE_INTEGER {
ULONGLONG QuadPart;
} ULARGE_INTEGER;
cpp_quote("#endif")
cpp_quote("#ifndef _WINBASE_")
cpp_quote("#ifndef _FILETIME_")
cpp_quote("#define _FILETIME_")
typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME, *LPFILETIME;
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 _SECURITY_ATTRIBUTES_")
cpp_quote("#define _SECURITY_ATTRIBUTES_")
typedef struct _SECURITY_ATTRIBUTES {
DWORD nLength;
LPVOID lpSecurityDescriptor;
WINBOOL bInheritHandle;
} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
cpp_quote("#endif")
cpp_quote("#ifndef SECURITY_DESCRIPTOR_REVISION")
typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
typedef PVOID PSID;
typedef struct _ACL {
UCHAR AclRevision;
UCHAR Sbz1;
USHORT AclSize;
USHORT AceCount;
USHORT Sbz2;
} ACL, *PACL;
typedef struct _SECURITY_DESCRIPTOR {
UCHAR Revision;
UCHAR Sbz1;
SECURITY_DESCRIPTOR_CONTROL Control;
PSID Owner;
PSID Group;
PACL Sacl;
PACL Dacl;
} SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
cpp_quote("#endif")
cpp_quote("#endif")
typedef struct _COAUTHIDENTITY {
[size_is(UserLength+1)] USHORT *User;
[range(0,256)] ULONG UserLength;
[size_is(DomainLength+1)] USHORT *Domain;
[range(0,256)] ULONG DomainLength;
[size_is(PasswordLength+1)] USHORT *Password;
[range(0,256)] ULONG PasswordLength;
ULONG Flags;
} COAUTHIDENTITY;
typedef struct _COAUTHINFO {
DWORD dwAuthnSvc;
DWORD dwAuthzSvc;
LPWSTR pwszServerPrincName;
DWORD dwAuthnLevel;
DWORD dwImpersonationLevel;
COAUTHIDENTITY *pAuthIdentityData;
DWORD dwCapabilities;
} COAUTHINFO;
typedef LONG SCODE;
typedef SCODE *PSCODE;
cpp_quote("#ifndef _HRESULT_DEFINED")
cpp_quote("#define _HRESULT_DEFINED")
typedef LONG HRESULT;
cpp_quote("#endif")
cpp_quote("#ifndef __OBJECTID_DEFINED")
cpp_quote("#define __OBJECTID_DEFINED")
cpp_quote("#define _OBJECTID_DEFINED")
typedef struct _OBJECTID {
GUID Lineage;
unsigned long Uniquifier;
} OBJECTID;
cpp_quote("#endif")
cpp_quote("#if 0")
typedef GUID *REFGUID;
typedef IID *REFIID;
typedef CLSID *REFCLSID;
typedef FMTID *REFFMTID;
cpp_quote("#endif")
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")
cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED")
cpp_quote("#define _ROT_COMPARE_MAX_DEFINED")
cpp_quote("#define ROT_COMPARE_MAX 2048")
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_RESERVED1 = 0x40,
CLSCTX_RESERVED2 = 0x80,
CLSCTX_RESERVED3 = 0x100,
CLSCTX_RESERVED4 = 0x200,
CLSCTX_NO_CODE_DOWNLOAD = 0x400,
CLSCTX_RESERVED5 = 0x800,
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_ACTIVATE_32_BIT_SERVER = 0x40000,
CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000
} CLSCTX;
typedef enum tagMSHLFLAGS {
MSHLFLAGS_NORMAL = 0,
MSHLFLAGS_TABLESTRONG = 1,
MSHLFLAGS_TABLEWEAK = 2,
MSHLFLAGS_NOPING = 4,
MSHLFLAGS_RESERVED1 = 8,
MSHLFLAGS_RESERVED2 = 16,
MSHLFLAGS_RESERVED3 = 32,
MSHLFLAGS_RESERVED4 = 64
} MSHLFLAGS;
typedef enum tagMSHCTX {
MSHCTX_LOCAL = 0,
MSHCTX_NOSHAREDMEM = 1,
MSHCTX_DIFFERENTMACHINE = 2,
MSHCTX_INPROC = 3,
MSHCTX_CROSSCTX = 4
} MSHCTX;
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;
typedef [context_handle] void *HCONTEXT;
cpp_quote("#ifndef _LCID_DEFINED")
cpp_quote("#define _LCID_DEFINED")
typedef DWORD LCID;
cpp_quote("#endif")
cpp_quote("#ifndef _LANGID_DEFINED")
cpp_quote("#define _LANGID_DEFINED")
typedef USHORT LANGID;
cpp_quote("#endif")
typedef struct _BYTE_BLOB {
unsigned long clSize;
[size_is(clSize)] byte abData[];
} BYTE_BLOB;
typedef [unique] BYTE_BLOB *UP_BYTE_BLOB;
typedef struct _WORD_BLOB {
unsigned long clSize;
[size_is(clSize)] unsigned short asData[];
} WORD_BLOB;
typedef [unique] WORD_BLOB *UP_WORD_BLOB;
typedef struct _DWORD_BLOB {
unsigned long clSize;
[size_is(clSize)] unsigned long alData[];
} DWORD_BLOB;
typedef [unique] DWORD_BLOB *UP_DWORD_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;
const long WDT_INPROC_CALL = 0x48746457;
const long WDT_REMOTE_CALL = 0x52746457;
const long WDT_INPROC64_CALL = 0x50746457;
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;
typedef union _GDI_NONREMOTE switch(long fContext) u {
case WDT_INPROC_CALL: long hInproc;
case WDT_REMOTE_CALL: DWORD_BLOB *hRemote;
} GDI_NONREMOTE;
typedef union _userHGLOBAL switch(long fContext) {
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 union _userHMETAFILE switch(long fContext) {
case WDT_INPROC_CALL: long hInproc;
case WDT_REMOTE_CALL: BYTE_BLOB *hRemote;
case WDT_INPROC64_CALL: __int64 hInproc64;
} userHMETAFILE;
typedef struct _remoteMETAFILEPICT {
long mm;
long xExt;
long yExt;
userHMETAFILE *hMF;
} remoteMETAFILEPICT;
typedef union _userHMETAFILEPICT switch(long fContext) {
case WDT_INPROC_CALL: long hInproc;
case WDT_REMOTE_CALL: remoteMETAFILEPICT *hRemote;
case WDT_INPROC64_CALL: __int64 hInproc64;
} userHMETAFILEPICT;
typedef union _userHENHMETAFILE switch(long fContext) {
case WDT_INPROC_CALL: long hInproc;
case WDT_REMOTE_CALL: BYTE_BLOB *hRemote;
case WDT_INPROC64_CALL: __int64 hInproc64;
} userHENHMETAFILE;
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 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;
typedef union _RemotableHandle switch(long fContext) {
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;
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);
#endif
typedef HICON HCURSOR;
cpp_quote("#endif")
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")
cpp_quote("#if 0")
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParaml;
DWORD time;
POINT pt;
} MSG, *PMSG, *NPMSG, *LPMSG;
cpp_quote("#endif")
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")
DECLARE_WIREM_HANDLE(HMETAFILEPICT);
} /* IWinTypes */
typedef double DATE;
cpp_quote("#ifndef _tagCY_DEFINED")
cpp_quote("#define _tagCY_DEFINED")
cpp_quote("#define _CY_DEFINED")
cpp_quote("#if 0")
typedef struct tagCY {
LONGLONG int64;
} CY;
cpp_quote("#else")
cpp_quote(" typedef union tagCY {")
cpp_quote(" __C89_NAMELESS struct {")
cpp_quote(" unsigned long Lo;")
cpp_quote(" long Hi;")
cpp_quote(" } DUMMYSTRUCTNAME;")
cpp_quote(" LONGLONG int64;")
cpp_quote(" } CY;")
cpp_quote("#endif")
cpp_quote("#endif")
typedef CY *LPCY;
cpp_quote("#if 0")
typedef struct tagDEC {
USHORT wReserved;
BYTE scale;
BYTE sign;
ULONG Hi32;
ULONGLONG Lo64;
} DECIMAL;
cpp_quote("#else")
cpp_quote(" typedef struct tagDEC {")
cpp_quote(" USHORT wReserved;")
cpp_quote(" __C89_NAMELESS union {")
cpp_quote(" __C89_NAMELESS 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(" __C89_NAMELESS union {")
cpp_quote(" __C89_NAMELESS 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) {(dec).Lo64 = 0; (dec).Hi32 = 0; (dec).signscale = 0;}")
cpp_quote("#endif")
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("#ifndef _BOOLEAN_")
cpp_quote("#define _BOOLEAN_")
typedef boolean BOOLEAN;
cpp_quote("#endif")
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)")
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-4)] BYTE *pClipData;
} CLIPDATA;
cpp_quote("#define CBPCLIPDATA(clipdata) ((clipdata).cbSize - sizeof((clipdata).ulClipFmt))")
typedef unsigned short VARTYPE;
#include <psdk_inc/_varenum.h>
typedef ULONG PROPID;
cpp_quote("#ifndef PROPERTYKEY_DEFINED")
cpp_quote("#define PROPERTYKEY_DEFINED")
typedef struct _tagpropertykey {
GUID fmtid;
DWORD pid;
} PROPERTYKEY;
cpp_quote("#endif")
cpp_quote("#ifndef SID_IDENTIFIER_AUTHORITY_DEFINED")
cpp_quote("#define SID_IDENTIFIER_AUTHORITY_DEFINED")
typedef struct _SID_IDENTIFIER_AUTHORITY {
UCHAR Value[6];
} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
cpp_quote("#endif")
cpp_quote("#ifndef SID_DEFINED")
cpp_quote("#define SID_DEFINED")
typedef struct _SID {
BYTE Revision;
BYTE SubAuthorityCount;
SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
[size_is(SubAuthorityCount)] ULONG SubAuthority[*];
} SID, *PISID;
typedef struct _SID_AND_ATTRIBUTES {
SID *Sid;
DWORD Attributes;
} SID_AND_ATTRIBUTES, *PSID_AND_ATTRIBUTES;
cpp_quote("#endif")
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 = 0,
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;