Реферат: Реализация отложенной загрузки библиотек на С
}
static BOOL Free(HMODULE hModule)
{
return ::FreeLibrary(hModule);
}
};
struct CModuleGetModuleHandlePolicy
{
static HMODULE Load(LPCTSTR szFileName)
{
return ::GetModuleHandle(szFileName);
}
static BOOL Free(HMODULE hModule)
{
return TRUE;
}
};
template <class Name, class LoadPolicy = CModuleLoadLibraryPolicy>
class CModule
{
public:
typedef CModule<Name, LoadPolicy> type;
typedef Name name_type;
static type &GetModule()
{
#ifdef DL_MT
static volatile LONG lMutex = FALSE;
CLWMutex theMutex(lMutex);
CAutoLock<CLWMutex> autoLock(theMutex);