| /** | 
 |  * 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 */") |