OW_DLLSharedLibraryLoader.cpp

Go to the documentation of this file.
00001 /*******************************************************************************
00002 * Copyright (C) 2001-2004 Vintela, Inc. All rights reserved.
00003 *
00004 * Redistribution and use in source and binary forms, with or without
00005 * modification, are permitted provided that the following conditions are met:
00006 *
00007 *  - Redistributions of source code must retain the above copyright notice,
00008 *    this list of conditions and the following disclaimer.
00009 *
00010 *  - Redistributions in binary form must reproduce the above copyright notice,
00011 *    this list of conditions and the following disclaimer in the documentation
00012 *    and/or other materials provided with the distribution.
00013 *
00014 *  - Neither the name of Vintela, Inc. nor the names of its
00015 *    contributors may be used to endorse or promote products derived from this
00016 *    software without specific prior written permission.
00017 *
00018 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
00019 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00020 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00021 * ARE DISCLAIMED. IN NO EVENT SHALL Vintela, Inc. OR THE CONTRIBUTORS
00022 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00023 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00024 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00025 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00026 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00027 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00028 * POSSIBILITY OF SUCH DAMAGE.
00029 *******************************************************************************/
00030 
00036 #include "OW_config.h"
00037 
00038 #if defined(OW_USE_DLL)
00039 #include "OW_DLLSharedLibraryLoader.hpp"
00040 #include "OW_DLLSharedLibrary.hpp"
00041 #include "OW_Format.hpp"
00042 #include "OW_System.hpp"
00043 
00044 namespace OW_NAMESPACE
00045 {
00046 
00048 DLLSharedLibraryLoader::DLLSharedLibraryLoader()
00049 {
00050    ::SetCurrentDirectory(OW_DEFAULT_LIB_DIR);
00051 }
00052 
00054 SharedLibraryRef
00055 DLLSharedLibraryLoader::loadSharedLibrary(const String& filename,
00056    const LoggerRef& logger) const
00057 {
00058    if( filename.endsWith("libopenwbem.dll") )
00059    {
00060       return SharedLibraryRef(0);
00061    }
00062 
00063    HINSTANCE libhandle = ::LoadLibrary(filename.c_str());
00064    if (libhandle)
00065    {
00066       return SharedLibraryRef(new DLLSharedLibrary(libhandle,
00067          filename));
00068    }
00069 
00070    OW_LOG_ERROR(logger, Format("DLLSharedLibraryLoader::loadSharedLibrary "
00071       "LoadLibrary returned NULL.  Error is: %1",
00072       System::lastErrorMsg()).c_str());
00073       
00074    return SharedLibraryRef(0);
00075 }
00076 
00078 SharedLibraryLoaderRef
00079 SharedLibraryLoader::createSharedLibraryLoader()
00080 {
00081    return SharedLibraryLoaderRef(new DLLSharedLibraryLoader);
00082 }
00084 DLLSharedLibraryLoader::~DLLSharedLibraryLoader()
00085 {
00086 }
00087 
00088 } // end namespace OW_NAMESPACE
00089 
00090 #endif // OW_USE_DLL

Generated on Thu Feb 9 08:47:58 2006 for openwbem by  doxygen 1.4.6