diff options
author | Igor Pavlov <87184205+ip7z@users.noreply.github.com> | 2021-12-27 00:00:00 +0000 |
---|---|---|
committer | Igor Pavlov <87184205+ip7z@users.noreply.github.com> | 2022-03-18 15:35:13 +0500 |
commit | f19f813537c7aea1c20749c914e756b54a9c3cf5 (patch) | |
tree | 816ba62ca7c0fa19f2eb46d9e9d6f7dd7c3a744d /CPP/Common/MyWindows.h | |
parent | 98e06a519b63b81986abe76d28887f6984a7732b (diff) | |
download | 7zip-21.07.tar.gz 7zip-21.07.tar.bz2 7zip-21.07.zip |
'21.07'21.07
Diffstat (limited to 'CPP/Common/MyWindows.h')
-rw-r--r-- | CPP/Common/MyWindows.h | 268 |
1 files changed, 268 insertions, 0 deletions
diff --git a/CPP/Common/MyWindows.h b/CPP/Common/MyWindows.h new file mode 100644 index 0000000..0664a5e --- /dev/null +++ b/CPP/Common/MyWindows.h | |||
@@ -0,0 +1,268 @@ | |||
1 | // MyWindows.h | ||
2 | |||
3 | #ifndef __MY_WINDOWS_H | ||
4 | #define __MY_WINDOWS_H | ||
5 | |||
6 | #ifdef _WIN32 | ||
7 | |||
8 | #include <Windows.h> | ||
9 | |||
10 | #ifdef UNDER_CE | ||
11 | #undef VARIANT_TRUE | ||
12 | #define VARIANT_TRUE ((VARIANT_BOOL)-1) | ||
13 | #endif | ||
14 | |||
15 | #else // _WIN32 | ||
16 | |||
17 | #include <stddef.h> // for wchar_t | ||
18 | #include <string.h> | ||
19 | // #include <stdint.h> // for uintptr_t | ||
20 | |||
21 | #include "MyGuidDef.h" | ||
22 | |||
23 | // WINAPI is __stdcall in Windows-MSVC in windef.h | ||
24 | #define WINAPI | ||
25 | #define EXTERN_C MY_EXTERN_C | ||
26 | |||
27 | typedef char CHAR; | ||
28 | typedef unsigned char UCHAR; | ||
29 | |||
30 | #undef BYTE | ||
31 | typedef unsigned char BYTE; | ||
32 | |||
33 | typedef short SHORT; | ||
34 | typedef unsigned short USHORT; | ||
35 | |||
36 | #undef WORD | ||
37 | typedef unsigned short WORD; | ||
38 | typedef short VARIANT_BOOL; | ||
39 | |||
40 | #define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xffff)) | ||
41 | #define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16)) | ||
42 | |||
43 | // MS uses long for BOOL, but long is 32-bit in MS. So we use int. | ||
44 | // typedef long BOOL; | ||
45 | typedef int BOOL; | ||
46 | |||
47 | #ifndef FALSE | ||
48 | #define FALSE 0 | ||
49 | #define TRUE 1 | ||
50 | #endif | ||
51 | |||
52 | // typedef size_t ULONG_PTR; | ||
53 | // typedef size_t DWORD_PTR; | ||
54 | // typedef uintptr_t UINT_PTR; | ||
55 | // typedef ptrdiff_t UINT_PTR; | ||
56 | |||
57 | typedef Int64 LONGLONG; | ||
58 | typedef UInt64 ULONGLONG; | ||
59 | |||
60 | typedef struct _LARGE_INTEGER { LONGLONG QuadPart; } LARGE_INTEGER; | ||
61 | typedef struct _ULARGE_INTEGER { ULONGLONG QuadPart; } ULARGE_INTEGER; | ||
62 | |||
63 | typedef const CHAR *LPCSTR; | ||
64 | typedef CHAR TCHAR; | ||
65 | typedef const TCHAR *LPCTSTR; | ||
66 | typedef wchar_t WCHAR; | ||
67 | typedef WCHAR OLECHAR; | ||
68 | typedef const WCHAR *LPCWSTR; | ||
69 | typedef OLECHAR *BSTR; | ||
70 | typedef const OLECHAR *LPCOLESTR; | ||
71 | typedef OLECHAR *LPOLESTR; | ||
72 | |||
73 | typedef struct _FILETIME | ||
74 | { | ||
75 | DWORD dwLowDateTime; | ||
76 | DWORD dwHighDateTime; | ||
77 | } FILETIME; | ||
78 | |||
79 | #define HRESULT LONG | ||
80 | #define SUCCEEDED(hr) ((HRESULT)(hr) >= 0) | ||
81 | #define FAILED(hr) ((HRESULT)(hr) < 0) | ||
82 | typedef ULONG PROPID; | ||
83 | typedef LONG SCODE; | ||
84 | |||
85 | |||
86 | #define S_OK ((HRESULT)0x00000000L) | ||
87 | #define S_FALSE ((HRESULT)0x00000001L) | ||
88 | #define E_NOTIMPL ((HRESULT)0x80004001L) | ||
89 | #define E_NOINTERFACE ((HRESULT)0x80004002L) | ||
90 | #define E_ABORT ((HRESULT)0x80004004L) | ||
91 | #define E_FAIL ((HRESULT)0x80004005L) | ||
92 | #define STG_E_INVALIDFUNCTION ((HRESULT)0x80030001L) | ||
93 | #define CLASS_E_CLASSNOTAVAILABLE ((HRESULT)0x80040111L) | ||
94 | |||
95 | |||
96 | #ifdef _MSC_VER | ||
97 | #define STDMETHODCALLTYPE __stdcall | ||
98 | #define STDAPICALLTYPE __stdcall | ||
99 | #else | ||
100 | // do we need __export here? | ||
101 | #define STDMETHODCALLTYPE | ||
102 | #define STDAPICALLTYPE | ||
103 | #endif | ||
104 | |||
105 | #define STDAPI EXTERN_C HRESULT STDAPICALLTYPE | ||
106 | |||
107 | #define STDMETHOD_(t, f) virtual t STDMETHODCALLTYPE f | ||
108 | #define STDMETHOD(f) STDMETHOD_(HRESULT, f) | ||
109 | #define STDMETHODIMP_(type) type STDMETHODCALLTYPE | ||
110 | #define STDMETHODIMP STDMETHODIMP_(HRESULT) | ||
111 | |||
112 | #define PURE = 0 | ||
113 | |||
114 | #define MIDL_INTERFACE(x) struct | ||
115 | |||
116 | #ifdef __cplusplus | ||
117 | |||
118 | DEFINE_GUID(IID_IUnknown, | ||
119 | 0x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46); | ||
120 | struct IUnknown | ||
121 | { | ||
122 | STDMETHOD(QueryInterface) (REFIID iid, void **outObject) PURE; | ||
123 | STDMETHOD_(ULONG, AddRef)() PURE; | ||
124 | STDMETHOD_(ULONG, Release)() PURE; | ||
125 | virtual ~IUnknown() {} | ||
126 | // We use virtual ~IUnknown() here for binary compatibility with 7z.so from p7zip | ||
127 | }; | ||
128 | |||
129 | typedef IUnknown *LPUNKNOWN; | ||
130 | |||
131 | #endif | ||
132 | |||
133 | #define VARIANT_TRUE ((VARIANT_BOOL)-1) | ||
134 | #define VARIANT_FALSE ((VARIANT_BOOL)0) | ||
135 | |||
136 | enum VARENUM | ||
137 | { | ||
138 | VT_EMPTY = 0, | ||
139 | VT_NULL = 1, | ||
140 | VT_I2 = 2, | ||
141 | VT_I4 = 3, | ||
142 | VT_R4 = 4, | ||
143 | VT_R8 = 5, | ||
144 | VT_CY = 6, | ||
145 | VT_DATE = 7, | ||
146 | VT_BSTR = 8, | ||
147 | VT_DISPATCH = 9, | ||
148 | VT_ERROR = 10, | ||
149 | VT_BOOL = 11, | ||
150 | VT_VARIANT = 12, | ||
151 | VT_UNKNOWN = 13, | ||
152 | VT_DECIMAL = 14, | ||
153 | VT_I1 = 16, | ||
154 | VT_UI1 = 17, | ||
155 | VT_UI2 = 18, | ||
156 | VT_UI4 = 19, | ||
157 | VT_I8 = 20, | ||
158 | VT_UI8 = 21, | ||
159 | VT_INT = 22, | ||
160 | VT_UINT = 23, | ||
161 | VT_VOID = 24, | ||
162 | VT_HRESULT = 25, | ||
163 | VT_FILETIME = 64 | ||
164 | }; | ||
165 | |||
166 | typedef unsigned short VARTYPE; | ||
167 | typedef WORD PROPVAR_PAD1; | ||
168 | typedef WORD PROPVAR_PAD2; | ||
169 | typedef WORD PROPVAR_PAD3; | ||
170 | |||
171 | typedef struct tagPROPVARIANT | ||
172 | { | ||
173 | VARTYPE vt; | ||
174 | PROPVAR_PAD1 wReserved1; | ||
175 | PROPVAR_PAD2 wReserved2; | ||
176 | PROPVAR_PAD3 wReserved3; | ||
177 | union | ||
178 | { | ||
179 | CHAR cVal; | ||
180 | UCHAR bVal; | ||
181 | SHORT iVal; | ||
182 | USHORT uiVal; | ||
183 | LONG lVal; | ||
184 | ULONG ulVal; | ||
185 | INT intVal; | ||
186 | UINT uintVal; | ||
187 | LARGE_INTEGER hVal; | ||
188 | ULARGE_INTEGER uhVal; | ||
189 | VARIANT_BOOL boolVal; | ||
190 | SCODE scode; | ||
191 | FILETIME filetime; | ||
192 | BSTR bstrVal; | ||
193 | }; | ||
194 | } PROPVARIANT; | ||
195 | |||
196 | typedef PROPVARIANT tagVARIANT; | ||
197 | typedef tagVARIANT VARIANT; | ||
198 | typedef VARIANT VARIANTARG; | ||
199 | |||
200 | MY_EXTERN_C HRESULT VariantClear(VARIANTARG *prop); | ||
201 | MY_EXTERN_C HRESULT VariantCopy(VARIANTARG *dest, const VARIANTARG *src); | ||
202 | |||
203 | typedef struct tagSTATPROPSTG | ||
204 | { | ||
205 | LPOLESTR lpwstrName; | ||
206 | PROPID propid; | ||
207 | VARTYPE vt; | ||
208 | } STATPROPSTG; | ||
209 | |||
210 | MY_EXTERN_C BSTR SysAllocStringByteLen(LPCSTR psz, UINT len); | ||
211 | MY_EXTERN_C BSTR SysAllocStringLen(const OLECHAR *sz, UINT len); | ||
212 | MY_EXTERN_C BSTR SysAllocString(const OLECHAR *sz); | ||
213 | MY_EXTERN_C void SysFreeString(BSTR bstr); | ||
214 | MY_EXTERN_C UINT SysStringByteLen(BSTR bstr); | ||
215 | MY_EXTERN_C UINT SysStringLen(BSTR bstr); | ||
216 | |||
217 | MY_EXTERN_C DWORD GetLastError(); | ||
218 | MY_EXTERN_C void SetLastError(DWORD dwCode); | ||
219 | MY_EXTERN_C LONG CompareFileTime(const FILETIME* ft1, const FILETIME* ft2); | ||
220 | |||
221 | MY_EXTERN_C DWORD GetCurrentThreadId(); | ||
222 | MY_EXTERN_C DWORD GetCurrentProcessId(); | ||
223 | |||
224 | #define MAX_PATH 1024 | ||
225 | |||
226 | #define CP_ACP 0 | ||
227 | #define CP_OEMCP 1 | ||
228 | #define CP_UTF8 65001 | ||
229 | |||
230 | typedef enum tagSTREAM_SEEK | ||
231 | { | ||
232 | STREAM_SEEK_SET = 0, | ||
233 | STREAM_SEEK_CUR = 1, | ||
234 | STREAM_SEEK_END = 2 | ||
235 | } STREAM_SEEK; | ||
236 | |||
237 | |||
238 | |||
239 | typedef struct _SYSTEMTIME | ||
240 | { | ||
241 | WORD wYear; | ||
242 | WORD wMonth; | ||
243 | WORD wDayOfWeek; | ||
244 | WORD wDay; | ||
245 | WORD wHour; | ||
246 | WORD wMinute; | ||
247 | WORD wSecond; | ||
248 | WORD wMilliseconds; | ||
249 | } SYSTEMTIME; | ||
250 | |||
251 | BOOL WINAPI FileTimeToLocalFileTime(const FILETIME *fileTime, FILETIME *localFileTime); | ||
252 | BOOL WINAPI LocalFileTimeToFileTime(const FILETIME *localFileTime, FILETIME *fileTime); | ||
253 | BOOL WINAPI FileTimeToSystemTime(const FILETIME *fileTime, SYSTEMTIME *systemTime); | ||
254 | // VOID WINAPI GetSystemTimeAsFileTime(FILETIME *systemTimeAsFileTime); | ||
255 | |||
256 | DWORD GetTickCount(); | ||
257 | |||
258 | |||
259 | #define CREATE_NEW 1 | ||
260 | #define CREATE_ALWAYS 2 | ||
261 | #define OPEN_EXISTING 3 | ||
262 | #define OPEN_ALWAYS 4 | ||
263 | #define TRUNCATE_EXISTING 5 | ||
264 | |||
265 | |||
266 | #endif // _WIN32 | ||
267 | |||
268 | #endif | ||