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