1// DLLExports2.cpp 2 3#include "StdAfx.h" 4 5#include "../../Common/MyInitGuid.h" 6 7#if defined(_7ZIP_LARGE_PAGES) 8#include "../../../C/Alloc.h" 9#endif 10 11#include "../../Common/ComTry.h" 12 13#include "../../Windows/NtCheck.h" 14#include "../../Windows/PropVariant.h" 15 16#include "../ICoder.h" 17#include "../IPassword.h" 18 19#include "IArchive.h" 20 21HINSTANCE g_hInstance; 22 23#define NT_CHECK_FAIL_ACTION return FALSE; 24 25extern "C" 26BOOL WINAPI DllMain( 27 #ifdef UNDER_CE 28 HANDLE 29 #else 30 HINSTANCE 31 #endif 32 hInstance, DWORD dwReason, LPVOID /*lpReserved*/) 33{ 34 if (dwReason == DLL_PROCESS_ATTACH) 35 { 36 g_hInstance = (HINSTANCE)hInstance; 37 NT_CHECK; 38 } 39 return TRUE; 40} 41 42DEFINE_GUID(CLSID_CArchiveHandler, 430x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00); 44 45static const UInt16 kDecodeId = 0x2790; 46 47DEFINE_GUID(CLSID_CCodec, 480x23170F69, 0x40C1, kDecodeId, 0, 0, 0, 0, 0, 0, 0, 0); 49 50STDAPI CreateCoder(const GUID *clsid, const GUID *iid, void **outObject); 51STDAPI CreateHasher(const GUID *clsid, IHasher **hasher); 52STDAPI CreateArchiver(const GUID *classID, const GUID *iid, void **outObject); 53 54STDAPI CreateObject(const GUID *clsid, const GUID *iid, void **outObject) 55{ 56 // COM_TRY_BEGIN 57 *outObject = 0; 58 if (*iid == IID_ICompressCoder || 59 *iid == IID_ICompressCoder2 || 60 *iid == IID_ICompressFilter) 61 return CreateCoder(clsid, iid, outObject); 62 if (*iid == IID_IHasher) 63 return CreateHasher(clsid, (IHasher **)outObject); 64 return CreateArchiver(clsid, iid, outObject); 65 // COM_TRY_END 66} 67 68STDAPI SetLargePageMode() 69{ 70 #if defined(_7ZIP_LARGE_PAGES) 71 SetLargePageSize(); 72 #endif 73 return S_OK; 74} 75 76extern bool g_CaseSensitive; 77 78STDAPI SetCaseSensitive(Int32 caseSensitive) 79{ 80 g_CaseSensitive = (caseSensitive != 0); 81 return S_OK; 82} 83