1*f6dc9357SAndroid Build Coastguard Worker // DLLExports2.cpp
2*f6dc9357SAndroid Build Coastguard Worker
3*f6dc9357SAndroid Build Coastguard Worker #include "StdAfx.h"
4*f6dc9357SAndroid Build Coastguard Worker
5*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MyWindows.h"
6*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MyInitGuid.h"
7*f6dc9357SAndroid Build Coastguard Worker
8*f6dc9357SAndroid Build Coastguard Worker #if defined(Z7_LARGE_PAGES)
9*f6dc9357SAndroid Build Coastguard Worker #include "../../../C/Alloc.h"
10*f6dc9357SAndroid Build Coastguard Worker #endif
11*f6dc9357SAndroid Build Coastguard Worker
12*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/ComTry.h"
13*f6dc9357SAndroid Build Coastguard Worker
14*f6dc9357SAndroid Build Coastguard Worker #include "../../Windows/NtCheck.h"
15*f6dc9357SAndroid Build Coastguard Worker #include "../../Windows/PropVariant.h"
16*f6dc9357SAndroid Build Coastguard Worker
17*f6dc9357SAndroid Build Coastguard Worker #include "../ICoder.h"
18*f6dc9357SAndroid Build Coastguard Worker #include "../IPassword.h"
19*f6dc9357SAndroid Build Coastguard Worker
20*f6dc9357SAndroid Build Coastguard Worker #include "../Common/CreateCoder.h"
21*f6dc9357SAndroid Build Coastguard Worker
22*f6dc9357SAndroid Build Coastguard Worker #include "IArchive.h"
23*f6dc9357SAndroid Build Coastguard Worker
24*f6dc9357SAndroid Build Coastguard Worker
25*f6dc9357SAndroid Build Coastguard Worker #ifdef _WIN32
26*f6dc9357SAndroid Build Coastguard Worker
27*f6dc9357SAndroid Build Coastguard Worker #if defined(_UNICODE) && !defined(_WIN64) && !defined(UNDER_CE)
28*f6dc9357SAndroid Build Coastguard Worker #define NT_CHECK_FAIL_ACTION return FALSE;
29*f6dc9357SAndroid Build Coastguard Worker #endif
30*f6dc9357SAndroid Build Coastguard Worker
31*f6dc9357SAndroid Build Coastguard Worker static
32*f6dc9357SAndroid Build Coastguard Worker HINSTANCE g_hInstance;
33*f6dc9357SAndroid Build Coastguard Worker
34*f6dc9357SAndroid Build Coastguard Worker extern "C"
35*f6dc9357SAndroid Build Coastguard Worker BOOL WINAPI DllMain(
36*f6dc9357SAndroid Build Coastguard Worker #ifdef UNDER_CE
37*f6dc9357SAndroid Build Coastguard Worker HANDLE
38*f6dc9357SAndroid Build Coastguard Worker #else
39*f6dc9357SAndroid Build Coastguard Worker HINSTANCE
40*f6dc9357SAndroid Build Coastguard Worker #endif
41*f6dc9357SAndroid Build Coastguard Worker hInstance, DWORD dwReason, LPVOID /*lpReserved*/);
42*f6dc9357SAndroid Build Coastguard Worker
43*f6dc9357SAndroid Build Coastguard Worker extern "C"
DllMain(HANDLE hInstance,DWORD dwReason,LPVOID)44*f6dc9357SAndroid Build Coastguard Worker BOOL WINAPI DllMain(
45*f6dc9357SAndroid Build Coastguard Worker #ifdef UNDER_CE
46*f6dc9357SAndroid Build Coastguard Worker HANDLE
47*f6dc9357SAndroid Build Coastguard Worker #else
48*f6dc9357SAndroid Build Coastguard Worker HINSTANCE
49*f6dc9357SAndroid Build Coastguard Worker #endif
50*f6dc9357SAndroid Build Coastguard Worker hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
51*f6dc9357SAndroid Build Coastguard Worker {
52*f6dc9357SAndroid Build Coastguard Worker if (dwReason == DLL_PROCESS_ATTACH)
53*f6dc9357SAndroid Build Coastguard Worker {
54*f6dc9357SAndroid Build Coastguard Worker // OutputDebugStringA("7z.dll DLL_PROCESS_ATTACH");
55*f6dc9357SAndroid Build Coastguard Worker g_hInstance = (HINSTANCE)hInstance;
56*f6dc9357SAndroid Build Coastguard Worker NT_CHECK
57*f6dc9357SAndroid Build Coastguard Worker }
58*f6dc9357SAndroid Build Coastguard Worker /*
59*f6dc9357SAndroid Build Coastguard Worker if (dwReason == DLL_PROCESS_DETACH)
60*f6dc9357SAndroid Build Coastguard Worker {
61*f6dc9357SAndroid Build Coastguard Worker OutputDebugStringA("7z.dll DLL_PROCESS_DETACH");
62*f6dc9357SAndroid Build Coastguard Worker }
63*f6dc9357SAndroid Build Coastguard Worker */
64*f6dc9357SAndroid Build Coastguard Worker return TRUE;
65*f6dc9357SAndroid Build Coastguard Worker }
66*f6dc9357SAndroid Build Coastguard Worker
67*f6dc9357SAndroid Build Coastguard Worker #else // _WIN32
68*f6dc9357SAndroid Build Coastguard Worker
69*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/StringConvert.h"
70*f6dc9357SAndroid Build Coastguard Worker // #include <stdio.h>
71*f6dc9357SAndroid Build Coastguard Worker
72*f6dc9357SAndroid Build Coastguard Worker // STDAPI LibStartup();
73*f6dc9357SAndroid Build Coastguard Worker static __attribute__((constructor)) void Init_ForceToUTF8();
Init_ForceToUTF8()74*f6dc9357SAndroid Build Coastguard Worker static __attribute__((constructor)) void Init_ForceToUTF8()
75*f6dc9357SAndroid Build Coastguard Worker {
76*f6dc9357SAndroid Build Coastguard Worker g_ForceToUTF8 = IsNativeUTF8();
77*f6dc9357SAndroid Build Coastguard Worker // printf("\nDLLExports2.cpp::Init_ForceToUTF8 =%d\n", g_ForceToUTF8 ? 1 : 0);
78*f6dc9357SAndroid Build Coastguard Worker }
79*f6dc9357SAndroid Build Coastguard Worker
80*f6dc9357SAndroid Build Coastguard Worker #endif // _WIN32
81*f6dc9357SAndroid Build Coastguard Worker
82*f6dc9357SAndroid Build Coastguard Worker
83*f6dc9357SAndroid Build Coastguard Worker Z7_DEFINE_GUID(CLSID_CArchiveHandler,
84*f6dc9357SAndroid Build Coastguard Worker k_7zip_GUID_Data1,
85*f6dc9357SAndroid Build Coastguard Worker k_7zip_GUID_Data2,
86*f6dc9357SAndroid Build Coastguard Worker k_7zip_GUID_Data3_Common,
87*f6dc9357SAndroid Build Coastguard Worker 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00);
88*f6dc9357SAndroid Build Coastguard Worker
89*f6dc9357SAndroid Build Coastguard Worker STDAPI CreateCoder(const GUID *clsid, const GUID *iid, void **outObject);
90*f6dc9357SAndroid Build Coastguard Worker STDAPI CreateHasher(const GUID *clsid, IHasher **hasher);
91*f6dc9357SAndroid Build Coastguard Worker STDAPI CreateArchiver(const GUID *clsid, const GUID *iid, void **outObject);
92*f6dc9357SAndroid Build Coastguard Worker
93*f6dc9357SAndroid Build Coastguard Worker STDAPI CreateObject(const GUID *clsid, const GUID *iid, void **outObject);
CreateObject(const GUID * clsid,const GUID * iid,void ** outObject)94*f6dc9357SAndroid Build Coastguard Worker STDAPI CreateObject(const GUID *clsid, const GUID *iid, void **outObject)
95*f6dc9357SAndroid Build Coastguard Worker {
96*f6dc9357SAndroid Build Coastguard Worker // COM_TRY_BEGIN
97*f6dc9357SAndroid Build Coastguard Worker *outObject = NULL;
98*f6dc9357SAndroid Build Coastguard Worker if (*iid == IID_ICompressCoder ||
99*f6dc9357SAndroid Build Coastguard Worker *iid == IID_ICompressCoder2 ||
100*f6dc9357SAndroid Build Coastguard Worker *iid == IID_ICompressFilter)
101*f6dc9357SAndroid Build Coastguard Worker return CreateCoder(clsid, iid, outObject);
102*f6dc9357SAndroid Build Coastguard Worker if (*iid == IID_IHasher)
103*f6dc9357SAndroid Build Coastguard Worker return CreateHasher(clsid, (IHasher **)outObject);
104*f6dc9357SAndroid Build Coastguard Worker return CreateArchiver(clsid, iid, outObject);
105*f6dc9357SAndroid Build Coastguard Worker // COM_TRY_END
106*f6dc9357SAndroid Build Coastguard Worker }
107*f6dc9357SAndroid Build Coastguard Worker
108*f6dc9357SAndroid Build Coastguard Worker STDAPI SetLargePageMode();
SetLargePageMode()109*f6dc9357SAndroid Build Coastguard Worker STDAPI SetLargePageMode()
110*f6dc9357SAndroid Build Coastguard Worker {
111*f6dc9357SAndroid Build Coastguard Worker #if defined(Z7_LARGE_PAGES)
112*f6dc9357SAndroid Build Coastguard Worker #ifdef _WIN32
113*f6dc9357SAndroid Build Coastguard Worker SetLargePageSize();
114*f6dc9357SAndroid Build Coastguard Worker #endif
115*f6dc9357SAndroid Build Coastguard Worker #endif
116*f6dc9357SAndroid Build Coastguard Worker return S_OK;
117*f6dc9357SAndroid Build Coastguard Worker }
118*f6dc9357SAndroid Build Coastguard Worker
119*f6dc9357SAndroid Build Coastguard Worker extern bool g_CaseSensitive;
120*f6dc9357SAndroid Build Coastguard Worker
121*f6dc9357SAndroid Build Coastguard Worker STDAPI SetCaseSensitive(Int32 caseSensitive);
SetCaseSensitive(Int32 caseSensitive)122*f6dc9357SAndroid Build Coastguard Worker STDAPI SetCaseSensitive(Int32 caseSensitive)
123*f6dc9357SAndroid Build Coastguard Worker {
124*f6dc9357SAndroid Build Coastguard Worker g_CaseSensitive = (caseSensitive != 0);
125*f6dc9357SAndroid Build Coastguard Worker return S_OK;
126*f6dc9357SAndroid Build Coastguard Worker }
127*f6dc9357SAndroid Build Coastguard Worker
128*f6dc9357SAndroid Build Coastguard Worker /*
129*f6dc9357SAndroid Build Coastguard Worker UInt32 g_ClientVersion;
130*f6dc9357SAndroid Build Coastguard Worker STDAPI SetClientVersion(UInt32 version);
131*f6dc9357SAndroid Build Coastguard Worker STDAPI SetClientVersion(UInt32 version)
132*f6dc9357SAndroid Build Coastguard Worker {
133*f6dc9357SAndroid Build Coastguard Worker g_ClientVersion = version;
134*f6dc9357SAndroid Build Coastguard Worker return S_OK;
135*f6dc9357SAndroid Build Coastguard Worker }
136*f6dc9357SAndroid Build Coastguard Worker */
137*f6dc9357SAndroid Build Coastguard Worker
138*f6dc9357SAndroid Build Coastguard Worker /*
139*f6dc9357SAndroid Build Coastguard Worker STDAPI SetProperty(Int32 id, const PROPVARIANT *value);
140*f6dc9357SAndroid Build Coastguard Worker STDAPI SetProperty(Int32 id, const PROPVARIANT *value)
141*f6dc9357SAndroid Build Coastguard Worker {
142*f6dc9357SAndroid Build Coastguard Worker return S_OK;
143*f6dc9357SAndroid Build Coastguard Worker }
144*f6dc9357SAndroid Build Coastguard Worker */
145*f6dc9357SAndroid Build Coastguard Worker
146*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_EXTERNAL_CODECS
147*f6dc9357SAndroid Build Coastguard Worker
148*f6dc9357SAndroid Build Coastguard Worker CExternalCodecs g_ExternalCodecs;
149*f6dc9357SAndroid Build Coastguard Worker
150*f6dc9357SAndroid Build Coastguard Worker STDAPI SetCodecs(ICompressCodecsInfo *compressCodecsInfo);
SetCodecs(ICompressCodecsInfo * compressCodecsInfo)151*f6dc9357SAndroid Build Coastguard Worker STDAPI SetCodecs(ICompressCodecsInfo *compressCodecsInfo)
152*f6dc9357SAndroid Build Coastguard Worker {
153*f6dc9357SAndroid Build Coastguard Worker COM_TRY_BEGIN
154*f6dc9357SAndroid Build Coastguard Worker
155*f6dc9357SAndroid Build Coastguard Worker // OutputDebugStringA(compressCodecsInfo ? "SetCodecs" : "SetCodecs NULL");
156*f6dc9357SAndroid Build Coastguard Worker if (compressCodecsInfo)
157*f6dc9357SAndroid Build Coastguard Worker {
158*f6dc9357SAndroid Build Coastguard Worker g_ExternalCodecs.GetCodecs = compressCodecsInfo;
159*f6dc9357SAndroid Build Coastguard Worker return g_ExternalCodecs.Load();
160*f6dc9357SAndroid Build Coastguard Worker }
161*f6dc9357SAndroid Build Coastguard Worker g_ExternalCodecs.ClearAndRelease();
162*f6dc9357SAndroid Build Coastguard Worker return S_OK;
163*f6dc9357SAndroid Build Coastguard Worker
164*f6dc9357SAndroid Build Coastguard Worker COM_TRY_END
165*f6dc9357SAndroid Build Coastguard Worker }
166*f6dc9357SAndroid Build Coastguard Worker
167*f6dc9357SAndroid Build Coastguard Worker #else
168*f6dc9357SAndroid Build Coastguard Worker
169*f6dc9357SAndroid Build Coastguard Worker STDAPI SetCodecs(ICompressCodecsInfo *);
SetCodecs(ICompressCodecsInfo *)170*f6dc9357SAndroid Build Coastguard Worker STDAPI SetCodecs(ICompressCodecsInfo *)
171*f6dc9357SAndroid Build Coastguard Worker {
172*f6dc9357SAndroid Build Coastguard Worker return S_OK;
173*f6dc9357SAndroid Build Coastguard Worker }
174*f6dc9357SAndroid Build Coastguard Worker
175*f6dc9357SAndroid Build Coastguard Worker #endif
176