/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ /** * C++ interfaces, which are not COM interface, are declared with * uuid(00000000-0000-0000-0000-000000000000) to make widl happy */ import "oaidl.idl"; import "ocidl.idl"; import "vss.idl"; cpp_quote("#include ") cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") cpp_quote("#include \"vsserror.h\" ") typedef enum VSS_USAGE_TYPE { VSS_UT_UNDEFINED = 0, VSS_UT_BOOTABLESYSTEMSTATE, VSS_UT_SYSTEMSERVICE, VSS_UT_USERDATA, VSS_UT_OTHER, } VSS_USAGE_TYPE; typedef enum VSS_SOURCE_TYPE { VSS_ST_UNDEFINED = 0, VSS_ST_TRANSACTEDDB, VSS_ST_NONTRANSACTEDDB, VSS_ST_OTHER, } VSS_SOURCE_TYPE; typedef enum VSS_RESTOREMETHOD_ENUM { VSS_RME_UNDEFINED = 0, VSS_RME_RESTORE_IF_NOT_THERE, VSS_RME_RESTORE_IF_CAN_REPLACE, VSS_RME_STOP_RESTORE_START, VSS_RME_RESTORE_TO_ALTERNATE_LOCATION, VSS_RME_RESTORE_AT_REBOOT, VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE, VSS_RME_CUSTOM, VSS_RME_RESTORE_STOP_START, } VSS_RESTOREMETHOD_ENUM; typedef enum VSS_WRITERRESTORE_ENUM { VSS_WRE_UNDEFINED = 0, VSS_WRE_NEVER, VSS_WRE_IF_REPLACE_FAILS, VSS_WRE_ALWAYS, } VSS_WRITERRESTORE_ENUM; typedef enum VSS_COMPONENT_TYPE { VSS_CT_UNDEFINED = 0, VSS_CT_DATABASE, VSS_CT_FILEGROUP, } VSS_COMPONENT_TYPE; typedef enum VSS_ALTERNATE_WRITER_STATE { VSS_AWS_UNDEFINED = 0, VSS_AWS_NO_ALTERNATE_WRITER, VSS_AWS_ALTERNATE_WRITER_EXISTS, VSS_AWS_THIS_IS_ALTERNATE_WRITER, } VSS_ALTERNATE_WRITER_STATE; typedef enum VSS_SUBSCRIBE_MASK { VSS_SM_POST_SNAPSHOT_FLAG = 0x00000001, VSS_SM_BACKUP_EVENTS_FLAG = 0x00000002, VSS_SM_RESTORE_EVENTS_FLAG = 0x00000004, VSS_SM_IO_THROTTLING_FLAG = 0x00000008, VSS_SM_ALL_FLAGS = 0xffffffff, } VSS_SUBSCRIBE_MASK; typedef enum VSS_RESTORE_TARGET { VSS_RT_UNDEFINED = 0, VSS_RT_ORIGINAL, VSS_RT_ALTERNATE, VSS_RT_DIRECTED, VSS_RT_ORIGINAL_LOCATION, } VSS_RESTORE_TARGET; typedef enum VSS_FILE_RESTORE_STATUS { VSS_RS_UNDEFINED = 0, VSS_RS_NONE, VSS_RS_ALL, VSS_RS_FAILED, } VSS_FILE_RESTORE_STATUS; typedef enum VSS_COMPONENT_FLAGS { VSS_CF_BACKUP_RECOVERY = 0x00000001, VSS_CF_APP_ROLLBACK_RECOVERY = 0x00000002, VSS_CF_NOT_SYSTEM_STATE = 0x00000004, } VSS_COMPONENT_FLAGS; interface IVssExamineWriterMetadata; [object, uuid(00000000-0000-0000-0000-000000000000), pointer_default(unique)] interface IVssWMFiledesc : IUnknown { HRESULT GetPath( [out] BSTR *pbstrPath); HRESULT GetFilespec( [out] BSTR *pbstrFilespec); HRESULT GetRecursive( [out] boolean *pbRecursive); HRESULT GetAlternateLocation( [out] BSTR *pbstrAlternateLocation); HRESULT GetBackupTypeMask( [out] DWORD *pdwTypeMask); } [object, uuid(00000000-0000-0000-0000-000000000000), pointer_default(unique)] interface IVssWMDependency : IUnknown { HRESULT GetWriterId( [out] VSS_ID *pWriterId); HRESULT GetLogicalPath( [out] BSTR *pbstrLogicalPath); HRESULT GetComponentName( [out] BSTR *pbstrComponentName); }; [object, uuid(d2c72c96-c121-4518-b627-e5a93d010ead), pointer_default(unique)] interface IVssComponent : IUnknown { HRESULT GetLogicalPath( [out] BSTR *pbstrPath); HRESULT GetComponentType( [out] VSS_COMPONENT_TYPE *pct); HRESULT GetComponentName( [out] BSTR *pbstrName); HRESULT GetBackupSucceeded( [out] boolean *pbSucceeded); HRESULT GetAlternateLocationMappingCount( [out] UINT *pcMappings); HRESULT GetAlternateLocationMapping( [in] UINT iMapping, [out] IVssWMFiledesc **ppFiledesc); HRESULT SetBackupMetadata( [in] LPCWSTR wszData); HRESULT GetBackupMetadata( [out] BSTR *pbstrData); HRESULT AddPartialFile( [in] LPCWSTR wszPath, [in] LPCWSTR wszFilename, [in] LPCWSTR wszRanges, [in] LPCWSTR wszMetadata); HRESULT GetPartialFileCount( [out] UINT *pcPartialFiles); HRESULT GetPartialFile( [in] UINT iPartialFile, [out] BSTR *pbstrPath, [out] BSTR *pbstrFilename, [out] BSTR *pbstrRange, [out] BSTR *pbstrMetadata); HRESULT IsSelectedForRestore( [out] boolean *pbSelectedForRestore); HRESULT GetAdditionalRestores( [out] boolean *pbAdditionalRestores); HRESULT GetNewTargetCount( [out] UINT *pcNewTarget); HRESULT GetNewTarget( [in] UINT iNewTarget, [out] IVssWMFiledesc **ppFiledesc); HRESULT AddDirectedTarget( [in] LPCWSTR wszSourcePath, [in] LPCWSTR wszSourceFilename, [in] LPCWSTR wszSourceRangeList, [in] LPCWSTR wszDestinationPath, [in] LPCWSTR wszDestinationFilename, [in] LPCWSTR wszDestinationRangeList); HRESULT GetDirectedTargetCount( [out] UINT *pcDirectedTarget); HRESULT GetDirectedTarget( [in] UINT iDirectedTarget, [out] BSTR *pbstrSourcePath, [out] BSTR *pbstrSourceFileName, [out] BSTR *pbstrSourceRangeList, [out] BSTR *pbstrDestinationPath, [out] BSTR *pbstrDestinationFilename, [out] BSTR *pbstrDestinationRangeList); HRESULT SetRestoreMetadata( [in] LPCWSTR wszRestoreMetadata); HRESULT GetRestoreMetadata( [out] BSTR *pbstrRestoreMetadata); HRESULT SetRestoreTarget( [in] VSS_RESTORE_TARGET target); HRESULT GetRestoreTarget( [out] VSS_RESTORE_TARGET *pTarget); HRESULT SetPreRestoreFailureMsg( [in] LPCWSTR wszPreRestoreFailureMsg); HRESULT GetPreRestoreFailureMsg( [out] BSTR *pbstrPreRestoreFailureMsg); HRESULT SetPostRestoreFailureMsg( [in] LPCWSTR wszPostRestoreFailureMsg); HRESULT GetPostRestoreFailureMsg( [out] BSTR *pbstrPostRestoreFailureMsg); HRESULT SetBackupStamp( [in] LPCWSTR wszBackupStamp); HRESULT GetBackupStamp( [out] BSTR *pbstrBackupStamp); HRESULT GetPreviousBackupStamp( [out] BSTR *pbstrBackupStamp); HRESULT GetBackupOptions( [out] BSTR *pbstrBackupOptions); HRESULT GetRestoreOptions( [out] BSTR *pbstrRestoreOptions); HRESULT GetRestoreSubcomponentCount( [out] UINT *pcRestoreSubcomponent); HRESULT GetRestoreSubcomponent( [in] UINT iComponent, [out] BSTR *pbstrLogicalPath, [out] BSTR *pbstrComponentName, [out] boolean *pbRepair); HRESULT GetFileRestoreStatus( [out] VSS_FILE_RESTORE_STATUS *pStatus); HRESULT AddDifferencedFilesByLastModifyTime( [in] LPCWSTR wszPath, [in] LPCWSTR wszFilespec, [in] WINBOOL bRecursive, [in] FILETIME ftLastModifyTime); HRESULT AddDifferencedFilesByLastModifyLSN( [in] LPCWSTR wszPath, [in] LPCWSTR wszFilespec, [in] WINBOOL bRecursive, [in] BSTR bstrLsnString); HRESULT GetDifferencedFilesCount( [out] UINT *pcDifferencedFiles); HRESULT GetDifferencedFile( [in] UINT iDifferencedFile, [out] BSTR *pbstrPath, [out] BSTR *pbstrFilespec, [out] WINBOOL *pbRecursive, [out] BSTR *pbstrLsnString, [out] FILETIME *pftLastModifyTime); } [object, uuid(00000000-0000-0000-0000-000000000000), pointer_default(unique)] interface IVssWriterComponents { HRESULT GetComponentCount( [out] UINT *pcComponents); HRESULT GetWriterInfo( [out] VSS_ID *pidInstance, [out] VSS_ID *pidWriter); HRESULT GetComponent( [in] UINT iComponent, [out] IVssComponent **ppComponent); } [object, uuid(156c8b5e-f131-4bd7-9c97-d1923be7e1fa), pointer_default(unique)] interface IVssComponentEx : IVssComponent { HRESULT SetPrepareForBackupFailureMsg( [in] LPCWSTR wszFailureMsg); HRESULT SetPostSnapshotFailureMsg( [in] LPCWSTR wszFailureMsg); HRESULT GetPrepareForBackupFailureMsg( [out] BSTR *pbstrFailureMsg); HRESULT GetPostSnapshotFailureMsg( [out] BSTR *pbstrFailureMsg); HRESULT GetAuthoritativeRestore( [out] boolean *pbAuth); HRESULT GetRollForward( [out] VSS_ROLLFORWARD_TYPE *pRollType, [out] BSTR *pbstrPoint); HRESULT GetRestoreName( [out] BSTR *pbstrName); } [object, uuid(3b5be0f2-07a9-4e4b-bdd3-cfdc8e2c0d2d), pointer_default(unique)] interface IVssComponentEx2 : IVssComponentEx { HRESULT SetFailure( [in] HRESULT hr, [in] HRESULT hrApplication, [in] LPCWSTR wszApplicationMessage, [in] DWORD dwReserved); HRESULT GetFailure( [out] HRESULT *phr, [out] HRESULT *phrApplication, [out] BSTR *pbstrApplicationMessage, [out] DWORD *pdwReserved); } interface IXMLDOMDocument; [object, uuid(00000000-0000-0000-0000-000000000000), pointer_default(unique)] interface IVssCreateWriterMetadata { HRESULT AddIncludeFiles( [in] LPCWSTR wszPath, [in] LPCWSTR wszFilespec, [in] boolean bRecursive, [in] LPCWSTR wszAlternateLocation); HRESULT AddExcludeFiles( [in] LPCWSTR wszPath, [in] LPCWSTR wszFilespec, [in] boolean bRecursive); HRESULT AddComponent( [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] LPCWSTR wszCaption, [in] const BYTE *pbIcon, [in] UINT cbIcon, [in] boolean bRestoreMetadata, [in] boolean bNotifyOnBackupComplete, [in] boolean bSelectable, [in, defaultvalue(0)] boolean bSelectableForRestore, [in, defaultvalue(0)] DWORD dwComponentFlags); HRESULT AddDatabaseFiles( [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszDatabaseName, [in] LPCWSTR wszPath, [in] LPCWSTR wszFilespec, [in, defaultvalue(VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED)] DWORD dwBackupTypeMask); HRESULT AddDatabaseLogFiles( [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszDatabaseName, [in] LPCWSTR wszPath, [in] LPCWSTR wszFilespec, [in, defaultvalue(VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED)] DWORD dwBackupTypeMask); HRESULT AddFilesToFileGroup( [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszGroupName, [in] LPCWSTR wszPath, [in] LPCWSTR wszFilespec, [in] boolean bRecursive, [in] LPCWSTR wszAlternateLocation, [in, defaultvalue(VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED)] DWORD dwBackupTypeMask); HRESULT SetRestoreMethod( [in] VSS_RESTOREMETHOD_ENUM method, [in] LPCWSTR wszService, [in] LPCWSTR wszUserProcedure, [in] VSS_WRITERRESTORE_ENUM writerRestore, [in] boolean bRebootRequired); HRESULT AddAlternateLocationMapping( [in] LPCWSTR wszSourcePath, [in] LPCWSTR wszSourceFilespec, [in] boolean bRecursive, [in] LPCWSTR wszDestination); HRESULT AddComponentDependency( [in] LPCWSTR wszForLogicalPath, [in] LPCWSTR wszForComponentName, [in] VSS_ID onWriterId, [in] LPCWSTR wszOnLogicalPath, [in] LPCWSTR wszOnComponentName); HRESULT SetBackupSchema( [in] DWORD dwSchemaMask); HRESULT GetDocument( [out] IXMLDOMDocument **pDoc); HRESULT SaveAsXML( [in] BSTR *pbstrXML); } [object, uuid(9f21981d-d469-4349-b807-39e64e4674e1), pointer_default(unique)] interface IVssCreateWriterMetadataEx : IVssCreateWriterMetadata /* , IUnknown */ { HRESULT AddExcludeFilesFromSnapshot( [in] LPCWSTR wszPath, [in] LPCWSTR wszFilespec, [in] boolean bRecursive); } [object, uuid(00000000-0000-0000-0000-000000000000), pointer_default(unique)] interface IVssWriterImpl : IUnknown { HRESULT Initialize( [in] VSS_ID writerId, [in] LPCWSTR wszWriterName, [in] LPCWSTR wszWriterInstanceName, [in] DWORD dwMajorVersion, [in] DWORD dwMinorVersion, [in] VSS_USAGE_TYPE ut, [in] VSS_SOURCE_TYPE st, [in] VSS_APPLICATION_LEVEL nLevel, [in] DWORD dwTimeout, [in] VSS_ALTERNATE_WRITER_STATE aws, [in] boolean bIOThrottlingOnly); HRESULT Subscribe( [in] DWORD dwSubscribeTimeout, [in] DWORD dwEventFlags); HRESULT Unsubscribe(); void Uninitialize(); LPCWSTR *GetCurrentVolumeArray(); UINT GetCurrentVolumeCount(); HRESULT GetSnapshotDeviceName( [in] LPCWSTR wszOriginalVolume, [out] LPCWSTR *ppwszSnapshotDevice); VSS_ID GetCurrentSnapshotSetId(); LONG GetContext(); VSS_APPLICATION_LEVEL GetCurrentLevel(); boolean IsPathAffected( [in] LPCWSTR wszPath); boolean IsBootableSystemStateBackedUp(); boolean AreComponentsSelected(); VSS_BACKUP_TYPE GetBackupType(); VSS_RESTORE_TYPE GetRestoreType(); HRESULT SetWriterFailure( [in] HRESULT hr); boolean IsPartialFileSupportEnabled(); HRESULT InstallAlternateWriter( [in] VSS_ID idWriter, [in] CLSID clsid); IVssExamineWriterMetadata* GetIdentityInformation(); HRESULT SetWriterFailureEx( [in] HRESULT hr, [in] HRESULT hrApplication, [in] LPCWSTR wszApplicationMessage); HRESULT GetSessionId( [out] VSS_ID *idSession); boolean IsWriterShuttingDown(); } [object, uuid(9c772e77-b26e-427f-92dd-c996f41ea5e3), pointer_default(unique)] interface IVssCreateExpressWriterMetadata : IUnknown { HRESULT AddExcludeFiles( [in] LPCWSTR wszPath, [in] LPCWSTR wszFilespec, [in] boolean bRecursive); HRESULT AddComponent( [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] LPCWSTR wszCaption, [in] const BYTE *pbIcon, [in] UINT cbIcon, [in] boolean bRestoreMetadata, [in] boolean bNotifyOnBackupComplete, [in] boolean bSelectable, [in, defaultvalue(0)] boolean bSelectableForRestore, [in, defaultvalue(0)] DWORD dwComponentFlags); HRESULT AddFilesToFileGroup( [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszGroupName, [in] LPCWSTR wszPath, [in] LPCWSTR wszFilespec, [in] boolean bRecursive, [in] LPCWSTR wszAlternateLocation, [in, defaultvalue(VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED)] DWORD dwBackupTypeMask); HRESULT SetRestoreMethod( [in] VSS_RESTOREMETHOD_ENUM method, [in] LPCWSTR wszService, [in] LPCWSTR wszUserProcedure, [in] VSS_WRITERRESTORE_ENUM writerRestore, [in] boolean bRebootRequired); HRESULT AddComponentDependency( [in] LPCWSTR wszForLogicalPath, [in] LPCWSTR wszForComponentName, [in] VSS_ID onWriterId, [in] LPCWSTR wszOnLogicalPath, [in] LPCWSTR wszOnComponentName); HRESULT SetBackupSchema( [in] DWORD dwSchemaMask); HRESULT SaveAsXML( [out] BSTR *pbstrXML); } [object, uuid(e33affdc-59c7-47b1-97d5-4266598f6235), pointer_default(unique)] interface IVssExpressWriter : IUnknown { HRESULT CreateMetadata( [in] VSS_ID writerId, [in] LPCWSTR writerName, [in] VSS_USAGE_TYPE usageType, [in] DWORD versionMajor, [in] DWORD versionMinor, [in] DWORD reserved, [out] IVssCreateExpressWriterMetadata **ppMetadata); HRESULT LoadMetadata( [in] LPCWSTR metadata, [in] DWORD reserved); HRESULT Register(); HRESULT Unregister( [in] VSS_ID writerId); } cpp_quote("#endif /* WINAPI_PARTITION_DESKTOP */")