You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.6 KiB
78 lines
1.6 KiB
/////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) 1998 Microsoft Corporation
|
|
//
|
|
// Module Name:
|
|
// DllBase.h
|
|
//
|
|
// Abstract:
|
|
// Dynamic Loadable Library (DLL) wrapper class.
|
|
//
|
|
// Implementation File:
|
|
// DllBase.cpp
|
|
//
|
|
// Author:
|
|
// Galen Barbee (galenb) February 11, 1998
|
|
//
|
|
// Revision History:
|
|
//
|
|
// Notes:
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _DLLBASE_H_
|
|
#define _DLLBASE_H_
|
|
|
|
class CDynamicLibraryBase
|
|
{
|
|
public:
|
|
CDynamicLibraryBase()
|
|
{
|
|
m_lpszLibraryName = NULL;
|
|
m_lpszFunctionName = NULL;
|
|
m_hLibrary = NULL;
|
|
m_pfFunction = NULL;
|
|
}
|
|
virtual ~CDynamicLibraryBase()
|
|
{
|
|
if (m_hLibrary != NULL)
|
|
{
|
|
::FreeLibrary(m_hLibrary);
|
|
m_hLibrary = NULL;
|
|
}
|
|
}
|
|
BOOL Load()
|
|
{
|
|
if (m_hLibrary != NULL)
|
|
return TRUE; // already loaded
|
|
|
|
ASSERT(m_lpszLibraryName != NULL);
|
|
m_hLibrary = ::LoadLibrary(m_lpszLibraryName);
|
|
if (NULL == m_hLibrary)
|
|
{
|
|
// The library is not present
|
|
return FALSE;
|
|
}
|
|
ASSERT(m_lpszFunctionName != NULL);
|
|
ASSERT(m_pfFunction == NULL);
|
|
m_pfFunction = ::GetProcAddress(m_hLibrary, m_lpszFunctionName );
|
|
if ( NULL == m_pfFunction )
|
|
{
|
|
// The library is present but does not have the entry point
|
|
::FreeLibrary( m_hLibrary );
|
|
m_hLibrary = NULL;
|
|
return FALSE;
|
|
}
|
|
ASSERT(m_hLibrary != NULL);
|
|
ASSERT(m_pfFunction != NULL);
|
|
return TRUE;
|
|
}
|
|
|
|
protected:
|
|
LPCSTR m_lpszFunctionName;
|
|
LPCTSTR m_lpszLibraryName;
|
|
FARPROC m_pfFunction;
|
|
HMODULE m_hLibrary;
|
|
};
|
|
|
|
#endif //_DLLBASE_H_
|