root/experimental/NT-based/NTSpecific/LoadLibraryWrapper.hpp

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. Handle

   1 /******************************************************************************
   2 ** $Header: svn+ssh://jmmcg@svn.code.sf.net/p/libjmmcg/code/trunk/libjmmcg/experimental/NT-based/NTSpecific/LoadLibraryWrapper.hpp 2055 2017-05-13 19:35:47Z jmmcg $
   3 **
   4 ** Copyright © 2002 by J.M.McGuiness, coder@hussar.me.uk
   5 **
   6 ** This library is free software; you can redistribute it and/or
   7 ** modify it under the terms of the GNU Lesser General Public
   8 ** License as published by the Free Software Foundation; either
   9 ** version 2.1 of the License, or (at your option) any later version.
  10 **
  11 ** This library is distributed in the hope that it will be useful,
  12 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14 ** Lesser General Public License for more details.
  15 **
  16 ** You should have received a copy of the GNU Lesser General Public
  17 ** License along with this library; if not, write to the Free Software
  18 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  19 */
  20 
  21 #pragma once
  22 
  23 #include "../../../core/non_copyable.hpp"
  24 
  25 
  26 namespace jmmcg { namespace NTUtils {
  27 
  28         const TCHAR scm_lib_name[]=_T("advapi32.dll");
  29 
  30         class LoadLibraryWrapper : protected non_copyable {
  31         public:
  32                 LoadLibraryWrapper(const TCHAR * const lib_name)
  33                 : library_handle(::LoadLibrary(lib_name)) {
  34                         assert(library_handle);
  35                 }
  36                 virtual ~LoadLibraryWrapper(void) {
  37                         ::FreeLibrary(library_handle);
  38                 }
  39 
  40                 const HMODULE &Handle(void) const noexcept(true) {
  41                         return library_handle;
  42                 }
  43 
  44         private:
  45                 const HMODULE library_handle;
  46 
  47                 void operator=(const LoadLibraryWrapper &)=delete;
  48         };
  49 
  50 } }

/* [<][>][^][v][top][bottom][index][help] */