summaryrefslogtreecommitdiff
path: root/lib/ShadowCopy/shadow.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ShadowCopy/shadow.h')
-rw-r--r--lib/ShadowCopy/shadow.h68
1 files changed, 37 insertions, 31 deletions
diff --git a/lib/ShadowCopy/shadow.h b/lib/ShadowCopy/shadow.h
index 0dfd39a9..68b7141f 100644
--- a/lib/ShadowCopy/shadow.h
+++ b/lib/ShadowCopy/shadow.h
@@ -26,23 +26,23 @@ namespace shadow
--------------*/
//COM needs to be initialized before calling any of these functions! CoInitializeEx/CoUninitialize
+struct ShadowData;
+typedef ShadowData* ShadowHandle;
-typedef IVssBackupComponents* ShadowHandle;
-
-//volumeName must end with "\", while shadowVolName does not end with "\"
+//volumeName *must* end with "\"
SHADOWDLL_API
-bool createShadowCopy(const wchar_t* volumeName, // in
- wchar_t* shadowVolName, // out
- unsigned int shadowBufferLen, // in
- ShadowHandle* handle, // out
- wchar_t* errorMessage, // out
- unsigned int errorBufferLen); // in
-
+ShadowHandle createShadowCopy(const wchar_t* volumeName, // in Returns nullptr on failure!
+ wchar_t* errorMessage, // out
+ unsigned int errorBufferLen); // in
//don't forget to release the backupHandle after shadow copy is not needed anymore!
SHADOWDLL_API
void releaseShadowCopy(ShadowHandle handle);
+SHADOWDLL_API
+void getShadowVolume(ShadowHandle handle, //shadowVolName does *not* end with "\"
+ wchar_t* buffer,
+ unsigned int bufferLen);
//##########################################################################################
@@ -50,21 +50,24 @@ void releaseShadowCopy(ShadowHandle handle);
/*----------
|typedefs|
----------*/
-typedef bool (*CreateShadowCopyFct)(const wchar_t* volumeName,
- wchar_t* shadowVolName,
- unsigned int shadowBufferLen,
- ShadowHandle* handle,
- wchar_t* errorMessage,
- unsigned int errorBufferLen);
+typedef ShadowHandle (*CreateShadowCopyFct)(const wchar_t* volumeName,
+ wchar_t* errorMessage,
+ unsigned int errorBufferLen);
typedef void (*ReleaseShadowCopyFct)(ShadowHandle handle);
+typedef void (*GetShadowVolumeFct)(ShadowHandle handle,
+ wchar_t* buffer,
+ unsigned int bufferLen);
+
+
/*--------------
|symbol names|
--------------*/
//(use const pointers to ensure internal linkage)
-const char createShadowCopyFctName[] = "createShadowCopy";
+const char createShadowCopyFctName [] = "createShadowCopy";
const char releaseShadowCopyFctName[] = "releaseShadowCopy";
+const char getShadowVolumeFctName [] = "getShadowVolume";
/*---------------
|library names|
@@ -73,21 +76,24 @@ const char releaseShadowCopyFctName[] = "releaseShadowCopy";
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 zen::winServer2003orLater() ?
- (zen::is64BitBuild ?
- L"Shadow_Server2003_x64.dll" :
- L"Shadow_Server2003_Win32.dll") :
-
- (zen::is64BitBuild ?
- L"Shadow_XP_x64.dll" :
- L"Shadow_XP_Win32.dll");
+ // distinguish a bunch of VSS builds: we use XP, Server 2003 and Server 2008 R2 implementations...
+ // VSS version and compatibility overview: http://msdn.microsoft.com/en-us/library/aa384627(VS.85).aspx
+
+ if (zen::win7OrLater()) //Windows Server 2008 R2 or Windows 7
+ return zen::is64BitBuild ?
+ L"Shadow_Windows7_x64.dll" :
+ L"Shadow_Windows7_Win32.dll";
+ //else if (vistaOrLater()) -> skip Windows Server 2008 and Windows Vista
+ // ;
+ else if (zen::winServer2003orLater()) //Windows Server 2003 and Windows Server 2003 R2
+ return zen::is64BitBuild ?
+ L"Shadow_Server2003_x64.dll" :
+ L"Shadow_Server2003_Win32.dll";
+ else //Windows XP
+ return zen::is64BitBuild ?
+ L"Shadow_XP_x64.dll" :
+ L"Shadow_XP_Win32.dll";
}
}
-
-
#endif //SHADOWCOPY_H
bgstack15