summaryrefslogtreecommitdiff
path: root/shared/dll_loader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'shared/dll_loader.cpp')
-rw-r--r--shared/dll_loader.cpp83
1 files changed, 0 insertions, 83 deletions
diff --git a/shared/dll_loader.cpp b/shared/dll_loader.cpp
deleted file mode 100644
index 4e2c0e65..00000000
--- a/shared/dll_loader.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-// **************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *
-// * Copyright (C) 2008-2011 ZenJu (zhnmju123 AT gmx.de) *
-// **************************************************************************
-
-#include "dll_loader.h"
-#include <map>
-
-namespace
-{
-class DllHandler
-{
-public:
- static DllHandler& getInstance()
- {
- static DllHandler instance;
- return instance;
- }
-
- HMODULE getHandle(const std::wstring& libraryName)
- {
- if (libraryName.empty())
- return ::GetModuleHandle(NULL); //return handle to calling executable
-
- HandleMap::const_iterator iter = handles.find(libraryName);
- if (iter != handles.end())
- return iter->second;
-
- HMODULE newHandle = ::LoadLibrary(libraryName.c_str());
- if (newHandle != NULL)
- handles.insert(std::make_pair(libraryName, newHandle));
-
- return newHandle;
- }
-
-private:
- DllHandler() {}
- DllHandler(const DllHandler&);
- DllHandler& operator=(const DllHandler&);
-
- ~DllHandler()
- {
- for (HandleMap::const_iterator i = handles.begin(); i != handles.end(); ++i)
- ::FreeLibrary(i->second);
- }
-
- typedef std::map<std::wstring, HMODULE> HandleMap;
- HandleMap handles; //only valid handles here!
-};
-}
-
-
-FARPROC util::loadSymbol(const std::wstring& libraryName, const std::string& functionName)
-{
- const HMODULE libHandle = DllHandler::getInstance().getHandle(libraryName);
- return libHandle != NULL ? ::GetProcAddress(libHandle, functionName.c_str()) : NULL;
-}
-
-
-std::string util::getResourceStream(const std::wstring& libraryName, size_t resourceId)
-{
- std::string output;
- const HMODULE module = DllHandler::getInstance().getHandle(libraryName);
- if (module)
- {
- const HRSRC res = ::FindResource(module, MAKEINTRESOURCE(resourceId), RT_RCDATA);
- if (res != NULL)
- {
- const HGLOBAL resHandle = ::LoadResource(module, res);
- if (resHandle != NULL)
- {
- const char* stream = static_cast<const char*>(::LockResource(resHandle));
- if (stream)
- {
- const DWORD streamSize = ::SizeofResource(module, res);
- output.assign(stream, streamSize);
- }
- }
- }
- }
- return output;
-}
bgstack15