xref: /aosp_15_r20/external/lzma/CPP/7zip/Archive/DllExports2.cpp (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
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