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.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/shared/ShadowCopy/shadow.h b/shared/ShadowCopy/shadow.h
new file mode 100644
index 00000000..61d6ae7e
--- /dev/null
+++ b/shared/ShadowCopy/shadow.h
@@ -0,0 +1,55 @@
+// **************************************************************************
+// * This file is part of the FreeFileSync project. It is distributed under *
+// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *
+// * Copyright (C) 2008-2010 ZenJu (zhnmju123 AT gmx.de) *
+// **************************************************************************
+//
+#ifndef SHADOWCOPY_H
+#define SHADOWCOPY_H
+
+#ifdef SHADOWDLL_EXPORTS
+#define SHADOWDLL_API extern "C" __declspec(dllexport)
+#else
+#define SHADOWDLL_API extern "C" __declspec(dllimport)
+#endif
+
+
+namespace Shadow
+{
+//COM needs to be initialized before calling any of these functions! CoInitializeEx/CoUninitialize
+
+
+//volumeName must end with "\", while shadowVolName does not end with "\"
+SHADOWDLL_API
+bool createShadowCopy(const wchar_t* volumeName,
+ wchar_t* shadowVolName,
+ unsigned int shadowBufferLen,
+ void** backupHandle,
+ wchar_t* errorMessage,
+ unsigned int errorBufferLen);
+
+
+//don't forget to release the backupHandle after shadow copy is not needed anymore!
+SHADOWDLL_API
+void releaseShadowCopy(void* backupHandle);
+
+
+
+//function typedefs
+typedef bool (*CreateShadowCopyFct)(const wchar_t* volumeName,
+ wchar_t* shadowVolName,
+ unsigned int shadowBufferLen,
+ void** backupHandle,
+ wchar_t* errorMessage,
+ unsigned int errorBufferLen);
+
+typedef void (*ReleaseShadowCopyFct)(void* backupHandle);
+
+//function names
+const char* const createShadowCopyFctName = "createShadowCopy";
+const char* const releaseShadowCopyFctName = "releaseShadowCopy";
+}
+
+
+
+#endif //SHADOWCOPY_H
bgstack15