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 24 typedef 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 31 typedef enum VSS_COMPONENT_TYPE { 32 VSS_CT_UNDEFINED = 0, 33 VSS_CT_DATABASE = 1, 34 VSS_CT_FILEGROUP = 2 35 } VSS_COMPONENT_TYPE; 36 37 typedef 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 44 typedef 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 52 typedef 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 64 typedef 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 71 typedef 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 79 typedef 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) 89 HRESULT WINAPI CreateVssExpressWriterInternal( 90 IVssExpressWriter **ppWriter 91 ); 92 93 FORCEINLINE 94 HRESULT 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 105 DECLARE_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 146 DECLARE_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 175 DECLARE_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 214 DECLARE_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 251 DECLARE_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 276 DECLARE_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 379 DECLARE_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 499 DECLARE_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 626 DECLARE_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 650 DECLARE_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 */ 673 class CVssWriter { 674 protected: 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); 692 public: 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 751 class 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 775 class 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