/***************************************************************************
                             DllLoader.h
                             -------------------
    Begin                : Fri Oct 12, 2001
    Objective            : Implement an object to load a DLL from a resource
                           and load the exports
    Author               : Drew Hall
    Email                : dhall@Zero-Soft.com
 ***************************************************************************/

#ifndef __DLLLOADER_H__
#define __DLLLOADER_H__


typedef BOOL (__cdecl *STARTLOGGINGFUNC)(HWND, UINT, UINT);
typedef BOOL (__cdecl *STOPLOGGINGFUNC)();

class CDllLoader
{
public:
   CDllLoader();
   ~CDllLoader();

   bool LoadDll(const TCHAR* szTempFileName, const TCHAR* szResourceGroup, int nResourceID);
   
   STARTLOGGINGFUNC StartLogging;
   STOPLOGGINGFUNC StopLogging;

private:
   bool CreateTempFile();
   bool OpenTempFile();
   bool LoadResource(const TCHAR* szResourceGroup, int nResourceID);
   bool WriteDll();
   bool LoadExports();
   
   HMODULE m_hModule;
   HMODULE m_hLibrary;
   HRSRC m_hResource;
   HGLOBAL m_hResData;
   HANDLE m_hTempFile;
   TCHAR m_szFileName[MAX_PATH];
   DWORD m_Size;
};


#endif