/** * 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"; import "vswriter.idl"; cpp_quote("#include ") cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") typedef struct _VSS_COMPONENTINFO { VSS_COMPONENT_TYPE type; BSTR bstrLogicalPath; BSTR bstrComponentName; BSTR bstrCaption; BYTE *pbIcon; UINT cbIcon; boolean bRestoreMetadata; boolean bNotifyOnBackupComplete; boolean bSelectable; boolean bSelectableForRestore; DWORD dwComponentFlags; UINT cFileCount; UINT cDatabases; UINT cLogFiles; UINT cDependencies; } VSS_COMPONENTINFO; typedef const VSS_COMPONENTINFO *PVSSCOMPONENTINFO; [object, uuid(00000000-0000-0000-0000-000000000000), pointer_default(unique)] interface IVssWMComponent : IUnknown { HRESULT GetComponentInfo( [out] PVSSCOMPONENTINFO *ppInfo); HRESULT FreeComponentInfo( [in] PVSSCOMPONENTINFO pInfo); HRESULT GetFile( [in] UINT iFile, [out] IVssWMFiledesc **ppFiledesc); HRESULT GetDatabaseFile( [in] UINT iDBFile, [out] IVssWMFiledesc **ppFiledesc); HRESULT GetDatabaseLogFile( [in] UINT iDbLogFile, [out] IVssWMFiledesc **ppFiledesc); HRESULT GetDependency( [in] UINT iDependency, [out] IVssWMDependency **ppDependency); } [object, uuid(902fcf7f-b7fd-42f8-81f1-b2e400b1e5bd), pointer_default(unique)] interface IVssExamineWriterMetadata : IUnknown { HRESULT GetIdentity( [out] VSS_ID *pidInstance, [out] VSS_ID *pidWriter, [out] BSTR *pbstrWriterName, [out] VSS_USAGE_TYPE *pUsage, [out] VSS_SOURCE_TYPE *pSource); HRESULT GetFileCounts( [out] UINT *pcIncludeFiles, [out] UINT *pcExcludeFiles, [out] UINT *pcComponents); HRESULT GetIncludeFile( [in] UINT iFile, [out] IVssWMFiledesc **ppFiledesc); HRESULT GetExcludeFile( [in] UINT iFile, [out] IVssWMFiledesc **ppFiledesc); HRESULT GetComponent( [in] UINT iComponent, [out] IVssWMComponent **ppComponent); HRESULT GetRestoreMethod( [out] VSS_RESTOREMETHOD_ENUM *pMethod, [out] BSTR *pbstrService, [out] BSTR *pbstrUserProcedure, [out] VSS_WRITERRESTORE_ENUM *pwriterRestore, [out] boolean *pbRebootRequired, [out] UINT *pcMappings); HRESULT GetAlternateLocationMapping( [in] UINT iMapping, [out] IVssWMFiledesc **ppFiledesc); HRESULT GetBackupSchema( [out] DWORD *pdwSchemaMask); HRESULT GetDocument( [out] IXMLDOMDocument **pDoc); HRESULT SaveAsXML( [in] BSTR *pbstrXML); HRESULT LoadFromXML( [in] BSTR bstrXML); } [object, uuid(0c0e5ec0-ca44-472b-b702-e652db1c0451), pointer_default(unique)] interface IVssExamineWriterMetadataEx : IVssExamineWriterMetadata { HRESULT GetIdentityEx( [out] VSS_ID *pidInstance, [out] VSS_ID *pidWriter, [out] BSTR *pbstrWriterName, [out] BSTR* pbstrInstanceName, [out] VSS_USAGE_TYPE *pUsage, [out] VSS_SOURCE_TYPE *pSource); } [object, uuid(ce115780-a611-431b-b57f-c38303ab6aee), pointer_default(unique)] interface IVssExamineWriterMetadataEx2 : IVssExamineWriterMetadataEx { HRESULT GetVersion( [out] DWORD* pdwMajorVersion, [out] DWORD* pdwMinorVersion); HRESULT GetExcludeFromSnapshotCount( [out] UINT* pcExcludedFromSnapshot); HRESULT GetExcludeFromSnapshotFile( [in] UINT iFile, [out] IVssWMFiledesc **ppFiledesc); } [object, uuid(00000000-0000-0000-0000-000000000000), pointer_default(unique)] interface IVssWriterComponentsExt : IVssWriterComponents {} /* , IUnknown {} */ [object, uuid(665c1d5f-c218-414d-a05d-7fef5f9d5c86), pointer_default(unique)] interface IVssBackupComponents : IUnknown { HRESULT GetWriterComponentsCount( [out] UINT *pcComponents); HRESULT GetWriterComponents( [in] UINT iWriter, [out] IVssWriterComponentsExt **ppWriter); HRESULT InitializeForBackup( [in, defaultvalue(NULL)] BSTR bstrXML); HRESULT SetBackupState( [in] boolean bSelectComponents, [in] boolean bBackupBootableSystemState, [in] VSS_BACKUP_TYPE backupType, [in, defaultvalue(0)] boolean bPartialFileSupport); HRESULT InitializeForRestore( [in] BSTR bstrXML); HRESULT SetRestoreState( [in] VSS_RESTORE_TYPE restoreType); HRESULT GatherWriterMetadata( [out] IVssAsync **pAsync); HRESULT GetWriterMetadataCount( [out] UINT *pcWriters); HRESULT GetWriterMetadata( [in] UINT iWriter, [out] VSS_ID *pidInstance, [out] IVssExamineWriterMetadata **ppMetadata); HRESULT FreeWriterMetadata(); HRESULT AddComponent( [in] VSS_ID instanceId, [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName); HRESULT PrepareForBackup( [out] IVssAsync **ppAsync); HRESULT AbortBackup(); HRESULT GatherWriterStatus( [out] IVssAsync **pAsync); HRESULT GetWriterStatusCount( [out] UINT *pcWriters); HRESULT FreeWriterStatus(); HRESULT GetWriterStatus( [in] UINT iWriter, [out] VSS_ID *pidInstance, [out] VSS_ID *pidWriter, [out] BSTR *pbstrWriter, [out] VSS_WRITER_STATE *pnStatus, [out] HRESULT *phResultFailure); HRESULT SetBackupSucceeded( [in] VSS_ID instanceId, [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] boolean bSucceded); HRESULT SetBackupOptions( [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] LPCWSTR wszBackupOptions); HRESULT SetSelectedForRestore( [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] boolean bSelectedForRestore); HRESULT SetRestoreOptions( [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] LPCWSTR wszRestoreOptions); HRESULT SetAdditionalRestores( [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] boolean bAdditionalRestores); HRESULT SetPreviousBackupStamp( [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] LPCWSTR wszPreviousBackupStamp); HRESULT SaveAsXML( [in] BSTR *pbstrXML); HRESULT BackupComplete( [out] IVssAsync **ppAsync); HRESULT AddAlternativeLocationMapping( [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE componentType, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] LPCWSTR wszPath, [in] LPCWSTR wszFilespec, [in] boolean bRecursive, [in] LPCWSTR wszDestination); HRESULT AddRestoreSubcomponent( [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE componentType, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] LPCWSTR wszSubComponentLogicalPath, [in] LPCWSTR wszSubComponentName, [in] boolean bRepair); HRESULT SetFileRestoreStatus( [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] VSS_FILE_RESTORE_STATUS status); HRESULT AddNewTarget( [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] LPCWSTR wszPath, [in] LPCWSTR wszFileName, [in] boolean bRecursive, [in] LPCWSTR wszAlternatePath); HRESULT SetRangesFilePath( [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] UINT iPartialFile, [in] LPCWSTR wszRangesFile); HRESULT PreRestore( [out] IVssAsync **ppAsync); HRESULT PostRestore( [out] IVssAsync **ppAsync); HRESULT SetContext( [in] LONG lContext); HRESULT StartSnapshotSet( [out] VSS_ID *pSnapshotSetId); HRESULT AddToSnapshotSet( [in] VSS_PWSZ pwszVolumeName, [in] VSS_ID ProviderId, [out] VSS_ID *pidSnapshot); HRESULT DoSnapshotSet( [out] IVssAsync **ppAsync); HRESULT DeleteSnapshots( [in] VSS_ID SourceObjectId, [in] VSS_OBJECT_TYPE eSourceObjectType, [in] WINBOOL bForceDelete, [in] LONG *plDeletedSnapshots, [in] VSS_ID *pNondeletedSnapshotID); HRESULT ImportSnapshots( [out] IVssAsync **ppAsync); HRESULT BreakSnapshotSet( [in] VSS_ID SnapshotSetId); HRESULT GetSnapshotProperties( [in] VSS_ID SnapshotId, [out] VSS_SNAPSHOT_PROP *pProp); HRESULT Query( [in] VSS_ID QueriedObjectId, [in] VSS_OBJECT_TYPE eQueriedObjectType, [in] VSS_OBJECT_TYPE eReturnedObjectsType, [in] IVssEnumObject **ppEnum); HRESULT IsVolumeSupported( [in] VSS_ID ProviderId, [in] VSS_PWSZ pwszVolumeName, [in] WINBOOL *pbSupportedByThisProvider); HRESULT DisableWriterClasses( [in] const VSS_ID *rgWriterClassId, [in] UINT cClassId); HRESULT EnableWriterClasses( [in] const VSS_ID *rgWriterClassId, [in] UINT cClassId); HRESULT DisableWriterInstances( [in] const VSS_ID *rgWriterInstanceId, [in] UINT cInstanceId); HRESULT ExposeSnapshot( [in] VSS_ID SnapshotId, [in] VSS_PWSZ wszPathFromRoot, [in] LONG lAttributes, [in] VSS_PWSZ wszExpose, [out] VSS_PWSZ *pwszExposed); HRESULT RevertToSnapshot( [in] VSS_ID SnapshotId, [in] WINBOOL bForceDismount); HRESULT QueryRevertStatus( [in] VSS_PWSZ pwszVolume, [out] IVssAsync **ppAsync); } [object, uuid(963f03ad-9e4c-4a34-ac15-e4b6174e5036), pointer_default(unique)] interface IVssBackupComponentsEx : IVssBackupComponents { HRESULT GetWriterMetadataEx( [in] UINT iWriter, [out] VSS_ID *pidInstance, [out] IVssExamineWriterMetadataEx **ppMetadata); HRESULT SetSelectedForRestoreEx( [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] boolean bSelectedForRestore, [in] VSS_ID instanceId); } [object, uuid(acfe2b3a-22c9-4ef8-bd03-2f9ca230084e), pointer_default(unique)] interface IVssBackupComponentsEx2 : IVssBackupComponentsEx { HRESULT UnexposeSnapshot( [in] VSS_ID snapshotId); HRESULT SetAuthoritativeRestore( [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] boolean bAuth); HRESULT SetRollForward( [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] VSS_ROLLFORWARD_TYPE rollType, [in] LPCWSTR wszRollForwardPoint); HRESULT SetRestoreName( [in] VSS_ID writerId, [in] VSS_COMPONENT_TYPE ct, [in] LPCWSTR wszLogicalPath, [in] LPCWSTR wszComponentName, [in] LPCWSTR wszRestoreName); HRESULT BreakSnapshotSetEx( [in] VSS_ID SnapshotSetID, [in] DWORD dwBreakFlags, [out] IVssAsync **ppAsync); HRESULT PreFastRecovery( [in] VSS_ID SnapshotSetID, [in] DWORD dwPreFastRecoveryFlags, [out] IVssAsync **ppAsync); HRESULT FastRecovery( [in] VSS_ID SnapshotSetID, [in] DWORD dwFastRecoveryFlags, [out] IVssAsync **ppAsync); } [object, uuid(c191bfbc-b602-4675-8bd1-67d642f529d5), pointer_default(unique)] interface IVssBackupComponentsEx3 : IVssBackupComponentsEx2 { HRESULT GetWriterStatusEx( [in] UINT iWriter, [out] VSS_ID *pidInstance, [out] VSS_ID *pidWriter, [out] BSTR *pbstrWriter, [out] VSS_WRITER_STATE *pnStatus, [out] HRESULT *phrFailureWriter, [out, defaultvalue(NULL)] HRESULT *phrApplication, [out, defaultvalue(NULL)] BSTR *pbstrApplicationMessage); HRESULT AddSnapshotToRecoverySet( [in] VSS_ID snapshotId, [in] DWORD dwFlags, [in, defaultvalue(NULL)] VSS_PWSZ pwszDestinationVolume); HRESULT RecoverSet( [in] DWORD dwFlags, [out] IVssAsync **ppAsync); HRESULT GetSessionId( [out] VSS_ID *idSession); } [object, uuid(f434c2fd-b553-4961-a9f9-a8e90b673e53), pointer_default(unique)] interface IVssBackupComponentsEx4 : IVssBackupComponentsEx3 { HRESULT GetRootAndLogicalPrefixPaths( [in] VSS_PWSZ pwszFilePath, [out] VSS_PWSZ *ppwszRootPath, [out] VSS_PWSZ *ppwszLogicalPrefix, [in, defaultvalue(FALSE)] WINBOOL bNormalizeFQDNforRootPath); } cpp_quote("#define VSS_SW_BOOTABLE_STATE (1 << 0)") cpp_quote("HRESULT STDAPICALLTYPE CreateVssBackupComponentsInternal(IVssBackupComponents **ppBackup);") cpp_quote("HRESULT STDAPICALLTYPE CreateVssExamineWriterMetadataInternal(BSTR bstrXML, IVssExamineWriterMetadata **ppMetadata);") cpp_quote("HRESULT APIENTRY IsVolumeSnapshottedInternal(VSS_PWSZ pwszVolumeName, WINBOOL *pbSnapshotsPresent, LONG *plSnapshotCapability);") cpp_quote("void APIENTRY VssFreeSnapshotPropertiesInternal(VSS_SNAPSHOT_PROP *pProp);") cpp_quote("HRESULT APIENTRY GetProviderMgmtInterfaceInternal(VSS_ID ProviderId, IID InterfaceId, IUnknown **ppItf);") cpp_quote("HRESULT APIENTRY ShouldBlockRevertInternal(LPCWSTR wszVolumeName, boolean *pbBlock);") cpp_quote("static __inline HRESULT CreateVssBackupComponents(IVssBackupComponents **ppBackup) { return CreateVssBackupComponentsInternal(ppBackup); }") cpp_quote("static __inline HRESULT CreateVssExamineWriterMetadata(BSTR bstrXML, IVssExamineWriterMetadata **ppMetadata) { return CreateVssExamineWriterMetadataInternal(bstrXML, ppMetadata); }") cpp_quote("static __inline HRESULT IsVolumeSnapshotted(VSS_PWSZ pwszVolumeName, WINBOOL *pbSnapshotsPresent, LONG *plSnapshotCapability) { return IsVolumeSnapshottedInternal(pwszVolumeName, pbSnapshotsPresent, plSnapshotCapability); }") cpp_quote("static __inline void VssFreeSnapshotProperties(VSS_SNAPSHOT_PROP *pProp) { return VssFreeSnapshotPropertiesInternal(pProp); }") cpp_quote("static __inline HRESULT GetProviderMgmtInterface(VSS_ID ProviderId, IID InterfaceId, IUnknown **ppItf) { return GetProviderMgmtInterfaceInternal(ProviderId, InterfaceId, ppItf); }") cpp_quote("static __inline HRESULT ShouldBlockRevert(LPCWSTR wszVolumeName, boolean *pbBlock) { return ShouldBlockRevertInternal(wszVolumeName, pbBlock); }") cpp_quote("#endif /* WINAPI_PARTITION_DESKTOP */")