]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/win32/filed/plugins/api.h
Restore win32 dir from Branch-5.2 and update it
[bacula/bacula] / bacula / src / win32 / filed / plugins / api.h
diff --git a/bacula/src/win32/filed/plugins/api.h b/bacula/src/win32/filed/plugins/api.h
new file mode 100644 (file)
index 0000000..08a01ba
--- /dev/null
@@ -0,0 +1,302 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2008-2009 Free Software Foundation Europe e.V.
+
+   The main author of Bacula is Kern Sibbald, with contributions from
+   many others, a complete list can be found in the file AUTHORS.
+   This program is Free Software; you can redistribute it and/or
+   modify it under the terms of version three of the GNU Affero General Public
+   License as published by the Free Software Foundation, which is 
+   listed in the file LICENSE.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU Affero General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+   The licensor of Bacula is the Free Software Foundation Europe
+   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
+   Switzerland, email:ftf@fsfeurope.org.
+*/
+/* 
+ *  Written by James Harper, October 2008
+ */
+
+extern "C" {
+
+#define BACKUP_NODE_TYPE_MACHINE                0x001
+#define BACKUP_NODE_TYPE_ANNOTATION             0x010
+#define BACKUP_NODE_TYPE_DISPLAY                0x100
+
+#define ESE_BACKUP_INSTANCE_END_ERROR   0x0
+#define ESE_BACKUP_INSTANCE_END_SUCCESS 0x1
+
+#define BACKUP_TYPE_FULL                        0x1
+#define BACKUP_TYPE_LOGS_ONLY                   0x2
+#define BACKUP_TYPE_FULL_WITH_ALL_LOGS          0x3
+
+#define RESTORE_CLOSE_ABORT                     0x1
+#define RESTORE_CLOSE_NORMAL                    0x0
+
+#define ESE_RESTORE_COMPLETE_NOWAIT             0x00010000
+#define ESE_RESTORE_COMPLETE_ATTACH_DBS         0x00000001
+#define ESE_RESTORE_KEEP_LOG_FILES              0x00020000
+
+//#include <windef.h>
+
+struct ESE_ICON_DESCRIPTION {
+   uint32_t ulSize;
+   char *pvData;
+};
+
+struct BACKUP_NODE_TREE {
+   WCHAR *wszName;
+   uint32_t fFlags;
+   ESE_ICON_DESCRIPTION iconDescription;
+   struct BACKUP_NODE_TREE *pNextNode;
+   struct BACKUP_NODE_TREE *pChildNode;
+};
+
+struct DATABASE_BACKUP_INFO {
+   WCHAR *wszDatabaseDisplayName;
+   uint32_t cwDatabaseStreams;
+   WCHAR *wszDatabaseStreams;
+   GUID rguidDatabase;
+   uint32_t *rgIconIndexDatabase;
+   uint32_t fDatabaseFlags;
+};
+
+struct INSTANCE_BACKUP_INFO {
+   uint64_t hInstanceId;
+   //RPC_STRING wszInstanceName;
+   WCHAR *wszInstanceName;
+   uint32_t ulIconIndexInstance;
+   uint32_t cDatabase;
+   DATABASE_BACKUP_INFO *rgDatabase;
+   uint32_t cIconDescription;
+   ESE_ICON_DESCRIPTION *rgIconDescription;
+};
+
+enum RECOVER_STATUS {
+   recoverInvalid          = 0,
+   recoverNotStarted       = 1,
+   recoverStarted          = 2,
+   recoverEnded            = 3,
+   recoverStatusMax
+};
+
+struct RESTORE_ENVIRONMENT      {
+   WCHAR *                 m_wszRestoreLogPath;
+   WCHAR *                 m_wszSrcInstanceName;
+   uint32_t                m_cDatabases;
+   WCHAR                   **m_wszDatabaseDisplayName;
+   GUID *                  m_rguidDatabase;
+   WCHAR *                 m_wszRestoreInstanceSystemPath;
+   WCHAR *                 m_wszRestoreInstanceLogPath;
+   WCHAR *                 m_wszTargetInstanceName;
+   WCHAR **                m_wszDatabaseStreamsS;
+   WCHAR **                m_wszDatabaseStreamsD;
+   uint32_t                m_ulGenLow;
+   uint32_t                m_ulGenHigh;
+   WCHAR *                 m_wszLogBaseName;
+   time_t                  m_timeLastRestore;
+   RECOVER_STATUS  m_statusLastRecover;
+   HRESULT                 m_hrLastRecover;
+   time_t                  m_timeLastRecover;
+   WCHAR *                 m_wszAnnotation;
+};
+
+typedef HANDLE HCCX;
+
+typedef HRESULT (WINAPI *HrESEBackupRestoreGetNodes_t)
+(
+   WCHAR* wszComputerName,
+   BACKUP_NODE_TREE* pBackupNodeTree
+);
+
+typedef HRESULT (WINAPI *HrESEBackupPrepare_t)
+(
+   WCHAR* wszBackupServer,
+   WCHAR* wszBackupAnnotation,
+   uint32_t *pcInstanceInfo,
+   INSTANCE_BACKUP_INFO **paInstanceInfo,
+   HCCX *phccxBackupContext
+);
+
+typedef HRESULT (WINAPI *HrESEBackupEnd_t)
+(
+   HCCX hccsBackupContext
+);
+
+typedef HRESULT (WINAPI *HrESEBackupSetup_t)
+(
+   HCCX hccsBackupContext,
+   uint64_t hInstanceID,
+   uint32_t btBackupType
+);
+
+typedef HRESULT (WINAPI *HrESEBackupGetLogAndPatchFiles_t)
+(
+   HCCX hccsBackupContext,
+   WCHAR** pwszFiles
+);
+
+typedef HRESULT (WINAPI *HrESEBackupInstanceEnd_t)
+(
+   HCCX hccsBackupContext,
+   uint32_t fFlags
+);
+
+typedef HRESULT (WINAPI *HrESEBackupOpenFile_t)
+(
+   HCCX hccsBackupContext,
+   WCHAR* wszFileName,
+   uint32_t cbReadHintSize,
+   uint32_t cSections,
+   void** rghFile,
+   uint64_t* rgliSectionSize
+);
+
+typedef HRESULT (WINAPI *HrESEBackupReadFile_t)
+(
+   HCCX hccsBackupContext,
+   void* hFile,
+   void* pvBuffer,
+   uint32_t cbBuffer,
+   uint32_t* pcbRead
+);
+
+typedef HRESULT (WINAPI *HrESEBackupCloseFile_t)
+(
+   HCCX hccsBackupContext,
+   void* hFile
+);
+
+typedef HRESULT (WINAPI *HrESEBackupTruncateLogs_t)
+(
+   HCCX hccsBackupContext
+);
+
+typedef HRESULT (WINAPI *HrESERestoreOpen_t)
+(
+   WCHAR* wszBackupServer,
+   WCHAR* wszBackupAnnotation,
+   WCHAR* wszSrcInstanceName,
+   WCHAR* wszRestoreLogPath,
+   HCCX* phccxRestoreContext
+);
+
+typedef HRESULT (WINAPI *HrESERestoreReopen_t)
+(
+   WCHAR* wszBackupServer,
+   WCHAR* wszBackupAnnotation,
+   WCHAR* wszRestoreLogPath,
+   HCCX* phccxRestoreContext
+);
+
+typedef HRESULT (WINAPI *HrESERestoreClose_t)
+(
+   HCCX phccxRestoreContext,
+   uint32_t fRestoreAbort
+);
+
+typedef HRESULT (WINAPI *HrESERestoreComplete_t)
+(
+   HCCX phccxRestoreContext,
+   WCHAR* wszCheckpointFilePath,
+   WCHAR* wszLogFilePath,
+   WCHAR* wszTargetInstanceName,
+   uint32_t fFlags
+);
+
+typedef HRESULT (WINAPI *HrESERestoreSaveEnvironment_t)
+(
+   HCCX phccxRestoreContext
+);
+
+typedef HRESULT (WINAPI *HrESERestoreGetEnvironment_t)
+(
+   HCCX phccxRestoreContext,
+   RESTORE_ENVIRONMENT **ppRestoreEnvironment
+);
+
+typedef HRESULT (WINAPI *HrESERestoreAddDatabase_t)
+(
+   HCCX phccxRestoreContext,
+   WCHAR* wszDatabaseDisplayName,
+   GUID guidDatabase,
+   WCHAR* wszDatabaseStreamsS,
+   WCHAR** wszDatabaseStreamsD
+);
+
+typedef HRESULT (WINAPI *HrESERestoreOpenFile_t)
+(
+   HCCX phccxRestoreContext,
+   WCHAR* wszFileName,
+   uint32_t cSections,
+   void* rghFile
+);
+
+bRC
+loadExchangeApi();
+
+const char *
+ESEErrorMessage(HRESULT result);
+
+#define hrLogfileHasBadSignature    (HRESULT)0xC8000262L
+#define hrLogfileNotContiguous      (HRESULT)0xC8000263L
+#define hrCBDatabaseInUse           (HRESULT)0xC7FE1F41L
+#define hrRestoreAtFileLevel        (HRESULT)0xC7FF0FA5L
+#define hrMissingFullBackup         (HRESULT)0xC8000230L
+#define hrBackupInProgress          (HRESULT)0xC80001F9L
+#define hrCBDatabaseNotFound        (HRESULT)0xC7FE1F42L
+#define hrErrorFromESECall          (HRESULT)0xC7FF1004L
+
+extern HrESEBackupRestoreGetNodes_t HrESEBackupRestoreGetNodes;
+extern HrESEBackupPrepare_t HrESEBackupPrepare;
+extern HrESEBackupGetLogAndPatchFiles_t HrESEBackupGetLogAndPatchFiles;
+extern HrESEBackupTruncateLogs_t HrESEBackupTruncateLogs;
+extern HrESEBackupEnd_t HrESEBackupEnd;
+extern HrESEBackupSetup_t HrESEBackupSetup;
+extern HrESEBackupInstanceEnd_t HrESEBackupInstanceEnd;
+extern HrESEBackupOpenFile_t HrESEBackupOpenFile;
+extern HrESEBackupReadFile_t HrESEBackupReadFile;
+extern HrESEBackupCloseFile_t HrESEBackupCloseFile;
+
+extern HrESERestoreOpen_t HrESERestoreOpen;
+extern HrESERestoreReopen_t HrESERestoreReopen;
+extern HrESERestoreComplete_t HrESERestoreComplete;
+extern HrESERestoreClose_t HrESERestoreClose;
+extern HrESERestoreGetEnvironment_t HrESERestoreGetEnvironment;
+extern HrESERestoreSaveEnvironment_t HrESERestoreSaveEnvironment;
+extern HrESERestoreAddDatabase_t HrESERestoreAddDatabase;
+extern HrESERestoreOpenFile_t HrESERestoreOpenFile;
+
+#if !defined(MINGW64)  && (_WIN32_WINNT < 0x0500)
+typedef enum _COMPUTER_NAME_FORMAT {
+   ComputerNameNetBIOS,
+   ComputerNameDnsHostname,
+   ComputerNameDnsDomain,
+   ComputerNameDnsFullyQualified,
+   ComputerNamePhysicalNetBIOS,
+   ComputerNamePhysicalDnsHostname,
+   ComputerNamePhysicalDnsDomain,
+   ComputerNamePhysicalDnsFullyQualified,
+   ComputerNameMax
+} COMPUTER_NAME_FORMAT;
+
+BOOL WINAPI GetComputerNameExW(
+   COMPUTER_NAME_FORMAT NameType,
+   LPWSTR lpBuffer,
+   LPDWORD lpnSize
+);
+#endif
+
+}