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