1// MyWindows.h
2
3#ifndef __MYWINDOWS_H
4#define __MYWINDOWS_H
5
6#ifdef _WIN32
7
8#include <windows.h>
9
10#else
11
12#include <stddef.h> // for wchar_t
13#include <string.h>
14
15#include "MyGuidDef.h"
16
17typedef char CHAR;
18typedef unsigned char UCHAR;
19
20#undef BYTE
21typedef unsigned char BYTE;
22
23typedef short SHORT;
24typedef unsigned short USHORT;
25
26#undef WORD
27typedef unsigned short WORD;
28typedef short VARIANT_BOOL;
29
30typedef int INT;
31typedef Int32 INT32;
32typedef unsigned int UINT;
33typedef UInt32 UINT32;
34typedef INT32 LONG;   // LONG, ULONG and DWORD must be 32-bit
35typedef UINT32 ULONG;
36
37#undef DWORD
38typedef UINT32 DWORD;
39
40typedef Int64 LONGLONG;
41typedef UInt64 ULONGLONG;
42
43typedef struct LARGE_INTEGER { LONGLONG QuadPart; }LARGE_INTEGER;
44typedef struct _ULARGE_INTEGER { ULONGLONG QuadPart;} ULARGE_INTEGER;
45
46typedef const CHAR *LPCSTR;
47typedef CHAR TCHAR;
48typedef const TCHAR *LPCTSTR;
49typedef wchar_t WCHAR;
50typedef WCHAR OLECHAR;
51typedef const WCHAR *LPCWSTR;
52typedef OLECHAR *BSTR;
53typedef const OLECHAR *LPCOLESTR;
54typedef OLECHAR *LPOLESTR;
55
56typedef struct _FILETIME
57{
58  DWORD dwLowDateTime;
59  DWORD dwHighDateTime;
60}FILETIME;
61
62#define HRESULT LONG
63#define FAILED(Status) ((HRESULT)(Status)<0)
64typedef ULONG PROPID;
65typedef LONG SCODE;
66
67#define S_OK    ((HRESULT)0x00000000L)
68#define S_FALSE ((HRESULT)0x00000001L)
69#define E_NOTIMPL ((HRESULT)0x80004001L)
70#define E_NOINTERFACE ((HRESULT)0x80004002L)
71#define E_ABORT ((HRESULT)0x80004004L)
72#define E_FAIL ((HRESULT)0x80004005L)
73#define STG_E_INVALIDFUNCTION ((HRESULT)0x80030001L)
74#define E_OUTOFMEMORY ((HRESULT)0x8007000EL)
75#define E_INVALIDARG ((HRESULT)0x80070057L)
76
77#ifdef _MSC_VER
78#define STDMETHODCALLTYPE __stdcall
79#else
80#define STDMETHODCALLTYPE
81#endif
82
83#define STDMETHOD_(t, f) virtual t STDMETHODCALLTYPE f
84#define STDMETHOD(f) STDMETHOD_(HRESULT, f)
85#define STDMETHODIMP_(type) type STDMETHODCALLTYPE
86#define STDMETHODIMP STDMETHODIMP_(HRESULT)
87
88#define PURE = 0
89
90#define MIDL_INTERFACE(x) struct
91
92#ifdef __cplusplus
93
94DEFINE_GUID(IID_IUnknown,
950x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
96struct IUnknown
97{
98  STDMETHOD(QueryInterface) (REFIID iid, void **outObject) PURE;
99  STDMETHOD_(ULONG, AddRef)() PURE;
100  STDMETHOD_(ULONG, Release)() PURE;
101  #ifndef _WIN32
102  virtual ~IUnknown() {}
103  #endif
104};
105
106typedef IUnknown *LPUNKNOWN;
107
108#endif
109
110#define VARIANT_TRUE ((VARIANT_BOOL)-1)
111#define VARIANT_FALSE ((VARIANT_BOOL)0)
112
113enum VARENUM
114{
115  VT_EMPTY = 0,
116  VT_NULL = 1,
117  VT_I2 = 2,
118  VT_I4 = 3,
119  VT_R4 = 4,
120  VT_R8 = 5,
121  VT_CY = 6,
122  VT_DATE = 7,
123  VT_BSTR = 8,
124  VT_DISPATCH = 9,
125  VT_ERROR = 10,
126  VT_BOOL = 11,
127  VT_VARIANT = 12,
128  VT_UNKNOWN = 13,
129  VT_DECIMAL = 14,
130  VT_I1 = 16,
131  VT_UI1 = 17,
132  VT_UI2 = 18,
133  VT_UI4 = 19,
134  VT_I8 = 20,
135  VT_UI8 = 21,
136  VT_INT = 22,
137  VT_UINT = 23,
138  VT_VOID = 24,
139  VT_HRESULT = 25,
140  VT_FILETIME = 64
141};
142
143typedef unsigned short VARTYPE;
144typedef WORD PROPVAR_PAD1;
145typedef WORD PROPVAR_PAD2;
146typedef WORD PROPVAR_PAD3;
147
148#ifdef __cplusplus
149
150typedef struct tagPROPVARIANT
151{
152  VARTYPE vt;
153  PROPVAR_PAD1 wReserved1;
154  PROPVAR_PAD2 wReserved2;
155  PROPVAR_PAD3 wReserved3;
156  union
157  {
158    CHAR cVal;
159    UCHAR bVal;
160    SHORT iVal;
161    USHORT uiVal;
162    LONG lVal;
163    ULONG ulVal;
164    INT intVal;
165    UINT uintVal;
166    LARGE_INTEGER hVal;
167    ULARGE_INTEGER uhVal;
168    VARIANT_BOOL boolVal;
169    SCODE scode;
170    FILETIME filetime;
171    BSTR bstrVal;
172  };
173} PROPVARIANT;
174
175typedef PROPVARIANT tagVARIANT;
176typedef tagVARIANT VARIANT;
177typedef VARIANT VARIANTARG;
178
179MY_EXTERN_C HRESULT VariantClear(VARIANTARG *prop);
180MY_EXTERN_C HRESULT VariantCopy(VARIANTARG *dest, VARIANTARG *src);
181
182#endif
183
184MY_EXTERN_C BSTR SysAllocStringByteLen(LPCSTR psz, UINT len);
185MY_EXTERN_C BSTR SysAllocString(const OLECHAR *sz);
186MY_EXTERN_C void SysFreeString(BSTR bstr);
187MY_EXTERN_C UINT SysStringByteLen(BSTR bstr);
188MY_EXTERN_C UINT SysStringLen(BSTR bstr);
189
190MY_EXTERN_C DWORD GetLastError();
191MY_EXTERN_C LONG CompareFileTime(const FILETIME* ft1, const FILETIME* ft2);
192
193#define CP_ACP    0
194#define CP_OEMCP  1
195
196typedef enum tagSTREAM_SEEK
197{
198  STREAM_SEEK_SET = 0,
199  STREAM_SEEK_CUR = 1,
200  STREAM_SEEK_END = 2
201} STREAM_SEEK;
202
203#endif
204#endif
205