1/** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6#ifndef _INC_VSWRITER 7#define _INC_VSWRITER 8 9 typedef enum VSS_COMPONENT_FLAGS { 10 VSS_CF_BACKUP_RECOVERY = 0x00000001, 11 VSS_CF_APP_ROLLBACK_RECOVERY = 0x00000002, 12 VSS_CF_NOT_SYSTEM_STATE = 0x00000004 13 } VSS_COMPONENT_FLAGS; 14 15 /* http://msdn.microsoft.com/en-us/library/aa384976%28v=VS.85%29.aspx */ 16 typedef enum VSS_USAGE_TYPE { 17 VSS_UT_UNDEFINED = 0, 18 VSS_UT_BOOTABLESYSTEMSTATE = 1, 19 VSS_UT_SYSTEMSERVICE = 2, 20 VSS_UT_USERDATA = 3, 21 VSS_UT_OTHER = 4 22 } VSS_USAGE_TYPE; 23 24typedef enum VSS_ALTERNATE_WRITER_STATE { 25 VSS_AWS_UNDEFINED = 0, 26 VSS_AWS_NO_ALTERNATE_WRITER = 1, 27 VSS_AWS_ALTERNATE_WRITER_EXISTS = 2, 28 VSS_AWS_THIS_IS_ALTERNATE_WRITER = 3 29} VSS_ALTERNATE_WRITER_STATE; 30 31typedef enum VSS_COMPONENT_TYPE { 32 VSS_CT_UNDEFINED = 0, 33 VSS_CT_DATABASE = 1, 34 VSS_CT_FILEGROUP = 2 35} VSS_COMPONENT_TYPE; 36 37typedef enum VSS_FILE_RESTORE_STATUS { 38 VSS_RS_UNDEFINED = 0, 39 VSS_RS_NONE = 1, 40 VSS_RS_ALL = 2, 41 VSS_RS_FAILED = 3 42} VSS_FILE_RESTORE_STATUS; 43 44typedef enum VSS_RESTORE_TARGET { 45 VSS_RT_UNDEFINED = 0, 46 VSS_RT_ORIGINAL = 1, 47 VSS_RT_ALTERNATE = 2, 48 VSS_RT_DIRECTED = 3, 49 VSS_RT_ORIGINAL_LOCATION = 4 50} VSS_RESTORE_TARGET; 51 52typedef enum VSS_RESTOREMETHOD_ENUM { 53 VSS_RME_UNDEFINED = 0, 54 VSS_RME_RESTORE_IF_NOT_THERE = 1, 55 VSS_RME_RESTORE_IF_CAN_REPLACE = 2, 56 VSS_RME_STOP_RESTORE_START = 3, 57 VSS_RME_RESTORE_TO_ALTERNATE_LOCATION = 4, 58 VSS_RME_RESTORE_AT_REBOOT = 5, 59 VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE = 6, 60 VSS_RME_CUSTOM = 7, 61 VSS_RME_RESTORE_STOP_START = 8 62} VSS_RESTOREMETHOD_ENUM; 63 64typedef enum VSS_SOURCE_TYPE { 65 VSS_ST_UNDEFINED = 0, 66 VSS_ST_TRANSACTEDDB = 1, 67 VSS_ST_NONTRANSACTEDDB = 2, 68 VSS_ST_OTHER = 3 69} VSS_SOURCE_TYPE; 70 71typedef enum VSS_SUBSCRIBE_MASK { 72 VSS_SM_POST_SNAPSHOT_FLAG = 0x00000001, 73 VSS_SM_BACKUP_EVENTS_FLAG = 0x00000002, 74 VSS_SM_RESTORE_EVENTS_FLAG = 0x00000004, 75 VSS_SM_IO_THROTTLING_FLAG = 0x00000008, 76 VSS_SM_ALL_FLAGS = 0xffffffff 77} VSS_SUBSCRIBE_MASK; 78 79typedef enum VSS_WRITERRESTORE_ENUM { 80 VSS_WRE_UNDEFINED = 0, 81 VSS_WRE_NEVER = 1, 82 VSS_WRE_IF_REPLACE_FAILS = 2, 83 VSS_WRE_ALWAYS = 3 84} VSS_WRITERRESTORE_ENUM; 85 86#include <vss.h> 87 88#if (_WIN32_WINNT >= 0x601) 89HRESULT WINAPI CreateVssExpressWriterInternal( 90 IVssExpressWriter **ppWriter 91); 92 93FORCEINLINE 94HRESULT WINAPI CreateVssExpressWriter( 95 IVssExpressWriter **ppWriter 96){return CreateVssExpressWriterInternal(ppWriter);} 97 98#undef INTERFACE 99#define INTERFACE IVssCreateExpressWriterMetadata 100#ifdef __GNUC__ 101#warning COM interfaces layout in this header has not been verified. 102#warning COM interfaces with incorrect layout may not work at all. 103__MINGW_BROKEN_INTERFACE(INTERFACE) 104#endif 105DECLARE_INTERFACE_(IVssCreateExpressWriterMetadata,IUnknown) 106{ 107 BEGIN_INTERFACE 108 109 /* IUnknown methods */ 110 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 111 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 112 STDMETHOD_(ULONG, Release)(THIS) PURE; 113 114 /* IVssCreateExpressWriterMetadata methods */ 115 STDMETHOD_(HRESULT,AddComponent)(THIS_ VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszCaption,const BYTE *pbIcon,UINT cbIcon,BOOLEAN bRestoreMetadata,BOOLEAN bNotifyOnBackupComplete,BOOLEAN bSelectable,BOOLEAN bSelectableForRestore,DWORD dwComponentFlags) PURE; 116 STDMETHOD_(HRESULT,AddComponentDependency)(THIS_ LPCWSTR wszForLogicalPath,LPCWSTR wszForComponentName,VSS_ID onWriterId,LPCWSTR wszOnLogicalPath,LPCWSTR wszOnComponentName) PURE; 117 STDMETHOD_(HRESULT,AddExcludeFiles)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive) PURE; 118 STDMETHOD_(HRESULT,SaveAsXML)(THIS_ BSTR *pbstrXML) PURE; 119 STDMETHOD_(HRESULT,SetBackupSchema)(THIS_ DWORD dsSchemaMask) PURE; 120 STDMETHOD_(HRESULT,SetRestoreMethod)(THIS_ VSS_RESTOREMETHOD_ENUM method,LPCWSTR wszService,LPCWSTR wszUserProcedure,VSS_WRITERRESTORE_ENUM wreWriterRestore,BOOLEAN bRebootRequired) PURE; 121 122 END_INTERFACE 123}; 124#ifdef COBJMACROS 125#define IVssCreateExpressWriterMetadata_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 126#define IVssCreateExpressWriterMetadata_AddRef(This) (This)->lpVtbl->AddRef(This) 127#define IVssCreateExpressWriterMetadata_Release(This) (This)->lpVtbl->Release(This) 128#define IVssCreateExpressWriterMetadata_AddComponent(This,componentType,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags) (This)->lpVtbl->AddComponent(This,componentType,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags) 129#define IVssCreateExpressWriterMetadata_AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask) (This)->lpVtbl->AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask) 130#define IVssCreateExpressWriterMetadata_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML) 131#define IVssCreateExpressWriterMetadata_SetBackupSchema(This,dsSchemaMask) (This)->lpVtbl->SetBackupSchema(This,dsSchemaMask) 132#define IVssCreateExpressWriterMetadata_SetRestoreMethod(This,method,wszService,wszUserProcedure,wreWriterRestore,bRebootRequired) (This)->lpVtbl->SetRestoreMethod(This,method,wszService,wszUserProcedure,wreWriterRestore,bRebootRequired) 133#endif /*COBJMACROS*/ 134 135#endif /*(_WIN32_WINNT >= 0x601)*/ 136 137#ifdef __cplusplus 138/* Is a C++ interface instead of a COM */ 139#undef INTERFACE 140#define INTERFACE IVssCreateWriterMetadata 141#ifdef __GNUC__ 142#warning COM interfaces layout in this header has not been verified. 143#warning COM interfaces with incorrect layout may not work at all. 144__MINGW_BROKEN_INTERFACE(INTERFACE) 145#endif 146DECLARE_INTERFACE_(IVssCreateWriterMetadata,IUnknown) 147{ 148 BEGIN_INTERFACE 149 150 /* IUnknown methods */ 151 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 152 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 153 STDMETHOD_(ULONG, Release)(THIS) PURE; 154 155 /* IVssCreateWriterMetadata methods */ 156 STDMETHOD_(HRESULT,AddAlternateLocationMapping)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive,LPCWSTR wszDestination) PURE; 157 STDMETHOD_(HRESULT,AddComponent)(THIS_ VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszCaption,const BYTE *pbIcon,UINT cbIcon,BOOLEAN bRestoreMetadata,BOOLEAN bNotifyOnBackupComplete,BOOLEAN bSelectable,BOOLEAN bSelectableForRestore,DWORD dwComponentFlags) PURE; 158 STDMETHOD_(HRESULT,AddComponentDependency)(THIS_ LPCWSTR wszForLogicalPath,LPCWSTR wszForComponentName,VSS_ID onWriterId,LPCWSTR wszOnLogicalPath,LPCWSTR wszOnComponentName) PURE; 159 STDMETHOD_(HRESULT,AddDatabaseFiles)(THIS_ LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) PURE; 160 STDMETHOD_(HRESULT,AddDatabaseLogFiles)(THIS_ LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) PURE; 161 STDMETHOD_(HRESULT,AddExcludeFiles)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive) PURE; 162 STDMETHOD_(HRESULT,AddFilesToFileGroup)(THIS_ LPCWSTR wszLogicalPath,LPCWSTR wszGroupName,LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive,LPCWSTR wszAlternatePath,DWORD dwBackupTypeMask) PURE; 163 STDMETHOD_(HRESULT,AddIncludeFiles)(THIS) PURE; 164 STDMETHOD_(HRESULT,GetDocument)(THIS) PURE; 165 STDMETHOD_(HRESULT,SaveAsXML)(THIS_ BSTR *pbstrXML) PURE; 166 STDMETHOD_(HRESULT,SetBackupSchema)(THIS_ DWORD dsSchemaMask) PURE; 167 STDMETHOD_(HRESULT,SetRestoreMethod)(THIS_ VSS_RESTOREMETHOD_ENUM method,LPCWSTR wszService,LPCWSTR wszUserProcedure,VSS_WRITERRESTORE_ENUM wreWriterRestore,BOOLEAN bRebootRequired) PURE; 168 169 END_INTERFACE 170}; 171 172#if (_WIN32_WINNT >= 0x600) 173#undef INTERFACE 174#define INTERFACE IVssCreateWriterMetadataEx 175DECLARE_INTERFACE_(IVssCreateWriterMetadataEx,IVssCreateWriterMetadata) 176{ 177 BEGIN_INTERFACE 178 179 /* IUnknown methods */ 180 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 181 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 182 STDMETHOD_(ULONG, Release)(THIS) PURE; 183 184 /* IVssCreateWriterMetadata methods */ 185 STDMETHOD_(HRESULT,AddAlternateLocationMapping)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive,LPCWSTR wszDestination) PURE; 186 STDMETHOD_(HRESULT,AddComponent)(THIS_ VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszCaption,const BYTE *pbIcon,UINT cbIcon,BOOLEAN bRestoreMetadata,BOOLEAN bNotifyOnBackupComplete,BOOLEAN bSelectable,BOOLEAN bSelectableForRestore,DWORD dwComponentFlags) PURE; 187 STDMETHOD_(HRESULT,AddComponentDependency)(THIS_ LPCWSTR wszForLogicalPath,LPCWSTR wszForComponentName,VSS_ID onWriterId,LPCWSTR wszOnLogicalPath,LPCWSTR wszOnComponentName) PURE; 188 STDMETHOD_(HRESULT,AddDatabaseFiles)(THIS_ LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) PURE; 189 STDMETHOD_(HRESULT,AddDatabaseLogFiles)(THIS_ LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) PURE; 190 STDMETHOD_(HRESULT,AddExcludeFiles)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive) PURE; 191 STDMETHOD_(HRESULT,AddFilesToFileGroup)(THIS_ LPCWSTR wszLogicalPath,LPCWSTR wszGroupName,LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive,LPCWSTR wszAlternatePath,DWORD dwBackupTypeMask) PURE; 192 STDMETHOD_(HRESULT,AddIncludeFiles)(THIS) PURE; /*Not supported*/ 193 STDMETHOD_(HRESULT,GetDocument)(THIS) PURE; /*Not supported*/ 194 STDMETHOD_(HRESULT,SaveAsXML)(THIS_ BSTR *pbstrXML) PURE; 195 STDMETHOD_(HRESULT,SetBackupSchema)(THIS_ DWORD dsSchemaMask) PURE; 196 STDMETHOD_(HRESULT,SetRestoreMethod)(THIS_ VSS_RESTOREMETHOD_ENUM method,LPCWSTR wszService,LPCWSTR wszUserProcedure,VSS_WRITERRESTORE_ENUM wreWriterRestore,BOOLEAN bRebootRequired) PURE; 197 198 /* IVssCreateWriterMetadataEx methods */ 199 STDMETHOD_(HRESULT,AddExcludeFilesFromSnapshot)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive) PURE; 200 201 END_INTERFACE 202}; 203#endif /*(_WIN32_WINNT >= 0x600)*/ 204#endif /*__cplusplus*/ 205 206#if (_WIN32_WINNT >= 0x601) 207#undef INTERFACE 208#define INTERFACE IVssExpressWriter 209#ifdef __GNUC__ 210#warning COM interfaces layout in this header has not been verified. 211#warning COM interfaces with incorrect layout may not work at all. 212__MINGW_BROKEN_INTERFACE(INTERFACE) 213#endif 214DECLARE_INTERFACE_(IVssExpressWriter,IUnknown) 215{ 216 BEGIN_INTERFACE 217 218 /* IUnknown methods */ 219 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 220 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 221 STDMETHOD_(ULONG, Release)(THIS) PURE; 222 223 /* IVssExpressWriter methods */ 224 STDMETHOD_(HRESULT,CreateMetadata)(THIS_ VSS_ID writerId,LPCWSTR writerName,VSS_USAGE_TYPE usageType,DWORD versionMajor,DWORD versionMinor,DWORD reserved,IVssCreateWriterMetadataEx **ppMetadata) PURE; 225 STDMETHOD_(HRESULT,Load)(THIS_ LPCWSTR metadata,DWORD reserved) PURE; 226 STDMETHOD_(HRESULT,Register)(THIS) PURE; 227 STDMETHOD_(HRESULT,Unregister)(THIS_ VSS_ID writerId) PURE; 228 229 END_INTERFACE 230}; 231#ifdef COBJMACROS 232#define IVssExpressWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 233#define IVssExpressWriter_AddRef(This) (This)->lpVtbl->AddRef(This) 234#define IVssExpressWriter_Release(This) (This)->lpVtbl->Release(This) 235#define IVssExpressWriter_CreateMetadata(This,writerId,writerName,usageType,versionMajor,versionMinor,reserved,ppMetadata) (This)->lpVtbl->CreateMetadata(This,writerId,writerName,usageType,versionMajor,versionMinor,reserved,ppMetadata) 236#define IVssExpressWriter_Load(This,metadata,reserved) (This)->lpVtbl->Load(This,metadata,reserved) 237#define IVssExpressWriter_Register() (This)->lpVtbl->Register(This) 238#define IVssExpressWriter_Unregister(This,writerId) (This)->lpVtbl->Unregister(This,writerId) 239#endif /*COBJMACROS*/ 240#endif /*(_WIN32_WINNT >= 0x601)*/ 241 242#ifdef __cplusplus 243/* Is a C++ interface instead of a COM */ 244#undef INTERFACE 245#define INTERFACE IVssWriterComponents 246#ifdef __GNUC__ 247#warning COM interfaces layout in this header has not been verified. 248#warning COM interfaces with incorrect layout may not work at all. 249__MINGW_BROKEN_INTERFACE(INTERFACE) 250#endif 251DECLARE_INTERFACE_(IVssWriterComponents,IUnknown) 252{ 253 BEGIN_INTERFACE 254 255 /* IUnknown methods */ 256 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 257 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 258 STDMETHOD_(ULONG, Release)(THIS) PURE; 259 260 /* IVssWriterComponents methods */ 261 STDMETHOD_(HRESULT,GetComponent)(THIS_ UINT iComponent,IVssComponent **ppComponent) PURE; 262 STDMETHOD_(HRESULT,GetComponentCount)(THIS_ UINT *pcComponents) PURE; 263 STDMETHOD_(HRESULT,GetWriterInfo)(THIS_ VSS_ID *pidInstance,VSS_ID *pidWriter) PURE; 264 265 END_INTERFACE 266}; 267#endif /*__cplusplus*/ 268 269#undef INTERFACE 270#define INTERFACE IVssComponent 271#ifdef __GNUC__ 272#warning COM interfaces layout in this header has not been verified. 273#warning COM interfaces with incorrect layout may not work at all. 274__MINGW_BROKEN_INTERFACE(INTERFACE) 275#endif 276DECLARE_INTERFACE_(IVssComponent,IUnknown) 277{ 278 BEGIN_INTERFACE 279 280 /* IUnknown methods */ 281 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 282 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 283 STDMETHOD_(ULONG, Release)(THIS) PURE; 284 285 /* IVssComponent methods */ 286 STDMETHOD_(HRESULT,GetLogicalPath)(THIS_ BSTR *pbstrPath) PURE; 287 STDMETHOD_(HRESULT,GetComponentType)(THIS_ VSS_COMPONENT_TYPE *pType) PURE; 288 STDMETHOD_(HRESULT,GetComponentName)(THIS_ BSTR *pwszName) PURE; 289 STDMETHOD_(HRESULT,GetBackupSucceeded)(THIS_ BOOLEAN *pbSucceeded) PURE; 290 STDMETHOD_(HRESULT,GetAlternateLocationMappingCount)(THIS_ UINT *pcMappings) PURE; 291 STDMETHOD_(HRESULT,GetAlternateLocationMapping)(THIS_ UINT iMapping,const IVssWMFiledesc **ppMapping) PURE; 292 STDMETHOD_(HRESULT,SetBackupMetadata)(THIS_ BSTR bstrMetadata) PURE; 293 STDMETHOD_(HRESULT,GetBackupMetadata)(THIS_ BSTR *pbstrMetadata) PURE; 294 STDMETHOD_(HRESULT,AddPartialFile)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilename,LPCWSTR wszRanges,LPCWSTR wszMetadata) PURE; 295 STDMETHOD_(HRESULT,GetPartialFileCount)(THIS_ UINT *pcPartialFiles) PURE; 296 STDMETHOD_(HRESULT,GetPartialFile)(THIS_ UINT iPartialFile,BSTR *pbstrPath,BSTR *pbstrFilename,BSTR *pbstrRange,BSTR *pbstrMetadata) PURE; 297 STDMETHOD_(HRESULT,IsSelectedForRestore)(THIS_ BOOLEAN *pbSelectedForRestore) PURE; 298 STDMETHOD_(HRESULT,GetAdditionalRestores)(THIS_ BOOLEAN *pbAdditionalRestores) PURE; 299 STDMETHOD_(HRESULT,GetNewTargetCount)(THIS_ UINT *pcNewTarget) PURE; 300 STDMETHOD_(HRESULT,GetNewTarget)(THIS_ UINT iMapping,IVssWMFiledesc **ppFiledesc) PURE; 301 STDMETHOD_(HRESULT,AddDirectedTarget)(THIS_ LPCWSTR wszSourcePath,LPCWSTR wszSourceFilename,LPCWSTR wszSourceRangeList,LPCWSTR wszDestinationPath,LPCWSTR wszDestinationFilename,LPCWSTR wszDestinationRangeList) PURE; 302 STDMETHOD_(HRESULT,GetDirectedTargetCount)(THIS_ UINT *pcDirectedTarget) PURE; 303 STDMETHOD_(HRESULT,GetDirectedTarget)(THIS_ UINT iDirectedTarget,BSTR *pbstrSourcePath,BSTR *pbstrSourceFileName,BSTR *pbstrSourceRangeList,BSTR *pbstrDestinationPath,BSTR *pbstrDestinationFilename,BSTR *pbstrDestinationRangeList) PURE; 304 STDMETHOD_(HRESULT,SetRestoreMetadata)(THIS_ LPCWSTR wszRestoreMetadata) PURE; 305 STDMETHOD_(HRESULT,GetRestoreMetadata)(THIS_ BSTR *pbstrRestoreMetadata) PURE; 306 STDMETHOD_(HRESULT,SetRestoreTarget)(THIS_ VSS_RESTORE_TARGET target) PURE; 307 STDMETHOD_(HRESULT,GetRestoreTarget)(THIS_ VSS_RESTORE_TARGET *pTarget) PURE; 308 STDMETHOD_(HRESULT,SetPreRestoreFailureMsg)(THIS_ LPCWSTR wszPreRestoreFailureMsg) PURE; 309 STDMETHOD_(HRESULT,GetPreRestoreFailureMsg)(THIS_ BSTR *pbstrPreRestoreFailureMsg) PURE; 310 STDMETHOD_(HRESULT,SetPostRestoreFailureMsg)(THIS_ LPCWSTR wszPostRestoreFailureMsg) PURE; 311 STDMETHOD_(HRESULT,GetPostRestoreFailureMsg)(THIS_ BSTR *pbstrPostRestoreFailureMsg) PURE; 312 STDMETHOD_(HRESULT,SetBackupStamp)(THIS_ LPCWSTR wszBackupStamp) PURE; 313 STDMETHOD_(HRESULT,GetBackupStamp)(THIS_ BSTR *pbstrBackupStamp) PURE; 314 STDMETHOD_(HRESULT,GetPreviousBackupStamp)(THIS_ BSTR *pbstrBackupStamp) PURE; 315 STDMETHOD_(HRESULT,GetBackupOptions)(THIS_ BSTR *pbstrBackupOptions) PURE; 316 STDMETHOD_(HRESULT,GetRestoreOptions)(THIS_ BSTR *pbstrRestoreOptions) PURE; 317 STDMETHOD_(HRESULT,GetRestoreSubcomponentCount)(THIS_ UINT *pcRestoreSubcomponent) PURE; 318 STDMETHOD_(HRESULT,GetRestoreSubcomponent)(THIS_ UINT iComponent,BSTR *pbstrLogicalPath,BSTR *pbstrComponentName,BOOLEAN *pbRepair) PURE; 319 STDMETHOD_(HRESULT,GetFileRestoreStatus)(THIS_ VSS_FILE_RESTORE_STATUS *pStatus) PURE; 320 STDMETHOD_(HRESULT,AddDifferencedFilesByLastModifyTime)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,FILETIME ftLastModifyTime) PURE; 321 STDMETHOD_(HRESULT,AddDifferencedFilesByLastModifyLSN)(THIS) PURE; 322 STDMETHOD_(HRESULT,GetDifferencedFilesCount)(THIS_ UINT *pcDifferencedFiles) PURE; 323 STDMETHOD_(HRESULT,GetDifferencedFile)(THIS_ UINT iDifferencedFile,BSTR *pbstrPath,BSTR *pbstrFilespec,WINBOOL *pbRecursive,BSTR *pbstrLsnString,FILETIME *pftLastModifyTime) PURE; 324 325 END_INTERFACE 326}; 327#ifdef COBJMACROS 328#define IVssComponent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 329#define IVssComponent_AddRef(This) (This)->lpVtbl->AddRef(This) 330#define IVssComponent_Release(This) (This)->lpVtbl->Release(This) 331#define IVssComponent_GetLogicalPath(This,pbstrPath) (This)->lpVtbl->GetLogicalPath(This,pbstrPath) 332#define IVssComponent_GetComponentType(This,pType) (This)->lpVtbl->GetComponentType(This,pType) 333#define IVssComponent_GetComponentName(This,pwszName) (This)->lpVtbl->GetComponentName(This,pwszName) 334#define IVssComponent_GetBackupSucceeded(This,pbSucceeded) (This)->lpVtbl->GetBackupSucceeded(This,pbSucceeded) 335#define IVssComponent_GetAlternateLocationMappingCount(This,pcMappings) (This)->lpVtbl->GetAlternateLocationMappingCount(This,pcMappings) 336#define IVssComponent_GetAlternateLocationMapping(This,iMapping,ppMapping) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppMapping) 337#define IVssComponent_SetBackupMetadata(This,bstrMetadata) (This)->lpVtbl->SetBackupMetadata(This,bstrMetadata) 338#define IVssComponent_GetBackupMetadata(This,pbstrMetadata) (This)->lpVtbl->GetBackupMetadata(This,pbstrMetadata) 339#define IVssComponent_AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata) (This)->lpVtbl->AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata) 340#define IVssComponent_GetPartialFileCount(This,pcPartialFiles) (This)->lpVtbl->GetPartialFileCount(This,pcPartialFiles) 341#define IVssComponent_GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata) (This)->lpVtbl->GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata) 342#define IVssComponent_IsSelectedForRestore(This,pbSelectedForRestore) (This)->lpVtbl->IsSelectedForRestore(This,pbSelectedForRestore) 343#define IVssComponent_GetAdditionalRestores(This,pbAdditionalRestores) (This)->lpVtbl->GetAdditionalRestores(This,pbAdditionalRestores) 344#define IVssComponent_GetNewTargetCount(This,pcNewTarget) (This)->lpVtbl->GetNewTargetCount(This,pcNewTarget) 345#define IVssComponent_GetNewTarget(This,iMapping,ppFiledesc) (This)->lpVtbl->GetNewTarget(This,iMapping,ppFiledesc) 346#define IVssComponent_AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList) (This)->lpVtbl->AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList) 347#define IVssComponent_GetDirectedTargetCount(This,pcDirectedTarget) (This)->lpVtbl->GetDirectedTargetCount(This,pcDirectedTarget) 348#define IVssComponent_GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList) (This)->lpVtbl->GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList) 349#define IVssComponent_SetRestoreMetadata(This,wszRestoreMetadata) (This)->lpVtbl->SetRestoreMetadata(This,wszRestoreMetadata) 350#define IVssComponent_GetRestoreMetadata(This,pbstrRestoreMetadata) (This)->lpVtbl->GetRestoreMetadata(This,pbstrRestoreMetadata) 351#define IVssComponent_SetRestoreTarget(This,target) (This)->lpVtbl->SetRestoreTarget(This,target) 352#define IVssComponent_GetRestoreTarget(This,pTarget) (This)->lpVtbl->GetRestoreTarget(This,pTarget) 353#define IVssComponent_SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg) (This)->lpVtbl->SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg) 354#define IVssComponent_GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg) (This)->lpVtbl->GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg) 355#define IVssComponent_SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg) (This)->lpVtbl->SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg) 356#define IVssComponent_GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg) (This)->lpVtbl->GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg) 357#define IVssComponent_SetBackupStamp(This,wszBackupStamp) (This)->lpVtbl->SetBackupStamp(This,wszBackupStamp) 358#define IVssComponent_GetBackupStamp(This,pbstrBackupStamp) (This)->lpVtbl->GetBackupStamp(This,pbstrBackupStamp) 359#define IVssComponent_GetPreviousBackupStamp(This,pbstrBackupStamp) (This)->lpVtbl->GetPreviousBackupStamp(This,pbstrBackupStamp) 360#define IVssComponent_GetBackupOptions(This,pbstrBackupOptions) (This)->lpVtbl->GetBackupOptions(This,pbstrBackupOptions) 361#define IVssComponent_GetRestoreOptions(This,pbstrRestoreOptions) (This)->lpVtbl->GetRestoreOptions(This,pbstrRestoreOptions) 362#define IVssComponent_GetRestoreSubcomponentCount(This,pcRestoreSubcomponent) (This)->lpVtbl->GetRestoreSubcomponentCount(This,pcRestoreSubcomponent) 363#define IVssComponent_GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair) (This)->lpVtbl->GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair) 364#define IVssComponent_GetFileRestoreStatus(This,pStatus) (This)->lpVtbl->GetFileRestoreStatus(This,pStatus) 365#define IVssComponent_AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime) (This)->lpVtbl->AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime) 366#define IVssComponent_AddDifferencedFilesByLastModifyLSN() (This)->lpVtbl->AddDifferencedFilesByLastModifyLSN(This) 367#define IVssComponent_GetDifferencedFilesCount(This,pcDifferencedFiles) (This)->lpVtbl->GetDifferencedFilesCount(This,pcDifferencedFiles) 368#define IVssComponent_GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime) (This)->lpVtbl->GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime) 369#endif /*COBJMACROS*/ 370 371#if (_WIN32_WINNT >= 0x600) 372#undef INTERFACE 373#define INTERFACE IVssComponentEx 374#ifdef __GNUC__ 375#warning COM interfaces layout in this header has not been verified. 376#warning COM interfaces with incorrect layout may not work at all. 377__MINGW_BROKEN_INTERFACE(INTERFACE) 378#endif 379DECLARE_INTERFACE_(IVssComponentEx,IVssComponent) 380{ 381 BEGIN_INTERFACE 382 383 /* IUnknown methods */ 384 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 385 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 386 STDMETHOD_(ULONG, Release)(THIS) PURE; 387 388 /* IVssComponent methods */ 389 STDMETHOD_(HRESULT,GetLogicalPath)(THIS_ BSTR *pbstrPath) PURE; 390 STDMETHOD_(HRESULT,GetComponentType)(THIS_ VSS_COMPONENT_TYPE *pType) PURE; 391 STDMETHOD_(HRESULT,GetComponentName)(THIS_ BSTR *pwszName) PURE; 392 STDMETHOD_(HRESULT,GetBackupSucceeded)(THIS_ BOOLEAN *pbSucceeded) PURE; 393 STDMETHOD_(HRESULT,GetAlternateLocationMappingCount)(THIS_ UINT *pcMappings) PURE; 394 STDMETHOD_(HRESULT,GetAlternateLocationMapping)(THIS_ UINT iMapping,const IVssWMFiledesc **ppMapping) PURE; 395 STDMETHOD_(HRESULT,SetBackupMetadata)(THIS_ BSTR bstrMetadata) PURE; 396 STDMETHOD_(HRESULT,GetBackupMetadata)(THIS_ BSTR *pbstrMetadata) PURE; 397 STDMETHOD_(HRESULT,AddPartialFile)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilename,LPCWSTR wszRanges,LPCWSTR wszMetadata) PURE; 398 STDMETHOD_(HRESULT,GetPartialFileCount)(THIS_ UINT *pcPartialFiles) PURE; 399 STDMETHOD_(HRESULT,GetPartialFile)(THIS_ UINT iPartialFile,BSTR *pbstrPath,BSTR *pbstrFilename,BSTR *pbstrRange,BSTR *pbstrMetadata) PURE; 400 STDMETHOD_(HRESULT,IsSelectedForRestore)(THIS_ BOOLEAN *pbSelectedForRestore) PURE; 401 STDMETHOD_(HRESULT,GetAdditionalRestores)(THIS_ BOOLEAN *pbAdditionalRestores) PURE; 402 STDMETHOD_(HRESULT,GetNewTargetCount)(THIS_ UINT *pcNewTarget) PURE; 403 STDMETHOD_(HRESULT,GetNewTarget)(THIS_ UINT iMapping,IVssWMFiledesc **ppFiledesc) PURE; 404 STDMETHOD_(HRESULT,AddDirectedTarget)(THIS_ LPCWSTR wszSourcePath,LPCWSTR wszSourceFilename,LPCWSTR wszSourceRangeList,LPCWSTR wszDestinationPath,LPCWSTR wszDestinationFilename,LPCWSTR wszDestinationRangeList) PURE; 405 STDMETHOD_(HRESULT,GetDirectedTargetCount)(THIS_ UINT *pcDirectedTarget) PURE; 406 STDMETHOD_(HRESULT,GetDirectedTarget)(THIS_ UINT iDirectedTarget,BSTR *pbstrSourcePath,BSTR *pbstrSourceFileName,BSTR *pbstrSourceRangeList,BSTR *pbstrDestinationPath,BSTR *pbstrDestinationFilename,BSTR *pbstrDestinationRangeList) PURE; 407 STDMETHOD_(HRESULT,SetRestoreMetadata)(THIS_ LPCWSTR wszRestoreMetadata) PURE; 408 STDMETHOD_(HRESULT,GetRestoreMetadata)(THIS_ BSTR *pbstrRestoreMetadata) PURE; 409 STDMETHOD_(HRESULT,SetRestoreTarget)(THIS_ VSS_RESTORE_TARGET target) PURE; 410 STDMETHOD_(HRESULT,GetRestoreTarget)(THIS_ VSS_RESTORE_TARGET *pTarget) PURE; 411 STDMETHOD_(HRESULT,SetPreRestoreFailureMsg)(THIS_ LPCWSTR wszPreRestoreFailureMsg) PURE; 412 STDMETHOD_(HRESULT,GetPreRestoreFailureMsg)(THIS_ BSTR *pbstrPreRestoreFailureMsg) PURE; 413 STDMETHOD_(HRESULT,SetPostRestoreFailureMsg)(THIS_ LPCWSTR wszPostRestoreFailureMsg) PURE; 414 STDMETHOD_(HRESULT,GetPostRestoreFailureMsg)(THIS_ BSTR *pbstrPostRestoreFailureMsg) PURE; 415 STDMETHOD_(HRESULT,SetBackupStamp)(THIS_ LPCWSTR wszBackupStamp) PURE; 416 STDMETHOD_(HRESULT,GetBackupStamp)(THIS_ BSTR *pbstrBackupStamp) PURE; 417 STDMETHOD_(HRESULT,GetPreviousBackupStamp)(THIS_ BSTR *pbstrBackupStamp) PURE; 418 STDMETHOD_(HRESULT,GetBackupOptions)(THIS_ BSTR *pbstrBackupOptions) PURE; 419 STDMETHOD_(HRESULT,GetRestoreOptions)(THIS_ BSTR *pbstrRestoreOptions) PURE; 420 STDMETHOD_(HRESULT,GetRestoreSubcomponentCount)(THIS_ UINT *pcRestoreSubcomponent) PURE; 421 STDMETHOD_(HRESULT,GetRestoreSubcomponent)(THIS_ UINT iComponent,BSTR *pbstrLogicalPath,BSTR *pbstrComponentName,BOOLEAN *pbRepair) PURE; 422 STDMETHOD_(HRESULT,GetFileRestoreStatus)(THIS_ VSS_FILE_RESTORE_STATUS *pStatus) PURE; 423 STDMETHOD_(HRESULT,AddDifferencedFilesByLastModifyTime)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,FILETIME ftLastModifyTime) PURE; 424 STDMETHOD_(HRESULT,AddDifferencedFilesByLastModifyLSN)(THIS) PURE; 425 STDMETHOD_(HRESULT,GetDifferencedFilesCount)(THIS_ UINT *pcDifferencedFiles) PURE; 426 STDMETHOD_(HRESULT,GetDifferencedFile)(THIS_ UINT iDifferencedFile,BSTR *pbstrPath,BSTR *pbstrFilespec,WINBOOL *pbRecursive,BSTR *pbstrLsnString,FILETIME *pftLastModifyTime) PURE; 427 428 /* IVssComponentEx methods */ 429 STDMETHOD_(HRESULT,SetPrepareForBackupFailureMsg)(THIS_ LPCWSTR wszFailureMsg) PURE; 430 STDMETHOD_(HRESULT,SetPostSnapshotFailureMsg)(THIS_ LPCWSTR wszFailureMsg) PURE; 431 STDMETHOD_(HRESULT,GetPrepareForBackupFailureMsg)(THIS_ BSTR *pbstrFailureMsg) PURE; 432 STDMETHOD_(HRESULT,GetPostSnapshotFailureMsg)(THIS_ BSTR *pbstrFailureMsg) PURE; 433 STDMETHOD_(HRESULT,GetAuthoritativeRestore)(THIS_ BOOLEAN *pbAuth) PURE; 434 STDMETHOD_(HRESULT,GetRollForward)(THIS_ VSS_ROLLFORWARD_TYPE *pRollType,BSTR *pbstrPoint) PURE; 435 STDMETHOD_(HRESULT,GetRestoreName)(THIS_ BSTR *pbstrName) PURE; 436 437 END_INTERFACE 438}; 439#ifdef COBJMACROS 440#define IVssComponentEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 441#define IVssComponentEx_AddRef(This) (This)->lpVtbl->AddRef(This) 442#define IVssComponentEx_Release(This) (This)->lpVtbl->Release(This) 443#define IVssComponentEx_GetLogicalPath(This,pbstrPath) (This)->lpVtbl->GetLogicalPath(This,pbstrPath) 444#define IVssComponentEx_GetComponentType(This,pType) (This)->lpVtbl->GetComponentType(This,pType) 445#define IVssComponentEx_GetComponentName(This,pwszName) (This)->lpVtbl->GetComponentName(This,pwszName) 446#define IVssComponentEx_GetBackupSucceeded(This,pbSucceeded) (This)->lpVtbl->GetBackupSucceeded(This,pbSucceeded) 447#define IVssComponentEx_GetAlternateLocationMappingCount(This,pcMappings) (This)->lpVtbl->GetAlternateLocationMappingCount(This,pcMappings) 448#define IVssComponentEx_GetAlternateLocationMapping(This,iMapping,ppMapping) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppMapping) 449#define IVssComponentEx_SetBackupMetadata(This,bstrMetadata) (This)->lpVtbl->SetBackupMetadata(This,bstrMetadata) 450#define IVssComponentEx_GetBackupMetadata(This,pbstrMetadata) (This)->lpVtbl->GetBackupMetadata(This,pbstrMetadata) 451#define IVssComponentEx_AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata) (This)->lpVtbl->AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata) 452#define IVssComponentEx_GetPartialFileCount(This,pcPartialFiles) (This)->lpVtbl->GetPartialFileCount(This,pcPartialFiles) 453#define IVssComponentEx_GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata) (This)->lpVtbl->GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata) 454#define IVssComponentEx_IsSelectedForRestore(This,pbSelectedForRestore) (This)->lpVtbl->IsSelectedForRestore(This,pbSelectedForRestore) 455#define IVssComponentEx_GetAdditionalRestores(This,pbAdditionalRestores) (This)->lpVtbl->GetAdditionalRestores(This,pbAdditionalRestores) 456#define IVssComponentEx_GetNewTargetCount(This,pcNewTarget) (This)->lpVtbl->GetNewTargetCount(This,pcNewTarget) 457#define IVssComponentEx_GetNewTarget(This,iMapping,ppFiledesc) (This)->lpVtbl->GetNewTarget(This,iMapping,ppFiledesc) 458#define IVssComponentEx_AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList) (This)->lpVtbl->AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList) 459#define IVssComponentEx_GetDirectedTargetCount(This,pcDirectedTarget) (This)->lpVtbl->GetDirectedTargetCount(This,pcDirectedTarget) 460#define IVssComponentEx_GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList) (This)->lpVtbl->GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList) 461#define IVssComponentEx_SetRestoreMetadata(This,wszRestoreMetadata) (This)->lpVtbl->SetRestoreMetadata(This,wszRestoreMetadata) 462#define IVssComponentEx_GetRestoreMetadata(This,pbstrRestoreMetadata) (This)->lpVtbl->GetRestoreMetadata(This,pbstrRestoreMetadata) 463#define IVssComponentEx_SetRestoreTarget(This,target) (This)->lpVtbl->SetRestoreTarget(This,target) 464#define IVssComponentEx_GetRestoreTarget(This,pTarget) (This)->lpVtbl->GetRestoreTarget(This,pTarget) 465#define IVssComponentEx_SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg) (This)->lpVtbl->SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg) 466#define IVssComponentEx_GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg) (This)->lpVtbl->GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg) 467#define IVssComponentEx_SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg) (This)->lpVtbl->SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg) 468#define IVssComponentEx_GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg) (This)->lpVtbl->GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg) 469#define IVssComponentEx_SetBackupStamp(This,wszBackupStamp) (This)->lpVtbl->SetBackupStamp(This,wszBackupStamp) 470#define IVssComponentEx_GetBackupStamp(This,pbstrBackupStamp) (This)->lpVtbl->GetBackupStamp(This,pbstrBackupStamp) 471#define IVssComponentEx_GetPreviousBackupStamp(This,pbstrBackupStamp) (This)->lpVtbl->GetPreviousBackupStamp(This,pbstrBackupStamp) 472#define IVssComponentEx_GetBackupOptions(This,pbstrBackupOptions) (This)->lpVtbl->GetBackupOptions(This,pbstrBackupOptions) 473#define IVssComponentEx_GetRestoreOptions(This,pbstrRestoreOptions) (This)->lpVtbl->GetRestoreOptions(This,pbstrRestoreOptions) 474#define IVssComponentEx_GetRestoreSubcomponentCount(This,pcRestoreSubcomponent) (This)->lpVtbl->GetRestoreSubcomponentCount(This,pcRestoreSubcomponent) 475#define IVssComponentEx_GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair) (This)->lpVtbl->GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair) 476#define IVssComponentEx_GetFileRestoreStatus(This,pStatus) (This)->lpVtbl->GetFileRestoreStatus(This,pStatus) 477#define IVssComponentEx_AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime) (This)->lpVtbl->AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime) 478#define IVssComponentEx_AddDifferencedFilesByLastModifyLSN() (This)->lpVtbl->AddDifferencedFilesByLastModifyLSN(This) 479#define IVssComponentEx_GetDifferencedFilesCount(This,pcDifferencedFiles) (This)->lpVtbl->GetDifferencedFilesCount(This,pcDifferencedFiles) 480#define IVssComponentEx_GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime) (This)->lpVtbl->GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime) 481#define IVssComponentEx_SetPrepareForBackupFailureMsg(This,wszFailureMsg) (This)->lpVtbl->SetPrepareForBackupFailureMsg(This,wszFailureMsg) 482#define IVssComponentEx_SetPostSnapshotFailureMsg(This,wszFailureMsg) (This)->lpVtbl->SetPostSnapshotFailureMsg(This,wszFailureMsg) 483#define IVssComponentEx_GetPrepareForBackupFailureMsg(This,pbstrFailureMsg) (This)->lpVtbl->GetPrepareForBackupFailureMsg(This,pbstrFailureMsg) 484#define IVssComponentEx_GetPostSnapshotFailureMsg(This,pbstrFailureMsg) (This)->lpVtbl->GetPostSnapshotFailureMsg(This,pbstrFailureMsg) 485#define IVssComponentEx_GetAuthoritativeRestore(This,pbAuth) (This)->lpVtbl->GetAuthoritativeRestore(This,pbAuth) 486#define IVssComponentEx_GetRollForward(This,pRollType,pbstrPoint) (This)->lpVtbl->GetRollForward(This,pRollType,pbstrPoint) 487#define IVssComponentEx_GetRestoreName(This,pbstrName) (This)->lpVtbl->GetRestoreName(This,pbstrName) 488#endif /*COBJMACROS*/ 489#endif /*(_WIN32_WINNT >= 0x600)*/ 490 491#if (_WIN32_WINNT >= 0x601) 492#undef INTERFACE 493#define INTERFACE IVssComponentEx2 494#ifdef __GNUC__ 495#warning COM interfaces layout in this header has not been verified. 496#warning COM interfaces with incorrect layout may not work at all. 497__MINGW_BROKEN_INTERFACE(INTERFACE) 498#endif 499DECLARE_INTERFACE_(IVssComponentEx2,IVssComponentEx) 500{ 501 BEGIN_INTERFACE 502 503 /* IUnknown methods */ 504 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 505 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 506 STDMETHOD_(ULONG, Release)(THIS) PURE; 507 508 /* IVssComponent methods */ 509 STDMETHOD_(HRESULT,GetLogicalPath)(THIS_ BSTR *pbstrPath) PURE; 510 STDMETHOD_(HRESULT,GetComponentType)(THIS_ VSS_COMPONENT_TYPE *pType) PURE; 511 STDMETHOD_(HRESULT,GetComponentName)(THIS_ BSTR *pwszName) PURE; 512 STDMETHOD_(HRESULT,GetBackupSucceeded)(THIS_ BOOLEAN *pbSucceeded) PURE; 513 STDMETHOD_(HRESULT,GetAlternateLocationMappingCount)(THIS_ UINT *pcMappings) PURE; 514 STDMETHOD_(HRESULT,GetAlternateLocationMapping)(THIS_ UINT iMapping,const IVssWMFiledesc **ppMapping) PURE; 515 STDMETHOD_(HRESULT,SetBackupMetadata)(THIS_ BSTR bstrMetadata) PURE; 516 STDMETHOD_(HRESULT,GetBackupMetadata)(THIS_ BSTR *pbstrMetadata) PURE; 517 STDMETHOD_(HRESULT,AddPartialFile)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilename,LPCWSTR wszRanges,LPCWSTR wszMetadata) PURE; 518 STDMETHOD_(HRESULT,GetPartialFileCount)(THIS_ UINT *pcPartialFiles) PURE; 519 STDMETHOD_(HRESULT,GetPartialFile)(THIS_ UINT iPartialFile,BSTR *pbstrPath,BSTR *pbstrFilename,BSTR *pbstrRange,BSTR *pbstrMetadata) PURE; 520 STDMETHOD_(HRESULT,IsSelectedForRestore)(THIS_ BOOLEAN *pbSelectedForRestore) PURE; 521 STDMETHOD_(HRESULT,GetAdditionalRestores)(THIS_ BOOLEAN *pbAdditionalRestores) PURE; 522 STDMETHOD_(HRESULT,GetNewTargetCount)(THIS_ UINT *pcNewTarget) PURE; 523 STDMETHOD_(HRESULT,GetNewTarget)(THIS_ UINT iMapping,IVssWMFiledesc **ppFiledesc) PURE; 524 STDMETHOD_(HRESULT,AddDirectedTarget)(THIS_ LPCWSTR wszSourcePath,LPCWSTR wszSourceFilename,LPCWSTR wszSourceRangeList,LPCWSTR wszDestinationPath,LPCWSTR wszDestinationFilename,LPCWSTR wszDestinationRangeList) PURE; 525 STDMETHOD_(HRESULT,GetDirectedTargetCount)(THIS_ UINT *pcDirectedTarget) PURE; 526 STDMETHOD_(HRESULT,GetDirectedTarget)(THIS_ UINT iDirectedTarget,BSTR *pbstrSourcePath,BSTR *pbstrSourceFileName,BSTR *pbstrSourceRangeList,BSTR *pbstrDestinationPath,BSTR *pbstrDestinationFilename,BSTR *pbstrDestinationRangeList) PURE; 527 STDMETHOD_(HRESULT,SetRestoreMetadata)(THIS_ LPCWSTR wszRestoreMetadata) PURE; 528 STDMETHOD_(HRESULT,GetRestoreMetadata)(THIS_ BSTR *pbstrRestoreMetadata) PURE; 529 STDMETHOD_(HRESULT,SetRestoreTarget)(THIS_ VSS_RESTORE_TARGET target) PURE; 530 STDMETHOD_(HRESULT,GetRestoreTarget)(THIS_ VSS_RESTORE_TARGET *pTarget) PURE; 531 STDMETHOD_(HRESULT,SetPreRestoreFailureMsg)(THIS_ LPCWSTR wszPreRestoreFailureMsg) PURE; 532 STDMETHOD_(HRESULT,GetPreRestoreFailureMsg)(THIS_ BSTR *pbstrPreRestoreFailureMsg) PURE; 533 STDMETHOD_(HRESULT,SetPostRestoreFailureMsg)(THIS_ LPCWSTR wszPostRestoreFailureMsg) PURE; 534 STDMETHOD_(HRESULT,GetPostRestoreFailureMsg)(THIS_ BSTR *pbstrPostRestoreFailureMsg) PURE; 535 STDMETHOD_(HRESULT,SetBackupStamp)(THIS_ LPCWSTR wszBackupStamp) PURE; 536 STDMETHOD_(HRESULT,GetBackupStamp)(THIS_ BSTR *pbstrBackupStamp) PURE; 537 STDMETHOD_(HRESULT,GetPreviousBackupStamp)(THIS_ BSTR *pbstrBackupStamp) PURE; 538 STDMETHOD_(HRESULT,GetBackupOptions)(THIS_ BSTR *pbstrBackupOptions) PURE; 539 STDMETHOD_(HRESULT,GetRestoreOptions)(THIS_ BSTR *pbstrRestoreOptions) PURE; 540 STDMETHOD_(HRESULT,GetRestoreSubcomponentCount)(THIS_ UINT *pcRestoreSubcomponent) PURE; 541 STDMETHOD_(HRESULT,GetRestoreSubcomponent)(THIS_ UINT iComponent,BSTR *pbstrLogicalPath,BSTR *pbstrComponentName,BOOLEAN *pbRepair) PURE; 542 STDMETHOD_(HRESULT,GetFileRestoreStatus)(THIS_ VSS_FILE_RESTORE_STATUS *pStatus) PURE; 543 STDMETHOD_(HRESULT,AddDifferencedFilesByLastModifyTime)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,FILETIME ftLastModifyTime) PURE; 544 STDMETHOD_(HRESULT,AddDifferencedFilesByLastModifyLSN)(THIS) PURE; 545 STDMETHOD_(HRESULT,GetDifferencedFilesCount)(THIS_ UINT *pcDifferencedFiles) PURE; 546 STDMETHOD_(HRESULT,GetDifferencedFile)(THIS_ UINT iDifferencedFile,BSTR *pbstrPath,BSTR *pbstrFilespec,WINBOOL *pbRecursive,BSTR *pbstrLsnString,FILETIME *pftLastModifyTime) PURE; 547 548 /* IVssComponentEx methods */ 549 STDMETHOD_(HRESULT,SetPrepareForBackupFailureMsg)(THIS_ LPCWSTR wszFailureMsg) PURE; 550 STDMETHOD_(HRESULT,SetPostSnapshotFailureMsg)(THIS_ LPCWSTR wszFailureMsg) PURE; 551 STDMETHOD_(HRESULT,GetPrepareForBackupFailureMsg)(THIS_ BSTR *pbstrFailureMsg) PURE; 552 STDMETHOD_(HRESULT,GetPostSnapshotFailureMsg)(THIS_ BSTR *pbstrFailureMsg) PURE; 553 STDMETHOD_(HRESULT,GetAuthoritativeRestore)(THIS_ BOOLEAN *pbAuth) PURE; 554 STDMETHOD_(HRESULT,GetRollForward)(THIS_ VSS_ROLLFORWARD_TYPE *pRollType,BSTR *pbstrPoint) PURE; 555 STDMETHOD_(HRESULT,GetRestoreName)(THIS_ BSTR *pbstrName) PURE; 556 557 /* IVssComponentEx2 methods */ 558 STDMETHOD_(HRESULT,GetFailure)(THIS_ HRESULT *phr,HRESULT *phrApplication,BSTR *pbstrApplicationMessage,DWORD *pdwReserved) PURE; 559 STDMETHOD_(HRESULT,SetFailure)(THIS_ HRESULT hr,HRESULT hrApplication,LPCWSTR wszApplicationMessage,DWORD dwReserved) PURE; 560 561 END_INTERFACE 562}; 563#ifdef COBJMACROS 564#define IVssComponentEx2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 565#define IVssComponentEx2_AddRef(This) (This)->lpVtbl->AddRef(This) 566#define IVssComponentEx2_Release(This) (This)->lpVtbl->Release(This) 567#define IVssComponentEx2_GetLogicalPath(This,pbstrPath) (This)->lpVtbl->GetLogicalPath(This,pbstrPath) 568#define IVssComponentEx2_GetComponentType(This,pType) (This)->lpVtbl->GetComponentType(This,pType) 569#define IVssComponentEx2_GetComponentName(This,pwszName) (This)->lpVtbl->GetComponentName(This,pwszName) 570#define IVssComponentEx2_GetBackupSucceeded(This,pbSucceeded) (This)->lpVtbl->GetBackupSucceeded(This,pbSucceeded) 571#define IVssComponentEx2_GetAlternateLocationMappingCount(This,pcMappings) (This)->lpVtbl->GetAlternateLocationMappingCount(This,pcMappings) 572#define IVssComponentEx2_GetAlternateLocationMapping(This,iMapping,ppMapping) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppMapping) 573#define IVssComponentEx2_SetBackupMetadata(This,bstrMetadata) (This)->lpVtbl->SetBackupMetadata(This,bstrMetadata) 574#define IVssComponentEx2_GetBackupMetadata(This,pbstrMetadata) (This)->lpVtbl->GetBackupMetadata(This,pbstrMetadata) 575#define IVssComponentEx2_AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata) (This)->lpVtbl->AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata) 576#define IVssComponentEx2_GetPartialFileCount(This,pcPartialFiles) (This)->lpVtbl->GetPartialFileCount(This,pcPartialFiles) 577#define IVssComponentEx2_GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata) (This)->lpVtbl->GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata) 578#define IVssComponentEx2_IsSelectedForRestore(This,pbSelectedForRestore) (This)->lpVtbl->IsSelectedForRestore(This,pbSelectedForRestore) 579#define IVssComponentEx2_GetAdditionalRestores(This,pbAdditionalRestores) (This)->lpVtbl->GetAdditionalRestores(This,pbAdditionalRestores) 580#define IVssComponentEx2_GetNewTargetCount(This,pcNewTarget) (This)->lpVtbl->GetNewTargetCount(This,pcNewTarget) 581#define IVssComponentEx2_GetNewTarget(This,iMapping,ppFiledesc) (This)->lpVtbl->GetNewTarget(This,iMapping,ppFiledesc) 582#define IVssComponentEx2_AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList) (This)->lpVtbl->AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList) 583#define IVssComponentEx2_GetDirectedTargetCount(This,pcDirectedTarget) (This)->lpVtbl->GetDirectedTargetCount(This,pcDirectedTarget) 584#define IVssComponentEx2_GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList) (This)->lpVtbl->GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList) 585#define IVssComponentEx2_SetRestoreMetadata(This,wszRestoreMetadata) (This)->lpVtbl->SetRestoreMetadata(This,wszRestoreMetadata) 586#define IVssComponentEx2_GetRestoreMetadata(This,pbstrRestoreMetadata) (This)->lpVtbl->GetRestoreMetadata(This,pbstrRestoreMetadata) 587#define IVssComponentEx2_SetRestoreTarget(This,target) (This)->lpVtbl->SetRestoreTarget(This,target) 588#define IVssComponentEx2_GetRestoreTarget(This,pTarget) (This)->lpVtbl->GetRestoreTarget(This,pTarget) 589#define IVssComponentEx2_SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg) (This)->lpVtbl->SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg) 590#define IVssComponentEx2_GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg) (This)->lpVtbl->GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg) 591#define IVssComponentEx2_SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg) (This)->lpVtbl->SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg) 592#define IVssComponentEx2_GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg) (This)->lpVtbl->GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg) 593#define IVssComponentEx2_SetBackupStamp(This,wszBackupStamp) (This)->lpVtbl->SetBackupStamp(This,wszBackupStamp) 594#define IVssComponentEx2_GetBackupStamp(This,pbstrBackupStamp) (This)->lpVtbl->GetBackupStamp(This,pbstrBackupStamp) 595#define IVssComponentEx2_GetPreviousBackupStamp(This,pbstrBackupStamp) (This)->lpVtbl->GetPreviousBackupStamp(This,pbstrBackupStamp) 596#define IVssComponentEx2_GetBackupOptions(This,pbstrBackupOptions) (This)->lpVtbl->GetBackupOptions(This,pbstrBackupOptions) 597#define IVssComponentEx2_GetRestoreOptions(This,pbstrRestoreOptions) (This)->lpVtbl->GetRestoreOptions(This,pbstrRestoreOptions) 598#define IVssComponentEx2_GetRestoreSubcomponentCount(This,pcRestoreSubcomponent) (This)->lpVtbl->GetRestoreSubcomponentCount(This,pcRestoreSubcomponent) 599#define IVssComponentEx2_GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair) (This)->lpVtbl->GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair) 600#define IVssComponentEx2_GetFileRestoreStatus(This,pStatus) (This)->lpVtbl->GetFileRestoreStatus(This,pStatus) 601#define IVssComponentEx2_AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime) (This)->lpVtbl->AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime) 602#define IVssComponentEx2_AddDifferencedFilesByLastModifyLSN() (This)->lpVtbl->AddDifferencedFilesByLastModifyLSN(This) 603#define IVssComponentEx2_GetDifferencedFilesCount(This,pcDifferencedFiles) (This)->lpVtbl->GetDifferencedFilesCount(This,pcDifferencedFiles) 604#define IVssComponentEx2_GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime) (This)->lpVtbl->GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime) 605#define IVssComponentEx2_SetPrepareForBackupFailureMsg(This,wszFailureMsg) (This)->lpVtbl->SetPrepareForBackupFailureMsg(This,wszFailureMsg) 606#define IVssComponentEx2_SetPostSnapshotFailureMsg(This,wszFailureMsg) (This)->lpVtbl->SetPostSnapshotFailureMsg(This,wszFailureMsg) 607#define IVssComponentEx2_GetPrepareForBackupFailureMsg(This,pbstrFailureMsg) (This)->lpVtbl->GetPrepareForBackupFailureMsg(This,pbstrFailureMsg) 608#define IVssComponentEx2_GetPostSnapshotFailureMsg(This,pbstrFailureMsg) (This)->lpVtbl->GetPostSnapshotFailureMsg(This,pbstrFailureMsg) 609#define IVssComponentEx2_GetAuthoritativeRestore(This,pbAuth) (This)->lpVtbl->GetAuthoritativeRestore(This,pbAuth) 610#define IVssComponentEx2_GetRollForward(This,pRollType,pbstrPoint) (This)->lpVtbl->GetRollForward(This,pRollType,pbstrPoint) 611#define IVssComponentEx2_GetRestoreName(This,pbstrName) (This)->lpVtbl->GetRestoreName(This,pbstrName) 612#define IVssComponentEx2_GetFailure(This,phr,phrApplication,pbstrApplicationMessage,pdwReserved) (This)->lpVtbl->GetFailure(This,phr,phrApplication,pbstrApplicationMessage,pdwReserved) 613#define IVssComponentEx2_SetFailure(This,hr,hrApplication,wszApplicationMessage,dwReserved) (This)->lpVtbl->SetFailure(This,hr,hrApplication,wszApplicationMessage,dwReserved) 614#endif /*COBJMACROS*/ 615#endif /*(_WIN32_WINNT >= 0x601)*/ 616 617#ifdef __cplusplus 618/* Is a C++ interface instead of a COM */ 619#undef INTERFACE 620#define INTERFACE IVssWMDependency 621#ifdef __GNUC__ 622#warning COM interfaces layout in this header has not been verified. 623#warning COM interfaces with incorrect layout may not work at all. 624__MINGW_BROKEN_INTERFACE(INTERFACE) 625#endif 626DECLARE_INTERFACE_(IVssWMDependency,IUnknown) 627{ 628 BEGIN_INTERFACE 629 630 /* IUnknown methods */ 631 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 632 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 633 STDMETHOD_(ULONG, Release)(THIS) PURE; 634 635 /* IVssWMDependency methods */ 636 STDMETHOD_(HRESULT,GetWriterId)(THIS_ VSS_ID *pWriterId) PURE; 637 STDMETHOD_(HRESULT,GetLogicalPath)(THIS_ BSTR *pbstrLogicalPath) PURE; 638 STDMETHOD_(HRESULT,GetComponentName)(THIS_ BSTR *pbstrComponentName) PURE; 639 640 END_INTERFACE 641}; 642 643#undef INTERFACE 644#define INTERFACE IVssWMFiledesc 645#ifdef __GNUC__ 646#warning COM interfaces layout in this header has not been verified. 647#warning COM interfaces with incorrect layout may not work at all. 648__MINGW_BROKEN_INTERFACE(INTERFACE) 649#endif 650DECLARE_INTERFACE_(IVssWMFiledesc,IUnknown) 651{ 652 BEGIN_INTERFACE 653 654 /* IUnknown methods */ 655 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 656 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 657 STDMETHOD_(ULONG, Release)(THIS) PURE; 658 659 /* IVssWMFiledesc methods */ 660 STDMETHOD_(HRESULT,GetPath)(THIS_ BSTR *pbstrPath) PURE; 661 STDMETHOD_(HRESULT,GetFilespec)(THIS_ BSTR *pbstrFilespec) PURE; 662 STDMETHOD_(HRESULT,GetRecursive)(THIS_ BOOLEAN *pbRecursive) PURE; 663 STDMETHOD_(HRESULT,GetAlternateLocation)(THIS_ BSTR *pbstrAlternateLocation) PURE; 664 STDMETHOD_(HRESULT,GetBackupTypeMask)(THIS_ DWORD *pdwTypeMask) PURE; 665 666 END_INTERFACE 667}; 668#endif /*__cplusplus*/ 669 670#ifdef __cplusplus 671#if __MINGW_GNUC_PREREQ(4,6) 672/* We need __thiscall support */ 673class CVssWriter { 674protected: 675 bool WINAPI AreComponentsSelected() const; 676 VSS_BACKUP_TYPE WINAPI GetBackupType() const; 677 LONG WINAPI GetContext() const; 678 VSS_APPLICATION_LEVEL WINAPI GetCurrentLevel() const; 679 VSS_ID WINAPI GetCurrentSnapshotSetId() const; 680 LPCWSTR* WINAPI GetCurrentVolumeArray() const; 681 UINT WINAPI GetCurrentVolumeCount() const; 682 VSS_RESTORE_TYPE WINAPI GetRestoreType() const; 683 HRESULT WINAPI GetSnapshotDeviceName( 684 LPCWSTR wszOriginalVolume, 685 LPCWSTR *ppwszSnapshotDevice) const; 686 bool WINAPI IsBootableSystemStateBackedUp() const; 687 bool WINAPI IsPartialFileSupportEnabled() const; 688 bool WINAPI IsPathAffected( 689 LPCWSTR wszPath) const; 690 HRESULT WINAPI SetWriterFailure( 691 HRESULT hr); 692public: 693 //Pure virtuals 694 virtual bool WINAPI OnAbort() = 0; 695 virtual bool WINAPI OnFreeze() = 0; 696 virtual bool WINAPI OnPrepareSnapshot() = 0; 697 virtual bool WINAPI OnThaw() = 0; 698 //Virtuals 699 virtual __thiscall ~CVssWriter(); 700 virtual bool WINAPI OnBackupComplete( 701 IVssWriterComponents *pComponent); 702 virtual bool WINAPI OnBackupShutdown( 703 VSS_ID SnapshotSetId); 704 virtual bool WINAPI OnIdentify( 705 IVssCreateWriterMetadata *pMetadata); 706 virtual bool WINAPI OnPostRestore( 707 IVssWriterComponents *pComponent); 708 virtual bool WINAPI OnPostSnapshot( 709 IVssWriterComponents *pComponent); 710 virtual bool WINAPI OnPrepareBackup( 711 IVssWriterComponents *pComponent); 712 virtual bool WINAPI OnPreRestore( 713 IVssWriterComponents *pComponent); 714 //gendef says public: virtual bool __stdcall CVssWriter::OnBackOffIOOnVolume(unsigned short *,struct _GUID,struct _GUID) 715 //Method unsupported 716 virtual bool WINAPI OnBackOffIOOnVolume( 717 VSS_PWSZ _vss_pwsz, 718 VSS_ID _id1, 719 VSS_ID _id2); 720 //gendef says public: virtual bool __stdcall CVssWriter::OnContinueIOOnVolume(unsigned short *,struct _GUID,struct _GUID) 721 //Method unsupported 722 virtual bool WINAPI OnContinueIOOnVolume( 723 VSS_PWSZ _vss_pwsz, 724 VSS_ID _id1, 725 VSS_ID _id2); 726 //gendef says public: virtual bool __stdcall CVssWriter::OnVSSShutdown(void) 727 //Method unsupported 728 virtual bool WINAPI OnVssShutdown(); 729 //Non-virtuals 730 __thiscall CVssWriter(); 731 HRESULT WINAPI Initialize( 732 VSS_ID WriterId, 733 LPCWSTR WriterName, 734 VSS_USAGE_TYPE UsageType, 735 VSS_SOURCE_TYPE SourceType, 736 VSS_APPLICATION_LEVEL AppLevel, 737 DWORD dwTimeoutFreeze = 60000, 738 VSS_ALTERNATE_WRITER_STATE aws = VSS_AWS_NO_ALTERNATE_WRITER, 739 bool bIOThrottlingOnly = false, 740 LPCWSTR wszWriterInstanceName = NULL); 741 HRESULT WINAPI Subscribe( 742 DWORD dwEventFlags); 743 HRESULT WINAPI Unsubscribe(); 744 //gendef says public: long __stdcall CVssWriter::InstallAlternateWriter(struct _GUID,struct _GUID) 745 //Method unsupported 746 HRESULT WINAPI InstallAlternateWriter( 747 VSS_ID _id1, 748 VSS_ID _id2); 749}; 750 751class CVssWriterEx : public CVssWriter { 752 protected: 753 HRESULT WINAPI GetIdentifyInformation( 754 IVssExamineWriterMetadata **ppMetadata) const; 755 HRESULT WINAPI SubscribeEx( 756 DWORD dwUnsubscribeTimeout, 757 DWORD dwEventFlags); 758 public: 759 virtual bool WINAPI OnIdentifyEx( 760 IVssCreateWriterMetadataEx *pMetadata) const; 761 HRESULT WINAPI InitializeEx( 762 VSS_ID WriterId, 763 LPCWSTR wszWriterName, 764 DWORD dwMajorVersion, 765 DWORD dwMinorVersion, 766 VSS_USAGE_TYPE ut, 767 VSS_SOURCE_TYPE st, 768 VSS_APPLICATION_LEVEL nLevel, 769 DWORD dwTimeoutFreeze = 60000, 770 VSS_ALTERNATE_WRITER_STATE aws = VSS_AWS_NO_ALTERNATE_WRITER, 771 bool bIOThrottlingOnly = false, 772 LPCWSTR wszWriterInstanceName = NULL); 773}; 774 775class CVssWriterEx2: public CVssWriterEx { 776 public: 777 HRESULT WINAPI GetSessionId( 778 VSS_ID *idSession) const; 779 bool WINAPI IsWriterShuttingDown() const; 780 HRESULT WINAPI SetWriterFailureEx( 781 HRESULT hrWriter, 782 HRESULT hrApplication, 783 LPCWSTR wszApplicationMessage); 784}; 785#endif /*__MINGW_GNUC_PREREQ(4,6)*/ 786#endif /*__cplusplus*/ 787 788#include <vsbackup.h> 789 790#endif /*_INC_VSWRITER*/ 791