X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fwin32%2Ffiled%2Fplugins%2Fapi.h;fp=bacula%2Fsrc%2Fwin32%2Ffiled%2Fplugins%2Fapi.h;h=08a01ba0be243a2b9a3334878638978c3d28e0ee;hb=10cfd798ced2d27f61ead2de6fe9b1bcc8e3468d;hp=0000000000000000000000000000000000000000;hpb=d5f8803f502e95c34d32c92930451224baad67c2;p=bacula%2Fbacula diff --git a/bacula/src/win32/filed/plugins/api.h b/bacula/src/win32/filed/plugins/api.h new file mode 100644 index 0000000000..08a01ba0be --- /dev/null +++ b/bacula/src/win32/filed/plugins/api.h @@ -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 + +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 + +}