chore: initial commit (extracted from Launchers monorepo)
Plugin: ns7zip v2.0.0 Architectures: x86-ansi, x86-unicode, amd64-unicode License: LGPL-2.1-or-later
This commit is contained in:
@@ -0,0 +1,325 @@
|
||||
// MyWindows.h
|
||||
|
||||
#ifdef Z7_DEFINE_GUID
|
||||
#undef Z7_DEFINE_GUID
|
||||
#endif
|
||||
|
||||
#ifdef INITGUID
|
||||
#define Z7_DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
|
||||
EXTERN_C const GUID name; \
|
||||
EXTERN_C const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
|
||||
#else
|
||||
#define Z7_DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
|
||||
EXTERN_C const GUID name
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef ZIP7_INC_MY_WINDOWS_H
|
||||
#define ZIP7_INC_MY_WINDOWS_H
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
#include "../../C/7zWindows.h"
|
||||
|
||||
#else // _WIN32
|
||||
|
||||
#include <stddef.h> // for wchar_t
|
||||
#include <string.h>
|
||||
// #include <stdint.h> // for uintptr_t
|
||||
|
||||
#include "../../C/7zTypes.h"
|
||||
#include "MyGuidDef.h"
|
||||
|
||||
// WINAPI is __stdcall in Windows-MSVC in windef.h
|
||||
#define WINAPI
|
||||
|
||||
typedef char CHAR;
|
||||
typedef unsigned char UCHAR;
|
||||
|
||||
#undef BYTE
|
||||
typedef unsigned char BYTE;
|
||||
|
||||
typedef short SHORT;
|
||||
typedef unsigned short USHORT;
|
||||
|
||||
#undef WORD
|
||||
typedef unsigned short WORD;
|
||||
typedef short VARIANT_BOOL;
|
||||
|
||||
#define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xffff))
|
||||
#define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16))
|
||||
|
||||
// MS uses long for BOOL, but long is 32-bit in MS. So we use int.
|
||||
// typedef long BOOL;
|
||||
typedef int BOOL;
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#define TRUE 1
|
||||
#endif
|
||||
|
||||
// typedef size_t ULONG_PTR;
|
||||
// typedef size_t DWORD_PTR;
|
||||
// typedef uintptr_t UINT_PTR;
|
||||
// typedef ptrdiff_t UINT_PTR;
|
||||
|
||||
typedef Int64 LONGLONG;
|
||||
typedef UInt64 ULONGLONG;
|
||||
|
||||
typedef struct { LONGLONG QuadPart; } LARGE_INTEGER;
|
||||
typedef struct { ULONGLONG QuadPart; } ULARGE_INTEGER;
|
||||
|
||||
typedef const CHAR *LPCSTR;
|
||||
typedef CHAR TCHAR;
|
||||
typedef const TCHAR *LPCTSTR;
|
||||
typedef wchar_t WCHAR;
|
||||
typedef WCHAR OLECHAR;
|
||||
typedef const WCHAR *LPCWSTR;
|
||||
typedef OLECHAR *BSTR;
|
||||
typedef const OLECHAR *LPCOLESTR;
|
||||
typedef OLECHAR *LPOLESTR;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD dwLowDateTime;
|
||||
DWORD dwHighDateTime;
|
||||
} FILETIME;
|
||||
|
||||
#define SUCCEEDED(hr) ((HRESULT)(hr) >= 0)
|
||||
#define FAILED(hr) ((HRESULT)(hr) < 0)
|
||||
typedef ULONG PROPID;
|
||||
typedef LONG SCODE;
|
||||
|
||||
|
||||
#define S_OK ((HRESULT)0x00000000L)
|
||||
#define S_FALSE ((HRESULT)0x00000001L)
|
||||
#define E_NOTIMPL ((HRESULT)0x80004001L)
|
||||
#define E_NOINTERFACE ((HRESULT)0x80004002L)
|
||||
#define E_ABORT ((HRESULT)0x80004004L)
|
||||
#define E_FAIL ((HRESULT)0x80004005L)
|
||||
#define STG_E_INVALIDFUNCTION ((HRESULT)0x80030001L)
|
||||
#define CLASS_E_CLASSNOTAVAILABLE ((HRESULT)0x80040111L)
|
||||
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define STDMETHODCALLTYPE __stdcall
|
||||
#define STDAPICALLTYPE __stdcall
|
||||
#else
|
||||
// do we need __export here?
|
||||
#define STDMETHODCALLTYPE
|
||||
#define STDAPICALLTYPE
|
||||
#endif
|
||||
|
||||
#define STDAPI EXTERN_C HRESULT STDAPICALLTYPE
|
||||
|
||||
#ifndef DECLSPEC_NOTHROW
|
||||
#define DECLSPEC_NOTHROW Z7_DECLSPEC_NOTHROW
|
||||
#endif
|
||||
|
||||
#ifndef DECLSPEC_NOVTABLE
|
||||
#define DECLSPEC_NOVTABLE Z7_DECLSPEC_NOVTABLE
|
||||
#endif
|
||||
|
||||
#ifndef COM_DECLSPEC_NOTHROW
|
||||
#ifdef COM_STDMETHOD_CAN_THROW
|
||||
#define COM_DECLSPEC_NOTHROW
|
||||
#else
|
||||
#define COM_DECLSPEC_NOTHROW DECLSPEC_NOTHROW
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define DECLARE_INTERFACE(iface) struct DECLSPEC_NOVTABLE iface
|
||||
#define DECLARE_INTERFACE_(iface, baseiface) struct DECLSPEC_NOVTABLE iface : public baseiface
|
||||
|
||||
#define STDMETHOD_(t, f) virtual COM_DECLSPEC_NOTHROW t STDMETHODCALLTYPE f
|
||||
#define STDMETHOD(f) STDMETHOD_(HRESULT, f)
|
||||
#define STDMETHODIMP_(t) COM_DECLSPEC_NOTHROW t STDMETHODCALLTYPE
|
||||
#define STDMETHODIMP STDMETHODIMP_(HRESULT)
|
||||
|
||||
|
||||
#define PURE = 0
|
||||
|
||||
// #define MIDL_INTERFACE(x) struct
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
/*
|
||||
p7zip and 7-Zip before v23 used virtual destructor in IUnknown,
|
||||
if _WIN32 is not defined.
|
||||
It used virtual destructor, because some compilers don't like virtual
|
||||
interfaces without virtual destructor.
|
||||
IUnknown in Windows (_WIN32) doesn't use virtual destructor in IUnknown.
|
||||
We still can define Z7_USE_VIRTUAL_DESTRUCTOR_IN_IUNKNOWN here,
|
||||
if we want to be compatible with old plugin interface of p7zip and 7-Zip before v23.
|
||||
|
||||
v23:
|
||||
In new 7-Zip v23 we try to be more compatible with original IUnknown from _WIN32.
|
||||
So we do not define Z7_USE_VIRTUAL_DESTRUCTOR_IN_IUNKNOWN here,
|
||||
*/
|
||||
// #define Z7_USE_VIRTUAL_DESTRUCTOR_IN_IUNKNOWN
|
||||
|
||||
#ifdef Z7_USE_VIRTUAL_DESTRUCTOR_IN_IUNKNOWN
|
||||
#if defined(__clang__)
|
||||
#pragma GCC diagnostic ignored "-Winconsistent-missing-destructor-override"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Z7_PURE_INTERFACES_BEGIN
|
||||
|
||||
DEFINE_GUID(IID_IUnknown,
|
||||
0x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
|
||||
struct IUnknown
|
||||
{
|
||||
STDMETHOD(QueryInterface) (REFIID iid, void **outObject) =0;
|
||||
STDMETHOD_(ULONG, AddRef)() =0;
|
||||
STDMETHOD_(ULONG, Release)() =0;
|
||||
#ifdef Z7_USE_VIRTUAL_DESTRUCTOR_IN_IUNKNOWN
|
||||
virtual ~IUnknown() {}
|
||||
#endif
|
||||
};
|
||||
|
||||
typedef IUnknown *LPUNKNOWN;
|
||||
|
||||
Z7_PURE_INTERFACES_END
|
||||
|
||||
#endif // __cplusplus
|
||||
|
||||
#define VARIANT_TRUE ((VARIANT_BOOL)-1)
|
||||
#define VARIANT_FALSE ((VARIANT_BOOL)0)
|
||||
|
||||
enum VARENUM
|
||||
{
|
||||
VT_EMPTY = 0,
|
||||
VT_NULL = 1,
|
||||
VT_I2 = 2,
|
||||
VT_I4 = 3,
|
||||
VT_R4 = 4,
|
||||
VT_R8 = 5,
|
||||
VT_CY = 6,
|
||||
VT_DATE = 7,
|
||||
VT_BSTR = 8,
|
||||
VT_DISPATCH = 9,
|
||||
VT_ERROR = 10,
|
||||
VT_BOOL = 11,
|
||||
VT_VARIANT = 12,
|
||||
VT_UNKNOWN = 13,
|
||||
VT_DECIMAL = 14,
|
||||
|
||||
VT_I1 = 16,
|
||||
VT_UI1 = 17,
|
||||
VT_UI2 = 18,
|
||||
VT_UI4 = 19,
|
||||
VT_I8 = 20,
|
||||
VT_UI8 = 21,
|
||||
VT_INT = 22,
|
||||
VT_UINT = 23,
|
||||
VT_VOID = 24,
|
||||
VT_HRESULT = 25,
|
||||
VT_FILETIME = 64
|
||||
};
|
||||
|
||||
typedef unsigned short VARTYPE;
|
||||
typedef WORD PROPVAR_PAD1;
|
||||
typedef WORD PROPVAR_PAD2;
|
||||
typedef WORD PROPVAR_PAD3;
|
||||
|
||||
typedef struct tagPROPVARIANT
|
||||
{
|
||||
VARTYPE vt;
|
||||
PROPVAR_PAD1 wReserved1;
|
||||
PROPVAR_PAD2 wReserved2;
|
||||
PROPVAR_PAD3 wReserved3;
|
||||
union
|
||||
{
|
||||
CHAR cVal;
|
||||
UCHAR bVal;
|
||||
SHORT iVal;
|
||||
USHORT uiVal;
|
||||
LONG lVal;
|
||||
ULONG ulVal;
|
||||
INT intVal;
|
||||
UINT uintVal;
|
||||
LARGE_INTEGER hVal;
|
||||
ULARGE_INTEGER uhVal;
|
||||
VARIANT_BOOL boolVal;
|
||||
SCODE scode;
|
||||
FILETIME filetime;
|
||||
BSTR bstrVal;
|
||||
};
|
||||
} PROPVARIANT;
|
||||
|
||||
typedef PROPVARIANT tagVARIANT;
|
||||
typedef tagVARIANT VARIANT;
|
||||
typedef VARIANT VARIANTARG;
|
||||
|
||||
EXTERN_C HRESULT VariantClear(VARIANTARG *prop);
|
||||
EXTERN_C HRESULT VariantCopy(VARIANTARG *dest, const VARIANTARG *src);
|
||||
|
||||
typedef struct tagSTATPROPSTG
|
||||
{
|
||||
LPOLESTR lpwstrName;
|
||||
PROPID propid;
|
||||
VARTYPE vt;
|
||||
} STATPROPSTG;
|
||||
|
||||
EXTERN_C BSTR SysAllocStringByteLen(LPCSTR psz, UINT len);
|
||||
EXTERN_C BSTR SysAllocStringLen(const OLECHAR *sz, UINT len);
|
||||
EXTERN_C BSTR SysAllocString(const OLECHAR *sz);
|
||||
EXTERN_C void SysFreeString(BSTR bstr);
|
||||
EXTERN_C UINT SysStringByteLen(BSTR bstr);
|
||||
EXTERN_C UINT SysStringLen(BSTR bstr);
|
||||
|
||||
EXTERN_C DWORD GetLastError();
|
||||
EXTERN_C void SetLastError(DWORD dwCode);
|
||||
EXTERN_C LONG CompareFileTime(const FILETIME* ft1, const FILETIME* ft2);
|
||||
|
||||
EXTERN_C DWORD GetCurrentThreadId();
|
||||
EXTERN_C DWORD GetCurrentProcessId();
|
||||
|
||||
#define MAX_PATH 1024
|
||||
|
||||
#define CP_ACP 0
|
||||
#define CP_OEMCP 1
|
||||
#define CP_UTF8 65001
|
||||
|
||||
typedef enum tagSTREAM_SEEK
|
||||
{
|
||||
STREAM_SEEK_SET = 0,
|
||||
STREAM_SEEK_CUR = 1,
|
||||
STREAM_SEEK_END = 2
|
||||
} STREAM_SEEK;
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
WORD wYear;
|
||||
WORD wMonth;
|
||||
WORD wDayOfWeek;
|
||||
WORD wDay;
|
||||
WORD wHour;
|
||||
WORD wMinute;
|
||||
WORD wSecond;
|
||||
WORD wMilliseconds;
|
||||
} SYSTEMTIME;
|
||||
|
||||
BOOL WINAPI FileTimeToLocalFileTime(const FILETIME *fileTime, FILETIME *localFileTime);
|
||||
BOOL WINAPI LocalFileTimeToFileTime(const FILETIME *localFileTime, FILETIME *fileTime);
|
||||
BOOL WINAPI FileTimeToSystemTime(const FILETIME *fileTime, SYSTEMTIME *systemTime);
|
||||
// VOID WINAPI GetSystemTimeAsFileTime(FILETIME *systemTimeAsFileTime);
|
||||
|
||||
DWORD GetTickCount();
|
||||
|
||||
|
||||
/*
|
||||
#define CREATE_NEW 1
|
||||
#define CREATE_ALWAYS 2
|
||||
#define OPEN_EXISTING 3
|
||||
#define OPEN_ALWAYS 4
|
||||
#define TRUNCATE_EXISTING 5
|
||||
*/
|
||||
|
||||
#endif // _WIN32
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user