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