/*++ Copyright (C) 2004 Microsoft Corporation Module Name: wsbapp.idl Abstract: This file contains the definition of the COM interfaces used by the Windows Server Backup (WSB) engine to invoke application during backup/restore. These needs to be implemented by application in an out-of-proc COM server. --*/ import "oaidl.idl"; import "ocidl.idl"; // maximum number of volumes we'll get in any Interface that expects a list of volumes #define MAX_VOLUMES 1000 // maximum number of components we will get in the restore API that expects a list of components #define MAX_COMPONENTS 10000 // // Forward declarations // interface IWsbApplicationAsync; // // Interface IWsbApplicationlicationBackupSupport contains methods for application specific backup tasks // [ object, uuid(1EFF3510-4A27-46ad-B9E0-08332F0F4F6D), helpstring("IWsbApplicationBackupSupport Interface"), pointer_default(unique) ] interface IWsbApplicationBackupSupport : IUnknown { // CheckConsistency: Method to check consistency of components on the snapshot volumes. This method is // called to check the consistency of the component after taking the snapshot of the volumes to be backed up. // // Arguments: // IN wszWriterMetadata - writer metadata XML // IN wszComponentName - component Name (as in writermetadata) // IN wszComponentLogicalPath - component Logical Path (as in writermetadata) // IN cVolumes - count of volumes (for volume map) // IN rgwszSourceVolumePath - array of volume GUID paths (backward slash terminated) // IN rgwszSnapshotVolumePath - array of snapshot volume paths corresponding to // source volumes. The consistency check is done on these volumes // OUT ppAsync - Pointer to the async interface for the client to query the operation. // Can be NULL if consistency check is a no-op // // Return Values: // S_OK - Consistency check on the component was successful // S_FALSE - Consistency check is not required (No-op) // WSBAPP_E_COMPONENT_CONSISTENCY_CHECK_FAILED - Consistency check operation failed // hr - system error codes for operation failure HRESULT CheckConsistency( [in, unique, string] LPWSTR wszWriterMetadata, [in, unique, string] LPWSTR wszComponentName, [in, unique, string] LPWSTR wszComponentLogicalPath, [range(0, MAX_VOLUMES)][in] DWORD cVolumes, [in, unique, string, size_is(cVolumes)] LPWSTR *rgwszSourceVolumePath, [in, unique, string, size_is(cVolumes)] LPWSTR *rgwszSnapshotVolumePath, [out] IWsbApplicationAsync **ppAsync ); } // // Interface IWsbApplicationRestoreSupport contains methods for application specific restore tasks. // The methods in this interface are called while restoring the application from backup. // [ object, uuid(8D3BDB38-4EE8-4718-85F9-C7DBC4AB77AA), helpstring("IWsbApplicationBackupSupport Interface"), pointer_default(unique) ] interface IWsbApplicationRestoreSupport : IUnknown { // PreRestore: Method to perform Application specific prerestore tasks. // // Arguments: // IN wszWriterMetadata - Writer metadata XML // IN wszComponentName - component Name (as in writermetadata) // IN wszComponentLogicalPath - component Logical Path (as in writermetadata) // IN bNoRollForward - boolean to indicate previous point in time recovery is underway. No application // rollforward will be done. The previous logs for the application will be deleted // prior to restore // // Return Values: // S_OK - PreRestore steps for the component were successful // WSBAPP_E_COMPONENT_PRE_RESTORE_FAILED - Failure in preRestore operation HRESULT PreRestore( [in, unique, string] LPWSTR wszWriterMetadata, [in, unique, string] LPWSTR wszComponentName, [in, unique, string] LPWSTR wszComponentLogicalPath, [in] BOOLEAN bNoRollForward ); // PostRestore: Method to perform Application specific postrestore tasks. // // Arguments: // IN wszWriterMetadata - Writer metadata XML // IN wszComponentName - component Name (as in writermetadata) // IN wszComponentLogicalPath - component Logical Path (as in writermetadata) // IN BOOLEAN bNoRollForward // // Return Values: // S_OK - PostRestore steps for the component were successful // WSBAPP_E_COMPONENT_POST_RESTORE_FAILED - Failure in post restore operation HRESULT PostRestore( [in, unique, string] LPWSTR wszWriterMetadata, [in, unique, string] LPWSTR wszComponentName, [in, unique, string] LPWSTR wszComponentLogicalPath, [in] BOOLEAN bNoRollForward ); // OrderComponents: Method to get the order in which the Application components should be // // restored // // Arguments: // IN cComponents - count of components // IN rgComponentName - array of component Name (as in writermetadata) // IN rgComponentLogicalPath - array of component logical paths (as in writermetadata) // OUT prgComponentName - array of components name in restore order // OUT prgComponentLogicalPath - array of component logical paths in restore order // // Return Values // // S_OK - Component restore order specified // S_FALSE - No specific restore order required (prgComponentName and prgComponentLogicalPath) are NULL // hr - Failure HRESULT OrderComponents( [range(0, MAX_COMPONENTS)][in] DWORD cComponents, [in, string, size_is(cComponents)] LPWSTR *rgComponentName, [in, string, size_is(cComponents)] LPWSTR *rgComponentLogicalPaths, [out, string, size_is(, cComponents)] LPWSTR **prgComponentName, [out, string, size_is(, cComponents)] LPWSTR **prgComponentLogicalPath ); // IsRollForwardSupported: Method to get the information that application supports RollForward recovery // // Arguments: // IN pbRollForwardSupported - Info whether RollForward recovery is supported // // Return Values: // // S_OK HRESULT IsRollForwardSupported( [out] BOOLEAN *pbRollForwardSupported ); } // // Interface IWsbApplicationAsync is the interface that the client can call to // query the progress of consistency check operation. // [ object, uuid(0843F6F7-895C-44a6-B0C2-05A5022AA3A1), helpstring("IWsbApplicationAsync Interface"), pointer_default(unique) ] interface IWsbApplicationAsync : IUnknown { // QueryStatus: Method to get the status of the pending WsbApplication async operation // // Arguments: // OUT phrResult - Status of current WsbApplication operation. The possible values are // S_OK - Async operation has finished successfully // WSBAPP_ASYNC_IN_PROGRESS - Async operation still in progress // hr - Failure from the async operation // // Return Values: // // S_OK - Query status for the async operation was successful // hr - Failure // HRESULT QueryStatus( [out] HRESULT *phrResult ); // Abort: Method to abort the current async operation // // Arguments: // None // // Return Values: // // S_OK HRESULT Abort(); }