xref: /aosp_15_r20/external/lzma/CPP/Common/MyWindows.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // MyWindows.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_DEFINE_GUID
4*f6dc9357SAndroid Build Coastguard Worker #undef Z7_DEFINE_GUID
5*f6dc9357SAndroid Build Coastguard Worker #endif
6*f6dc9357SAndroid Build Coastguard Worker 
7*f6dc9357SAndroid Build Coastguard Worker #ifdef INITGUID
8*f6dc9357SAndroid Build Coastguard Worker   #define Z7_DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
9*f6dc9357SAndroid Build Coastguard Worker     EXTERN_C const GUID name; \
10*f6dc9357SAndroid Build Coastguard Worker     EXTERN_C const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
11*f6dc9357SAndroid Build Coastguard Worker #else
12*f6dc9357SAndroid Build Coastguard Worker   #define Z7_DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
13*f6dc9357SAndroid Build Coastguard Worker     EXTERN_C const GUID name
14*f6dc9357SAndroid Build Coastguard Worker #endif
15*f6dc9357SAndroid Build Coastguard Worker 
16*f6dc9357SAndroid Build Coastguard Worker 
17*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_MY_WINDOWS_H
18*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_MY_WINDOWS_H
19*f6dc9357SAndroid Build Coastguard Worker 
20*f6dc9357SAndroid Build Coastguard Worker #ifdef _WIN32
21*f6dc9357SAndroid Build Coastguard Worker 
22*f6dc9357SAndroid Build Coastguard Worker #include "../../C/7zWindows.h"
23*f6dc9357SAndroid Build Coastguard Worker 
24*f6dc9357SAndroid Build Coastguard Worker #else // _WIN32
25*f6dc9357SAndroid Build Coastguard Worker 
26*f6dc9357SAndroid Build Coastguard Worker #include <stddef.h> // for wchar_t
27*f6dc9357SAndroid Build Coastguard Worker #include <string.h>
28*f6dc9357SAndroid Build Coastguard Worker // #include <stdint.h> // for uintptr_t
29*f6dc9357SAndroid Build Coastguard Worker 
30*f6dc9357SAndroid Build Coastguard Worker #include "../../C/7zTypes.h"
31*f6dc9357SAndroid Build Coastguard Worker #include "MyGuidDef.h"
32*f6dc9357SAndroid Build Coastguard Worker 
33*f6dc9357SAndroid Build Coastguard Worker // WINAPI is __stdcall in Windows-MSVC in windef.h
34*f6dc9357SAndroid Build Coastguard Worker #define WINAPI
35*f6dc9357SAndroid Build Coastguard Worker 
36*f6dc9357SAndroid Build Coastguard Worker typedef char CHAR;
37*f6dc9357SAndroid Build Coastguard Worker typedef unsigned char UCHAR;
38*f6dc9357SAndroid Build Coastguard Worker 
39*f6dc9357SAndroid Build Coastguard Worker #undef BYTE
40*f6dc9357SAndroid Build Coastguard Worker typedef unsigned char BYTE;
41*f6dc9357SAndroid Build Coastguard Worker 
42*f6dc9357SAndroid Build Coastguard Worker typedef short SHORT;
43*f6dc9357SAndroid Build Coastguard Worker typedef unsigned short USHORT;
44*f6dc9357SAndroid Build Coastguard Worker 
45*f6dc9357SAndroid Build Coastguard Worker #undef WORD
46*f6dc9357SAndroid Build Coastguard Worker typedef unsigned short WORD;
47*f6dc9357SAndroid Build Coastguard Worker typedef short VARIANT_BOOL;
48*f6dc9357SAndroid Build Coastguard Worker 
49*f6dc9357SAndroid Build Coastguard Worker #define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xffff))
50*f6dc9357SAndroid Build Coastguard Worker #define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16))
51*f6dc9357SAndroid Build Coastguard Worker 
52*f6dc9357SAndroid Build Coastguard Worker // MS uses long for BOOL, but long is 32-bit in MS. So we use int.
53*f6dc9357SAndroid Build Coastguard Worker // typedef long BOOL;
54*f6dc9357SAndroid Build Coastguard Worker typedef int BOOL;
55*f6dc9357SAndroid Build Coastguard Worker 
56*f6dc9357SAndroid Build Coastguard Worker #ifndef FALSE
57*f6dc9357SAndroid Build Coastguard Worker   #define FALSE 0
58*f6dc9357SAndroid Build Coastguard Worker   #define TRUE 1
59*f6dc9357SAndroid Build Coastguard Worker #endif
60*f6dc9357SAndroid Build Coastguard Worker 
61*f6dc9357SAndroid Build Coastguard Worker // typedef size_t ULONG_PTR;
62*f6dc9357SAndroid Build Coastguard Worker // typedef size_t DWORD_PTR;
63*f6dc9357SAndroid Build Coastguard Worker // typedef uintptr_t UINT_PTR;
64*f6dc9357SAndroid Build Coastguard Worker // typedef ptrdiff_t UINT_PTR;
65*f6dc9357SAndroid Build Coastguard Worker 
66*f6dc9357SAndroid Build Coastguard Worker typedef Int64 LONGLONG;
67*f6dc9357SAndroid Build Coastguard Worker typedef UInt64 ULONGLONG;
68*f6dc9357SAndroid Build Coastguard Worker 
69*f6dc9357SAndroid Build Coastguard Worker typedef struct { LONGLONG QuadPart; } LARGE_INTEGER;
70*f6dc9357SAndroid Build Coastguard Worker typedef struct { ULONGLONG QuadPart; } ULARGE_INTEGER;
71*f6dc9357SAndroid Build Coastguard Worker 
72*f6dc9357SAndroid Build Coastguard Worker typedef const CHAR *LPCSTR;
73*f6dc9357SAndroid Build Coastguard Worker typedef CHAR TCHAR;
74*f6dc9357SAndroid Build Coastguard Worker typedef const TCHAR *LPCTSTR;
75*f6dc9357SAndroid Build Coastguard Worker typedef wchar_t WCHAR;
76*f6dc9357SAndroid Build Coastguard Worker typedef WCHAR OLECHAR;
77*f6dc9357SAndroid Build Coastguard Worker typedef const WCHAR *LPCWSTR;
78*f6dc9357SAndroid Build Coastguard Worker typedef OLECHAR *BSTR;
79*f6dc9357SAndroid Build Coastguard Worker typedef const OLECHAR *LPCOLESTR;
80*f6dc9357SAndroid Build Coastguard Worker typedef OLECHAR *LPOLESTR;
81*f6dc9357SAndroid Build Coastguard Worker 
82*f6dc9357SAndroid Build Coastguard Worker typedef struct
83*f6dc9357SAndroid Build Coastguard Worker {
84*f6dc9357SAndroid Build Coastguard Worker   DWORD dwLowDateTime;
85*f6dc9357SAndroid Build Coastguard Worker   DWORD dwHighDateTime;
86*f6dc9357SAndroid Build Coastguard Worker } FILETIME;
87*f6dc9357SAndroid Build Coastguard Worker 
88*f6dc9357SAndroid Build Coastguard Worker #define SUCCEEDED(hr) ((HRESULT)(hr) >= 0)
89*f6dc9357SAndroid Build Coastguard Worker #define FAILED(hr)    ((HRESULT)(hr) < 0)
90*f6dc9357SAndroid Build Coastguard Worker typedef ULONG PROPID;
91*f6dc9357SAndroid Build Coastguard Worker typedef LONG SCODE;
92*f6dc9357SAndroid Build Coastguard Worker 
93*f6dc9357SAndroid Build Coastguard Worker 
94*f6dc9357SAndroid Build Coastguard Worker #define S_OK    ((HRESULT)0x00000000L)
95*f6dc9357SAndroid Build Coastguard Worker #define S_FALSE ((HRESULT)0x00000001L)
96*f6dc9357SAndroid Build Coastguard Worker #define E_NOTIMPL     ((HRESULT)0x80004001L)
97*f6dc9357SAndroid Build Coastguard Worker #define E_NOINTERFACE ((HRESULT)0x80004002L)
98*f6dc9357SAndroid Build Coastguard Worker #define E_ABORT       ((HRESULT)0x80004004L)
99*f6dc9357SAndroid Build Coastguard Worker #define E_FAIL        ((HRESULT)0x80004005L)
100*f6dc9357SAndroid Build Coastguard Worker #define STG_E_INVALIDFUNCTION     ((HRESULT)0x80030001L)
101*f6dc9357SAndroid Build Coastguard Worker #define CLASS_E_CLASSNOTAVAILABLE ((HRESULT)0x80040111L)
102*f6dc9357SAndroid Build Coastguard Worker 
103*f6dc9357SAndroid Build Coastguard Worker 
104*f6dc9357SAndroid Build Coastguard Worker #ifdef _MSC_VER
105*f6dc9357SAndroid Build Coastguard Worker #define STDMETHODCALLTYPE __stdcall
106*f6dc9357SAndroid Build Coastguard Worker #define STDAPICALLTYPE    __stdcall
107*f6dc9357SAndroid Build Coastguard Worker #else
108*f6dc9357SAndroid Build Coastguard Worker // do we need __export here?
109*f6dc9357SAndroid Build Coastguard Worker #define STDMETHODCALLTYPE
110*f6dc9357SAndroid Build Coastguard Worker #define STDAPICALLTYPE
111*f6dc9357SAndroid Build Coastguard Worker #endif
112*f6dc9357SAndroid Build Coastguard Worker 
113*f6dc9357SAndroid Build Coastguard Worker #define STDAPI  EXTERN_C HRESULT STDAPICALLTYPE
114*f6dc9357SAndroid Build Coastguard Worker 
115*f6dc9357SAndroid Build Coastguard Worker #ifndef DECLSPEC_NOTHROW
116*f6dc9357SAndroid Build Coastguard Worker #define DECLSPEC_NOTHROW    Z7_DECLSPEC_NOTHROW
117*f6dc9357SAndroid Build Coastguard Worker #endif
118*f6dc9357SAndroid Build Coastguard Worker 
119*f6dc9357SAndroid Build Coastguard Worker #ifndef DECLSPEC_NOVTABLE
120*f6dc9357SAndroid Build Coastguard Worker #define DECLSPEC_NOVTABLE   Z7_DECLSPEC_NOVTABLE
121*f6dc9357SAndroid Build Coastguard Worker #endif
122*f6dc9357SAndroid Build Coastguard Worker 
123*f6dc9357SAndroid Build Coastguard Worker #ifndef COM_DECLSPEC_NOTHROW
124*f6dc9357SAndroid Build Coastguard Worker #ifdef COM_STDMETHOD_CAN_THROW
125*f6dc9357SAndroid Build Coastguard Worker   #define COM_DECLSPEC_NOTHROW
126*f6dc9357SAndroid Build Coastguard Worker #else
127*f6dc9357SAndroid Build Coastguard Worker   #define COM_DECLSPEC_NOTHROW  DECLSPEC_NOTHROW
128*f6dc9357SAndroid Build Coastguard Worker #endif
129*f6dc9357SAndroid Build Coastguard Worker #endif
130*f6dc9357SAndroid Build Coastguard Worker 
131*f6dc9357SAndroid Build Coastguard Worker #define DECLARE_INTERFACE(iface)              struct DECLSPEC_NOVTABLE iface
132*f6dc9357SAndroid Build Coastguard Worker #define DECLARE_INTERFACE_(iface, baseiface)  struct DECLSPEC_NOVTABLE iface : public baseiface
133*f6dc9357SAndroid Build Coastguard Worker 
134*f6dc9357SAndroid Build Coastguard Worker #define STDMETHOD_(t, f)  virtual COM_DECLSPEC_NOTHROW t STDMETHODCALLTYPE f
135*f6dc9357SAndroid Build Coastguard Worker #define STDMETHOD(f)      STDMETHOD_(HRESULT, f)
136*f6dc9357SAndroid Build Coastguard Worker #define STDMETHODIMP_(t)  COM_DECLSPEC_NOTHROW t STDMETHODCALLTYPE
137*f6dc9357SAndroid Build Coastguard Worker #define STDMETHODIMP      STDMETHODIMP_(HRESULT)
138*f6dc9357SAndroid Build Coastguard Worker 
139*f6dc9357SAndroid Build Coastguard Worker 
140*f6dc9357SAndroid Build Coastguard Worker #define PURE = 0
141*f6dc9357SAndroid Build Coastguard Worker 
142*f6dc9357SAndroid Build Coastguard Worker // #define MIDL_INTERFACE(x) struct
143*f6dc9357SAndroid Build Coastguard Worker 
144*f6dc9357SAndroid Build Coastguard Worker 
145*f6dc9357SAndroid Build Coastguard Worker #ifdef __cplusplus
146*f6dc9357SAndroid Build Coastguard Worker 
147*f6dc9357SAndroid Build Coastguard Worker /*
148*f6dc9357SAndroid Build Coastguard Worker   p7zip and 7-Zip before v23 used virtual destructor in IUnknown,
149*f6dc9357SAndroid Build Coastguard Worker   if _WIN32 is not defined.
150*f6dc9357SAndroid Build Coastguard Worker   It used virtual destructor, because some compilers don't like virtual
151*f6dc9357SAndroid Build Coastguard Worker   interfaces without virtual destructor.
152*f6dc9357SAndroid Build Coastguard Worker   IUnknown in Windows (_WIN32) doesn't use virtual destructor in IUnknown.
153*f6dc9357SAndroid Build Coastguard Worker   We still can define Z7_USE_VIRTUAL_DESTRUCTOR_IN_IUNKNOWN here,
154*f6dc9357SAndroid Build Coastguard Worker   if we want to be compatible with old plugin interface of p7zip and 7-Zip before v23.
155*f6dc9357SAndroid Build Coastguard Worker 
156*f6dc9357SAndroid Build Coastguard Worker v23:
157*f6dc9357SAndroid Build Coastguard Worker   In new 7-Zip v23 we try to be more compatible with original IUnknown from _WIN32.
158*f6dc9357SAndroid Build Coastguard Worker   So we do not define Z7_USE_VIRTUAL_DESTRUCTOR_IN_IUNKNOWN here,
159*f6dc9357SAndroid Build Coastguard Worker */
160*f6dc9357SAndroid Build Coastguard Worker // #define Z7_USE_VIRTUAL_DESTRUCTOR_IN_IUNKNOWN
161*f6dc9357SAndroid Build Coastguard Worker 
162*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_USE_VIRTUAL_DESTRUCTOR_IN_IUNKNOWN
163*f6dc9357SAndroid Build Coastguard Worker #if defined(__clang__)
164*f6dc9357SAndroid Build Coastguard Worker #pragma GCC diagnostic ignored "-Winconsistent-missing-destructor-override"
165*f6dc9357SAndroid Build Coastguard Worker #endif
166*f6dc9357SAndroid Build Coastguard Worker #endif
167*f6dc9357SAndroid Build Coastguard Worker 
168*f6dc9357SAndroid Build Coastguard Worker Z7_PURE_INTERFACES_BEGIN
169*f6dc9357SAndroid Build Coastguard Worker 
170*f6dc9357SAndroid Build Coastguard Worker DEFINE_GUID(IID_IUnknown,
171*f6dc9357SAndroid Build Coastguard Worker 0x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
172*f6dc9357SAndroid Build Coastguard Worker struct IUnknown
173*f6dc9357SAndroid Build Coastguard Worker {
174*f6dc9357SAndroid Build Coastguard Worker   STDMETHOD(QueryInterface) (REFIID iid, void **outObject) =0;
175*f6dc9357SAndroid Build Coastguard Worker   STDMETHOD_(ULONG, AddRef)() =0;
176*f6dc9357SAndroid Build Coastguard Worker   STDMETHOD_(ULONG, Release)() =0;
177*f6dc9357SAndroid Build Coastguard Worker  #ifdef Z7_USE_VIRTUAL_DESTRUCTOR_IN_IUNKNOWN
~IUnknownIUnknown178*f6dc9357SAndroid Build Coastguard Worker   virtual ~IUnknown() {}
179*f6dc9357SAndroid Build Coastguard Worker  #endif
180*f6dc9357SAndroid Build Coastguard Worker };
181*f6dc9357SAndroid Build Coastguard Worker 
182*f6dc9357SAndroid Build Coastguard Worker typedef IUnknown *LPUNKNOWN;
183*f6dc9357SAndroid Build Coastguard Worker 
184*f6dc9357SAndroid Build Coastguard Worker Z7_PURE_INTERFACES_END
185*f6dc9357SAndroid Build Coastguard Worker 
186*f6dc9357SAndroid Build Coastguard Worker #endif // __cplusplus
187*f6dc9357SAndroid Build Coastguard Worker 
188*f6dc9357SAndroid Build Coastguard Worker #define VARIANT_TRUE ((VARIANT_BOOL)-1)
189*f6dc9357SAndroid Build Coastguard Worker #define VARIANT_FALSE ((VARIANT_BOOL)0)
190*f6dc9357SAndroid Build Coastguard Worker 
191*f6dc9357SAndroid Build Coastguard Worker enum VARENUM
192*f6dc9357SAndroid Build Coastguard Worker {
193*f6dc9357SAndroid Build Coastguard Worker   VT_EMPTY = 0,
194*f6dc9357SAndroid Build Coastguard Worker   VT_NULL = 1,
195*f6dc9357SAndroid Build Coastguard Worker   VT_I2 = 2,
196*f6dc9357SAndroid Build Coastguard Worker   VT_I4 = 3,
197*f6dc9357SAndroid Build Coastguard Worker   VT_R4 = 4,
198*f6dc9357SAndroid Build Coastguard Worker   VT_R8 = 5,
199*f6dc9357SAndroid Build Coastguard Worker   VT_CY = 6,
200*f6dc9357SAndroid Build Coastguard Worker   VT_DATE = 7,
201*f6dc9357SAndroid Build Coastguard Worker   VT_BSTR = 8,
202*f6dc9357SAndroid Build Coastguard Worker   VT_DISPATCH = 9,
203*f6dc9357SAndroid Build Coastguard Worker   VT_ERROR = 10,
204*f6dc9357SAndroid Build Coastguard Worker   VT_BOOL = 11,
205*f6dc9357SAndroid Build Coastguard Worker   VT_VARIANT = 12,
206*f6dc9357SAndroid Build Coastguard Worker   VT_UNKNOWN = 13,
207*f6dc9357SAndroid Build Coastguard Worker   VT_DECIMAL = 14,
208*f6dc9357SAndroid Build Coastguard Worker 
209*f6dc9357SAndroid Build Coastguard Worker   VT_I1 = 16,
210*f6dc9357SAndroid Build Coastguard Worker   VT_UI1 = 17,
211*f6dc9357SAndroid Build Coastguard Worker   VT_UI2 = 18,
212*f6dc9357SAndroid Build Coastguard Worker   VT_UI4 = 19,
213*f6dc9357SAndroid Build Coastguard Worker   VT_I8 = 20,
214*f6dc9357SAndroid Build Coastguard Worker   VT_UI8 = 21,
215*f6dc9357SAndroid Build Coastguard Worker   VT_INT = 22,
216*f6dc9357SAndroid Build Coastguard Worker   VT_UINT = 23,
217*f6dc9357SAndroid Build Coastguard Worker   VT_VOID = 24,
218*f6dc9357SAndroid Build Coastguard Worker   VT_HRESULT = 25,
219*f6dc9357SAndroid Build Coastguard Worker   VT_FILETIME = 64
220*f6dc9357SAndroid Build Coastguard Worker };
221*f6dc9357SAndroid Build Coastguard Worker 
222*f6dc9357SAndroid Build Coastguard Worker typedef unsigned short VARTYPE;
223*f6dc9357SAndroid Build Coastguard Worker typedef WORD PROPVAR_PAD1;
224*f6dc9357SAndroid Build Coastguard Worker typedef WORD PROPVAR_PAD2;
225*f6dc9357SAndroid Build Coastguard Worker typedef WORD PROPVAR_PAD3;
226*f6dc9357SAndroid Build Coastguard Worker 
227*f6dc9357SAndroid Build Coastguard Worker typedef struct tagPROPVARIANT
228*f6dc9357SAndroid Build Coastguard Worker {
229*f6dc9357SAndroid Build Coastguard Worker   VARTYPE vt;
230*f6dc9357SAndroid Build Coastguard Worker   PROPVAR_PAD1 wReserved1;
231*f6dc9357SAndroid Build Coastguard Worker   PROPVAR_PAD2 wReserved2;
232*f6dc9357SAndroid Build Coastguard Worker   PROPVAR_PAD3 wReserved3;
233*f6dc9357SAndroid Build Coastguard Worker   union
234*f6dc9357SAndroid Build Coastguard Worker   {
235*f6dc9357SAndroid Build Coastguard Worker     CHAR cVal;
236*f6dc9357SAndroid Build Coastguard Worker     UCHAR bVal;
237*f6dc9357SAndroid Build Coastguard Worker     SHORT iVal;
238*f6dc9357SAndroid Build Coastguard Worker     USHORT uiVal;
239*f6dc9357SAndroid Build Coastguard Worker     LONG lVal;
240*f6dc9357SAndroid Build Coastguard Worker     ULONG ulVal;
241*f6dc9357SAndroid Build Coastguard Worker     INT intVal;
242*f6dc9357SAndroid Build Coastguard Worker     UINT uintVal;
243*f6dc9357SAndroid Build Coastguard Worker     LARGE_INTEGER hVal;
244*f6dc9357SAndroid Build Coastguard Worker     ULARGE_INTEGER uhVal;
245*f6dc9357SAndroid Build Coastguard Worker     VARIANT_BOOL boolVal;
246*f6dc9357SAndroid Build Coastguard Worker     SCODE scode;
247*f6dc9357SAndroid Build Coastguard Worker     FILETIME filetime;
248*f6dc9357SAndroid Build Coastguard Worker     BSTR bstrVal;
249*f6dc9357SAndroid Build Coastguard Worker   };
250*f6dc9357SAndroid Build Coastguard Worker } PROPVARIANT;
251*f6dc9357SAndroid Build Coastguard Worker 
252*f6dc9357SAndroid Build Coastguard Worker typedef PROPVARIANT tagVARIANT;
253*f6dc9357SAndroid Build Coastguard Worker typedef tagVARIANT VARIANT;
254*f6dc9357SAndroid Build Coastguard Worker typedef VARIANT VARIANTARG;
255*f6dc9357SAndroid Build Coastguard Worker 
256*f6dc9357SAndroid Build Coastguard Worker EXTERN_C HRESULT VariantClear(VARIANTARG *prop);
257*f6dc9357SAndroid Build Coastguard Worker EXTERN_C HRESULT VariantCopy(VARIANTARG *dest, const VARIANTARG *src);
258*f6dc9357SAndroid Build Coastguard Worker 
259*f6dc9357SAndroid Build Coastguard Worker typedef struct tagSTATPROPSTG
260*f6dc9357SAndroid Build Coastguard Worker {
261*f6dc9357SAndroid Build Coastguard Worker   LPOLESTR lpwstrName;
262*f6dc9357SAndroid Build Coastguard Worker   PROPID propid;
263*f6dc9357SAndroid Build Coastguard Worker   VARTYPE vt;
264*f6dc9357SAndroid Build Coastguard Worker } STATPROPSTG;
265*f6dc9357SAndroid Build Coastguard Worker 
266*f6dc9357SAndroid Build Coastguard Worker EXTERN_C BSTR SysAllocStringByteLen(LPCSTR psz, UINT len);
267*f6dc9357SAndroid Build Coastguard Worker EXTERN_C BSTR SysAllocStringLen(const OLECHAR *sz, UINT len);
268*f6dc9357SAndroid Build Coastguard Worker EXTERN_C BSTR SysAllocString(const OLECHAR *sz);
269*f6dc9357SAndroid Build Coastguard Worker EXTERN_C void SysFreeString(BSTR bstr);
270*f6dc9357SAndroid Build Coastguard Worker EXTERN_C UINT SysStringByteLen(BSTR bstr);
271*f6dc9357SAndroid Build Coastguard Worker EXTERN_C UINT SysStringLen(BSTR bstr);
272*f6dc9357SAndroid Build Coastguard Worker 
273*f6dc9357SAndroid Build Coastguard Worker EXTERN_C DWORD GetLastError();
274*f6dc9357SAndroid Build Coastguard Worker EXTERN_C void SetLastError(DWORD dwCode);
275*f6dc9357SAndroid Build Coastguard Worker EXTERN_C LONG CompareFileTime(const FILETIME* ft1, const FILETIME* ft2);
276*f6dc9357SAndroid Build Coastguard Worker 
277*f6dc9357SAndroid Build Coastguard Worker EXTERN_C DWORD GetCurrentThreadId();
278*f6dc9357SAndroid Build Coastguard Worker EXTERN_C DWORD GetCurrentProcessId();
279*f6dc9357SAndroid Build Coastguard Worker 
280*f6dc9357SAndroid Build Coastguard Worker #define MAX_PATH 1024
281*f6dc9357SAndroid Build Coastguard Worker 
282*f6dc9357SAndroid Build Coastguard Worker #define CP_ACP    0
283*f6dc9357SAndroid Build Coastguard Worker #define CP_OEMCP  1
284*f6dc9357SAndroid Build Coastguard Worker #define CP_UTF8   65001
285*f6dc9357SAndroid Build Coastguard Worker 
286*f6dc9357SAndroid Build Coastguard Worker typedef enum tagSTREAM_SEEK
287*f6dc9357SAndroid Build Coastguard Worker {
288*f6dc9357SAndroid Build Coastguard Worker   STREAM_SEEK_SET = 0,
289*f6dc9357SAndroid Build Coastguard Worker   STREAM_SEEK_CUR = 1,
290*f6dc9357SAndroid Build Coastguard Worker   STREAM_SEEK_END = 2
291*f6dc9357SAndroid Build Coastguard Worker } STREAM_SEEK;
292*f6dc9357SAndroid Build Coastguard Worker 
293*f6dc9357SAndroid Build Coastguard Worker 
294*f6dc9357SAndroid Build Coastguard Worker 
295*f6dc9357SAndroid Build Coastguard Worker typedef struct
296*f6dc9357SAndroid Build Coastguard Worker {
297*f6dc9357SAndroid Build Coastguard Worker   WORD wYear;
298*f6dc9357SAndroid Build Coastguard Worker   WORD wMonth;
299*f6dc9357SAndroid Build Coastguard Worker   WORD wDayOfWeek;
300*f6dc9357SAndroid Build Coastguard Worker   WORD wDay;
301*f6dc9357SAndroid Build Coastguard Worker   WORD wHour;
302*f6dc9357SAndroid Build Coastguard Worker   WORD wMinute;
303*f6dc9357SAndroid Build Coastguard Worker   WORD wSecond;
304*f6dc9357SAndroid Build Coastguard Worker   WORD wMilliseconds;
305*f6dc9357SAndroid Build Coastguard Worker } SYSTEMTIME;
306*f6dc9357SAndroid Build Coastguard Worker 
307*f6dc9357SAndroid Build Coastguard Worker BOOL WINAPI FileTimeToLocalFileTime(const FILETIME *fileTime, FILETIME *localFileTime);
308*f6dc9357SAndroid Build Coastguard Worker BOOL WINAPI LocalFileTimeToFileTime(const FILETIME *localFileTime, FILETIME *fileTime);
309*f6dc9357SAndroid Build Coastguard Worker BOOL WINAPI FileTimeToSystemTime(const FILETIME *fileTime, SYSTEMTIME *systemTime);
310*f6dc9357SAndroid Build Coastguard Worker // VOID WINAPI GetSystemTimeAsFileTime(FILETIME *systemTimeAsFileTime);
311*f6dc9357SAndroid Build Coastguard Worker 
312*f6dc9357SAndroid Build Coastguard Worker DWORD GetTickCount();
313*f6dc9357SAndroid Build Coastguard Worker 
314*f6dc9357SAndroid Build Coastguard Worker 
315*f6dc9357SAndroid Build Coastguard Worker /*
316*f6dc9357SAndroid Build Coastguard Worker #define CREATE_NEW          1
317*f6dc9357SAndroid Build Coastguard Worker #define CREATE_ALWAYS       2
318*f6dc9357SAndroid Build Coastguard Worker #define OPEN_EXISTING       3
319*f6dc9357SAndroid Build Coastguard Worker #define OPEN_ALWAYS         4
320*f6dc9357SAndroid Build Coastguard Worker #define TRUNCATE_EXISTING   5
321*f6dc9357SAndroid Build Coastguard Worker */
322*f6dc9357SAndroid Build Coastguard Worker 
323*f6dc9357SAndroid Build Coastguard Worker #endif // _WIN32
324*f6dc9357SAndroid Build Coastguard Worker 
325*f6dc9357SAndroid Build Coastguard Worker #endif
326