Imported Upstream version 9.20
[platform/upstream/7zip.git] / CPP / 7zip / Archive / DllExports2.cpp
1 // DLLExports.cpp\r
2 \r
3 #include "StdAfx.h"\r
4 \r
5 #include "../../Common/MyInitGuid.h"\r
6 \r
7 #if defined(_WIN32) && defined(_7ZIP_LARGE_PAGES)\r
8 #include "../../../C/Alloc.h"\r
9 #endif\r
10 \r
11 #include "../../Common/ComTry.h"\r
12 \r
13 #include "../../Windows/NtCheck.h"\r
14 #include "../../Windows/PropVariant.h"\r
15 \r
16 #include "../ICoder.h"\r
17 #include "../IPassword.h"\r
18 \r
19 #include "IArchive.h"\r
20 \r
21 HINSTANCE g_hInstance;\r
22 \r
23 #define NT_CHECK_FAIL_ACTION return FALSE;\r
24 \r
25 extern "C"\r
26 BOOL WINAPI DllMain(\r
27   #ifdef UNDER_CE\r
28   HANDLE\r
29   #else\r
30   HINSTANCE\r
31   #endif\r
32   hInstance, DWORD dwReason, LPVOID /*lpReserved*/)\r
33 {\r
34   if (dwReason == DLL_PROCESS_ATTACH)\r
35   {\r
36     g_hInstance = (HINSTANCE)hInstance;\r
37     NT_CHECK;\r
38   }\r
39   return TRUE;\r
40 }\r
41 \r
42 DEFINE_GUID(CLSID_CArchiveHandler,\r
43 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00);\r
44 \r
45 static const UInt16 kDecodeId = 0x2790;\r
46 \r
47 DEFINE_GUID(CLSID_CCodec,\r
48 0x23170F69, 0x40C1, kDecodeId, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);\r
49 \r
50 STDAPI CreateCoder(const GUID *clsid, const GUID *iid, void **outObject);\r
51 STDAPI CreateArchiver(const GUID *classID, const GUID *iid, void **outObject);\r
52 \r
53 STDAPI CreateObject(const GUID *clsid, const GUID *iid, void **outObject)\r
54 {\r
55   // COM_TRY_BEGIN\r
56   *outObject = 0;\r
57   if (*iid == IID_ICompressCoder || *iid == IID_ICompressCoder2 || *iid == IID_ICompressFilter)\r
58   {\r
59     return CreateCoder(clsid, iid, outObject);\r
60   }\r
61   else\r
62   {\r
63     return CreateArchiver(clsid, iid, outObject);\r
64   }\r
65   // COM_TRY_END\r
66 }\r
67 \r
68 STDAPI SetLargePageMode()\r
69 {\r
70   #if defined(_WIN32) && defined(_7ZIP_LARGE_PAGES)\r
71   SetLargePageSize();\r
72   #endif\r
73   return S_OK;\r
74 }\r