mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-10 04:07:12 -06:00
4.44 beta
This commit is contained in:
committed by
Kornel Lesiński
parent
804edc5756
commit
d9666cf046
38
CPP/7zip/UI/Common/HandlerLoader.h
Executable file
38
CPP/7zip/UI/Common/HandlerLoader.h
Executable file
@@ -0,0 +1,38 @@
|
||||
// HandlerLoader.h
|
||||
|
||||
#ifndef __HANDLERLOADER_H
|
||||
#define __HANDLERLOADER_H
|
||||
|
||||
#include "../../ICoder.h"
|
||||
#include "Windows/DLL.h"
|
||||
|
||||
typedef UInt32 (WINAPI * CreateObjectFunc)(
|
||||
const GUID *clsID,
|
||||
const GUID *interfaceID,
|
||||
void **outObject);
|
||||
|
||||
class CHandlerLoader: public NWindows::NDLL::CLibrary
|
||||
{
|
||||
public:
|
||||
HRESULT CreateHandler(LPCWSTR filepath, REFGUID clsID,
|
||||
void **archive, bool outHandler)
|
||||
{
|
||||
if (!Load(filepath))
|
||||
return GetLastError();
|
||||
CreateObjectFunc createObject = (CreateObjectFunc)
|
||||
GetProcAddress("CreateObject");
|
||||
if (createObject == NULL)
|
||||
{
|
||||
HRESULT res = ::GetLastError();
|
||||
Free();
|
||||
return res;
|
||||
}
|
||||
HRESULT res = createObject(&clsID,
|
||||
outHandler ? &IID_IOutArchive : &IID_IInArchive, (void **)archive);
|
||||
if (res != 0)
|
||||
Free();
|
||||
return res;
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user