xref: /aosp_15_r20/external/lzma/CPP/7zip/Archive/DllExports.cpp (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1 // DLLExports.cpp
2 
3 #include "StdAfx.h"
4 
5 #if defined(Z7_LARGE_PAGES)
6 #include "../../../C/Alloc.h"
7 #endif
8 
9 #include "../../Common/MyWindows.h"
10 #include "../../Common/MyInitGuid.h"
11 
12 #include "../../Common/ComTry.h"
13 
14 #include "../../Windows/NtCheck.h"
15 #include "../../Windows/PropVariant.h"
16 
17 #include "../ICoder.h"
18 #include "../IPassword.h"
19 
20 #include "../Common/CreateCoder.h"
21 
22 #include "IArchive.h"
23 
24 static
25 HINSTANCE g_hInstance;
26 
27 #define NT_CHECK_FAIL_ACTION return FALSE;
28 
29 extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/);
DllMain(HINSTANCE hInstance,DWORD dwReason,LPVOID)30 extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
31 {
32   if (dwReason == DLL_PROCESS_ATTACH)
33   {
34     g_hInstance = hInstance;
35     NT_CHECK
36   }
37   return TRUE;
38 }
39 
40 Z7_DEFINE_GUID(CLSID_CArchiveHandler,
41     k_7zip_GUID_Data1,
42     k_7zip_GUID_Data2,
43     k_7zip_GUID_Data3_Common,
44     0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00);
45 
46 STDAPI CreateArchiver(const GUID *classID, const GUID *iid, void **outObject);
47 
CreateObject(const GUID * clsid,const GUID * iid,void ** outObject)48 STDAPI CreateObject(const GUID *clsid, const GUID *iid, void **outObject)
49 {
50   return CreateArchiver(clsid, iid, outObject);
51 }
52 
SetLargePageMode()53 STDAPI SetLargePageMode()
54 {
55   #if defined(Z7_LARGE_PAGES)
56   SetLargePageSize();
57   #endif
58   return S_OK;
59 }
60 
61 extern bool g_CaseSensitive;
62 
SetCaseSensitive(Int32 caseSensitive)63 STDAPI SetCaseSensitive(Int32 caseSensitive)
64 {
65   g_CaseSensitive = (caseSensitive != 0);
66   return S_OK;
67 }
68 
69 #ifdef Z7_EXTERNAL_CODECS
70 
71 CExternalCodecs g_ExternalCodecs;
72 
SetCodecs(ICompressCodecsInfo * compressCodecsInfo)73 STDAPI SetCodecs(ICompressCodecsInfo *compressCodecsInfo)
74 {
75   COM_TRY_BEGIN
76 
77   // OutputDebugStringA(compressCodecsInfo ? "SetCodecs" : "SetCodecs NULL");
78   if (compressCodecsInfo)
79   {
80     g_ExternalCodecs.GetCodecs = compressCodecsInfo;
81     return g_ExternalCodecs.Load();
82   }
83   g_ExternalCodecs.ClearAndRelease();
84   return S_OK;
85 
86   COM_TRY_END
87 }
88 
89 #else
90 
SetCodecs(ICompressCodecsInfo *)91 STDAPI SetCodecs(ICompressCodecsInfo *)
92 {
93   return S_OK;
94 }
95 
96 #endif
97