native_library_win.cc revision 3345a6884c488ff3a535c2c9acdd33d74b37e311
1// Copyright (c) 2009 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "base/native_library.h" 6 7#include <windows.h> 8 9#include "base/file_util.h" 10#include "base/utf_string_conversions.h" 11 12namespace base { 13 14// static 15NativeLibrary LoadNativeLibrary(const FilePath& library_path) { 16 // Switch the current directory to the library directory as the library 17 // may have dependencies on DLLs in this directory. 18 bool restore_directory = false; 19 FilePath current_directory; 20 if (file_util::GetCurrentDirectory(¤t_directory)) { 21 FilePath plugin_path = library_path.DirName(); 22 if (!plugin_path.empty()) { 23 file_util::SetCurrentDirectory(plugin_path); 24 restore_directory = true; 25 } 26 } 27 28 HMODULE module = LoadLibrary(library_path.value().c_str()); 29 if (restore_directory) 30 file_util::SetCurrentDirectory(current_directory); 31 32 return module; 33} 34 35// static 36void UnloadNativeLibrary(NativeLibrary library) { 37 FreeLibrary(library); 38} 39 40// static 41void* GetFunctionPointerFromNativeLibrary(NativeLibrary library, 42 const char* name) { 43 return GetProcAddress(library, name); 44} 45 46// static 47string16 GetNativeLibraryName(const string16& name) { 48 return name + ASCIIToUTF16(".dll"); 49} 50 51} // namespace base 52