summaryrefslogtreecommitdiff
path: root/shared/ShadowCopy/shadow.h
diff options
context:
space:
mode:
Diffstat (limited to 'shared/ShadowCopy/shadow.h')
-rw-r--r--shared/ShadowCopy/shadow.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/shared/ShadowCopy/shadow.h b/shared/ShadowCopy/shadow.h
index b21395da..8721b906 100644
--- a/shared/ShadowCopy/shadow.h
+++ b/shared/ShadowCopy/shadow.h
@@ -13,6 +13,8 @@
#define SHADOWDLL_API extern "C" __declspec(dllimport)
#endif
+#include "../build_info.h"
+
namespace shadow
{
@@ -60,6 +62,43 @@ typedef void (*ReleaseShadowCopyFct)(ShadowHandle handle);
//(use const pointers to ensure internal linkage)
const char createShadowCopyFctName[] = "createShadowCopy";
const char releaseShadowCopyFctName[] = "releaseShadowCopy";
+
+/*---------------
+ |library names|
+ ---------------*/
+namespace impl
+{
+bool newerThanXP()
+{
+ OSVERSIONINFO osvi = {};
+ osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+
+ if (::GetVersionEx(&osvi))
+ return osvi.dwMajorVersion > 5 ||
+ (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion > 1) ;
+ //XP has majorVersion == 5, minorVersion == 1
+ //Server 2003 has majorVersion == 5, minorVersion == 2
+ //version overview: http://msdn.microsoft.com/en-us/library/ms724834(VS.85).aspx
+ return false;
+}
+}
+
+inline
+const wchar_t* getDllName()
+{
+ /*
+ distinguish a bunch of VSS builds: we use XP and Server 2003 implementations...
+ VSS version and compatibility overview: http://msdn.microsoft.com/en-us/library/aa384627(VS.85).aspx
+ */
+ return impl::newerThanXP() ?
+ (util::is64BitBuild ?
+ L"Shadow_Server2003_x64.dll" :
+ L"Shadow_Server2003_Win32.dll") :
+
+ (util::is64BitBuild ?
+ L"Shadow_XP_x64.dll" :
+ L"Shadow_XP_Win32.dll");
+}
}
bgstack15