xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/FileManager/PluginLoader.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1 // PluginLoader.h
2 
3 #ifndef ZIP7_INC_PLUGIN_LOADER_H
4 #define ZIP7_INC_PLUGIN_LOADER_H
5 
6 #include "../../../Windows/DLL.h"
7 
8 #include "IFolder.h"
9 
10 Z7_DIAGNOSTIC_IGNORE_CAST_FUNCTION
11 
12 class CPluginLibrary: public NWindows::NDLL::CLibrary
13 {
14 public:
CreateManager(REFGUID clsID,IFolderManager ** manager)15   HRESULT CreateManager(REFGUID clsID, IFolderManager **manager)
16   {
17     const
18     Func_CreateObject createObject = Z7_GET_PROC_ADDRESS(
19     Func_CreateObject, Get_HMODULE(),
20         "CreateObject");
21     if (!createObject)
22       return GetLastError_noZero_HRESULT();
23     return createObject(&clsID, &IID_IFolderManager, (void **)manager);
24   }
LoadAndCreateManager(CFSTR filePath,REFGUID clsID,IFolderManager ** manager)25   HRESULT LoadAndCreateManager(CFSTR filePath, REFGUID clsID, IFolderManager **manager)
26   {
27     if (!Load(filePath))
28       return GetLastError_noZero_HRESULT();
29     return CreateManager(clsID, manager);
30   }
31 };
32 
33 #endif
34