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