summaryrefslogtreecommitdiffstats
path: root/base/file_version_info.h
diff options
context:
space:
mode:
authorrvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-22 23:55:45 +0000
committerrvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-22 23:55:45 +0000
commit70910be7c6ef2377240bd3a32d1dcabc31ad0dd3 (patch)
treec8d7b8db9b973596e3cfe453900cd306d30da3fe /base/file_version_info.h
parent6b98e52b28fa37b71d4dd80556e936277a85dbc6 (diff)
downloadchromium_src-70910be7c6ef2377240bd3a32d1dcabc31ad0dd3.zip
chromium_src-70910be7c6ef2377240bd3a32d1dcabc31ad0dd3.tar.gz
chromium_src-70910be7c6ef2377240bd3a32d1dcabc31ad0dd3.tar.bz2
Base: Fix FileVersionInfo::CreateFileVersionInfoForCurrentModule so that
when base is built as a dll, the module that is inspected for the version info is the one that makes the call instead of base.dll BUG=76996 TEST=none Review URL: http://codereview.chromium.org/6897016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82754 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/file_version_info.h')
-rw-r--r--base/file_version_info.h31
1 files changed, 28 insertions, 3 deletions
diff --git a/base/file_version_info.h b/base/file_version_info.h
index dca4148..8769a14 100644
--- a/base/file_version_info.h
+++ b/base/file_version_info.h
@@ -6,11 +6,18 @@
#define BASE_FILE_VERSION_INFO_H__
#pragma once
+#include "build/build_config.h"
+
+#if defined(OS_WIN)
+#include <windows.h>
+// http://blogs.msdn.com/oldnewthing/archive/2004/10/25/247180.aspx
+extern "C" IMAGE_DOS_HEADER __ImageBase;
+#endif // OS_WIN
+
#include <string>
#include "base/base_api.h"
#include "base/string16.h"
-#include "build/build_config.h"
class FilePath;
@@ -24,19 +31,37 @@ class FilePath;
// version returns values from the Info.plist as appropriate. TODO(avi): make
// this a less-obvious Windows-ism.
-class BASE_API FileVersionInfo {
+class FileVersionInfo {
public:
virtual ~FileVersionInfo() {}
#if defined(OS_WIN) || defined(OS_MACOSX)
// Creates a FileVersionInfo for the specified path. Returns NULL if something
// goes wrong (typically the file does not exit or cannot be opened). The
// returned object should be deleted when you are done with it.
- static FileVersionInfo* CreateFileVersionInfo(const FilePath& file_path);
+ BASE_API static FileVersionInfo* CreateFileVersionInfo(
+ const FilePath& file_path);
#endif // OS_WIN || OS_MACOSX
+#if defined(OS_WIN)
+ // Creates a FileVersionInfo for the specified module. Returns NULL in case
+ // of error. The returned object should be deleted when you are done with it.
+ BASE_API static FileVersionInfo* CreateFileVersionInfoForModule(
+ HMODULE module);
+
+ // Creates a FileVersionInfo for the current module. Returns NULL in case
+ // of error. The returned object should be deleted when you are done with it.
+ // This function should be inlined so that the "current module" is evaluated
+ // correctly, instead of being the module that contains base.
+ __forceinline static FileVersionInfo*
+ CreateFileVersionInfoForCurrentModule() {
+ HMODULE module = reinterpret_cast<HMODULE>(&__ImageBase);
+ return CreateFileVersionInfoForModule(module);
+ }
+#else
// Creates a FileVersionInfo for the current module. Returns NULL in case
// of error. The returned object should be deleted when you are done with it.
static FileVersionInfo* CreateFileVersionInfoForCurrentModule();
+#endif // OS_WIN
// Accessors to the different version properties.
// Returns an empty string if the property is not found.