// DLLExports.cpp | |
#include "StdAfx.h" | |
#include "../../Common/MyInitGuid.h" | |
#if defined(_WIN32) && defined(_7ZIP_LARGE_PAGES) | |
#include "../../../C/Alloc.h" | |
#endif | |
#include "../../Common/ComTry.h" | |
#include "../../Windows/NtCheck.h" | |
#include "../../Windows/PropVariant.h" | |
#include "../ICoder.h" | |
#include "../IPassword.h" | |
#include "IArchive.h" | |
HINSTANCE g_hInstance; | |
#define NT_CHECK_FAIL_ACTION return FALSE; | |
extern "C" | |
BOOL WINAPI DllMain( | |
#ifdef UNDER_CE | |
HANDLE | |
#else | |
HINSTANCE | |
#endif | |
hInstance, DWORD dwReason, LPVOID /*lpReserved*/) | |
{ | |
if (dwReason == DLL_PROCESS_ATTACH) | |
{ | |
g_hInstance = (HINSTANCE)hInstance; | |
NT_CHECK; | |
} | |
return TRUE; | |
} | |
DEFINE_GUID(CLSID_CArchiveHandler, | |
0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00); | |
static const UInt16 kDecodeId = 0x2790; | |
DEFINE_GUID(CLSID_CCodec, | |
0x23170F69, 0x40C1, kDecodeId, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); | |
STDAPI CreateCoder(const GUID *clsid, const GUID *iid, void **outObject); | |
STDAPI CreateArchiver(const GUID *classID, const GUID *iid, void **outObject); | |
STDAPI CreateObject(const GUID *clsid, const GUID *iid, void **outObject) | |
{ | |
// COM_TRY_BEGIN | |
*outObject = 0; | |
if (*iid == IID_ICompressCoder || *iid == IID_ICompressCoder2 || *iid == IID_ICompressFilter) | |
{ | |
return CreateCoder(clsid, iid, outObject); | |
} | |
else | |
{ | |
return CreateArchiver(clsid, iid, outObject); | |
} | |
// COM_TRY_END | |
} | |
STDAPI SetLargePageMode() | |
{ | |
#if defined(_WIN32) && defined(_7ZIP_LARGE_PAGES) | |
SetLargePageSize(); | |
#endif | |
return S_OK; | |
} |