aboutsummaryrefslogtreecommitdiff
path: root/CPP/Common/MyWindows.h
diff options
context:
space:
mode:
authorIgor Pavlov <87184205+ip7z@users.noreply.github.com>2021-12-27 00:00:00 +0000
committerIgor Pavlov <87184205+ip7z@users.noreply.github.com>2022-03-18 15:35:13 +0500
commitf19f813537c7aea1c20749c914e756b54a9c3cf5 (patch)
tree816ba62ca7c0fa19f2eb46d9e9d6f7dd7c3a744d /CPP/Common/MyWindows.h
parent98e06a519b63b81986abe76d28887f6984a7732b (diff)
download7zip-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.h268
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
27typedef char CHAR;
28typedef unsigned char UCHAR;
29
30#undef BYTE
31typedef unsigned char BYTE;
32
33typedef short SHORT;
34typedef unsigned short USHORT;
35
36#undef WORD
37typedef unsigned short WORD;
38typedef 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;
45typedef 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
57typedef Int64 LONGLONG;
58typedef UInt64 ULONGLONG;
59
60typedef struct _LARGE_INTEGER { LONGLONG QuadPart; } LARGE_INTEGER;
61typedef struct _ULARGE_INTEGER { ULONGLONG QuadPart; } ULARGE_INTEGER;
62
63typedef const CHAR *LPCSTR;
64typedef CHAR TCHAR;
65typedef const TCHAR *LPCTSTR;
66typedef wchar_t WCHAR;
67typedef WCHAR OLECHAR;
68typedef const WCHAR *LPCWSTR;
69typedef OLECHAR *BSTR;
70typedef const OLECHAR *LPCOLESTR;
71typedef OLECHAR *LPOLESTR;
72
73typedef 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)
82typedef ULONG PROPID;
83typedef 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
118DEFINE_GUID(IID_IUnknown,
1190x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
120struct 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
129typedef IUnknown *LPUNKNOWN;
130
131#endif
132
133#define VARIANT_TRUE ((VARIANT_BOOL)-1)
134#define VARIANT_FALSE ((VARIANT_BOOL)0)
135
136enum 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
166typedef unsigned short VARTYPE;
167typedef WORD PROPVAR_PAD1;
168typedef WORD PROPVAR_PAD2;
169typedef WORD PROPVAR_PAD3;
170
171typedef 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
196typedef PROPVARIANT tagVARIANT;
197typedef tagVARIANT VARIANT;
198typedef VARIANT VARIANTARG;
199
200MY_EXTERN_C HRESULT VariantClear(VARIANTARG *prop);
201MY_EXTERN_C HRESULT VariantCopy(VARIANTARG *dest, const VARIANTARG *src);
202
203typedef struct tagSTATPROPSTG
204{
205 LPOLESTR lpwstrName;
206 PROPID propid;
207 VARTYPE vt;
208} STATPROPSTG;
209
210MY_EXTERN_C BSTR SysAllocStringByteLen(LPCSTR psz, UINT len);
211MY_EXTERN_C BSTR SysAllocStringLen(const OLECHAR *sz, UINT len);
212MY_EXTERN_C BSTR SysAllocString(const OLECHAR *sz);
213MY_EXTERN_C void SysFreeString(BSTR bstr);
214MY_EXTERN_C UINT SysStringByteLen(BSTR bstr);
215MY_EXTERN_C UINT SysStringLen(BSTR bstr);
216
217MY_EXTERN_C DWORD GetLastError();
218MY_EXTERN_C void SetLastError(DWORD dwCode);
219MY_EXTERN_C LONG CompareFileTime(const FILETIME* ft1, const FILETIME* ft2);
220
221MY_EXTERN_C DWORD GetCurrentThreadId();
222MY_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
230typedef 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
239typedef 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
251BOOL WINAPI FileTimeToLocalFileTime(const FILETIME *fileTime, FILETIME *localFileTime);
252BOOL WINAPI LocalFileTimeToFileTime(const FILETIME *localFileTime, FILETIME *fileTime);
253BOOL WINAPI FileTimeToSystemTime(const FILETIME *fileTime, SYSTEMTIME *systemTime);
254// VOID WINAPI GetSystemTimeAsFileTime(FILETIME *systemTimeAsFileTime);
255
256DWORD 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