Leaked source code of windows server 2003
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

/////////////////////////////////////////////////////////////////////////////
//
// 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_