blob: 1438d4f708151e617942eace473e2ba87c65ad7d [file] [log] [blame]
/**
* 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 <winapifamily.h>")
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 */")