master
   1/*** Autogenerated by WIDL 10.4 from include/vsbackup.idl - Do not edit ***/
   2
   3#ifdef _WIN32
   4#ifndef __REQUIRED_RPCNDR_H_VERSION__
   5#define __REQUIRED_RPCNDR_H_VERSION__ 475
   6#endif
   7#include <rpc.h>
   8#include <rpcndr.h>
   9#endif
  10
  11#ifndef COM_NO_WINDOWS_H
  12#include <windows.h>
  13#include <ole2.h>
  14#endif
  15
  16#ifndef __vsbackup_h__
  17#define __vsbackup_h__
  18
  19/* Forward declarations */
  20
  21#ifndef __IVssWMComponent_FWD_DEFINED__
  22#define __IVssWMComponent_FWD_DEFINED__
  23typedef interface IVssWMComponent IVssWMComponent;
  24#ifdef __cplusplus
  25interface IVssWMComponent;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IVssExamineWriterMetadata_FWD_DEFINED__
  30#define __IVssExamineWriterMetadata_FWD_DEFINED__
  31typedef interface IVssExamineWriterMetadata IVssExamineWriterMetadata;
  32#ifdef __cplusplus
  33interface IVssExamineWriterMetadata;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IVssExamineWriterMetadataEx_FWD_DEFINED__
  38#define __IVssExamineWriterMetadataEx_FWD_DEFINED__
  39typedef interface IVssExamineWriterMetadataEx IVssExamineWriterMetadataEx;
  40#ifdef __cplusplus
  41interface IVssExamineWriterMetadataEx;
  42#endif /* __cplusplus */
  43#endif
  44
  45#ifndef __IVssExamineWriterMetadataEx2_FWD_DEFINED__
  46#define __IVssExamineWriterMetadataEx2_FWD_DEFINED__
  47typedef interface IVssExamineWriterMetadataEx2 IVssExamineWriterMetadataEx2;
  48#ifdef __cplusplus
  49interface IVssExamineWriterMetadataEx2;
  50#endif /* __cplusplus */
  51#endif
  52
  53#ifndef __IVssWriterComponentsExt_FWD_DEFINED__
  54#define __IVssWriterComponentsExt_FWD_DEFINED__
  55typedef interface IVssWriterComponentsExt IVssWriterComponentsExt;
  56#ifdef __cplusplus
  57interface IVssWriterComponentsExt;
  58#endif /* __cplusplus */
  59#endif
  60
  61#ifndef __IVssBackupComponents_FWD_DEFINED__
  62#define __IVssBackupComponents_FWD_DEFINED__
  63typedef interface IVssBackupComponents IVssBackupComponents;
  64#ifdef __cplusplus
  65interface IVssBackupComponents;
  66#endif /* __cplusplus */
  67#endif
  68
  69#ifndef __IVssBackupComponentsEx_FWD_DEFINED__
  70#define __IVssBackupComponentsEx_FWD_DEFINED__
  71typedef interface IVssBackupComponentsEx IVssBackupComponentsEx;
  72#ifdef __cplusplus
  73interface IVssBackupComponentsEx;
  74#endif /* __cplusplus */
  75#endif
  76
  77#ifndef __IVssBackupComponentsEx2_FWD_DEFINED__
  78#define __IVssBackupComponentsEx2_FWD_DEFINED__
  79typedef interface IVssBackupComponentsEx2 IVssBackupComponentsEx2;
  80#ifdef __cplusplus
  81interface IVssBackupComponentsEx2;
  82#endif /* __cplusplus */
  83#endif
  84
  85#ifndef __IVssBackupComponentsEx3_FWD_DEFINED__
  86#define __IVssBackupComponentsEx3_FWD_DEFINED__
  87typedef interface IVssBackupComponentsEx3 IVssBackupComponentsEx3;
  88#ifdef __cplusplus
  89interface IVssBackupComponentsEx3;
  90#endif /* __cplusplus */
  91#endif
  92
  93#ifndef __IVssBackupComponentsEx4_FWD_DEFINED__
  94#define __IVssBackupComponentsEx4_FWD_DEFINED__
  95typedef interface IVssBackupComponentsEx4 IVssBackupComponentsEx4;
  96#ifdef __cplusplus
  97interface IVssBackupComponentsEx4;
  98#endif /* __cplusplus */
  99#endif
 100
 101/* Headers for imported files */
 102
 103#include <oaidl.h>
 104#include <ocidl.h>
 105#include <vss.h>
 106#include <vswriter.h>
 107
 108#ifdef __cplusplus
 109extern "C" {
 110#endif
 111
 112#include <winapifamily.h>
 113#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 114typedef struct _VSS_COMPONENTINFO {
 115    VSS_COMPONENT_TYPE type;
 116    BSTR bstrLogicalPath;
 117    BSTR bstrComponentName;
 118    BSTR bstrCaption;
 119    BYTE *pbIcon;
 120    UINT cbIcon;
 121    boolean bRestoreMetadata;
 122    boolean bNotifyOnBackupComplete;
 123    boolean bSelectable;
 124    boolean bSelectableForRestore;
 125    DWORD dwComponentFlags;
 126    UINT cFileCount;
 127    UINT cDatabases;
 128    UINT cLogFiles;
 129    UINT cDependencies;
 130} VSS_COMPONENTINFO;
 131typedef const VSS_COMPONENTINFO *PVSSCOMPONENTINFO;
 132/*****************************************************************************
 133 * IVssWMComponent interface
 134 */
 135#ifndef __IVssWMComponent_INTERFACE_DEFINED__
 136#define __IVssWMComponent_INTERFACE_DEFINED__
 137
 138DEFINE_GUID(IID_IVssWMComponent, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
 139#if defined(__cplusplus) && !defined(CINTERFACE)
 140MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
 141IVssWMComponent : public IUnknown
 142{
 143    virtual HRESULT STDMETHODCALLTYPE GetComponentInfo(
 144        PVSSCOMPONENTINFO *ppInfo) = 0;
 145
 146    virtual HRESULT STDMETHODCALLTYPE FreeComponentInfo(
 147        PVSSCOMPONENTINFO pInfo) = 0;
 148
 149    virtual HRESULT STDMETHODCALLTYPE GetFile(
 150        UINT iFile,
 151        IVssWMFiledesc **ppFiledesc) = 0;
 152
 153    virtual HRESULT STDMETHODCALLTYPE GetDatabaseFile(
 154        UINT iDBFile,
 155        IVssWMFiledesc **ppFiledesc) = 0;
 156
 157    virtual HRESULT STDMETHODCALLTYPE GetDatabaseLogFile(
 158        UINT iDbLogFile,
 159        IVssWMFiledesc **ppFiledesc) = 0;
 160
 161    virtual HRESULT STDMETHODCALLTYPE GetDependency(
 162        UINT iDependency,
 163        IVssWMDependency **ppDependency) = 0;
 164
 165};
 166#ifdef __CRT_UUID_DECL
 167__CRT_UUID_DECL(IVssWMComponent, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00)
 168#endif
 169#else
 170typedef struct IVssWMComponentVtbl {
 171    BEGIN_INTERFACE
 172
 173    /*** IUnknown methods ***/
 174    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 175        IVssWMComponent *This,
 176        REFIID riid,
 177        void **ppvObject);
 178
 179    ULONG (STDMETHODCALLTYPE *AddRef)(
 180        IVssWMComponent *This);
 181
 182    ULONG (STDMETHODCALLTYPE *Release)(
 183        IVssWMComponent *This);
 184
 185    /*** IVssWMComponent methods ***/
 186    HRESULT (STDMETHODCALLTYPE *GetComponentInfo)(
 187        IVssWMComponent *This,
 188        PVSSCOMPONENTINFO *ppInfo);
 189
 190    HRESULT (STDMETHODCALLTYPE *FreeComponentInfo)(
 191        IVssWMComponent *This,
 192        PVSSCOMPONENTINFO pInfo);
 193
 194    HRESULT (STDMETHODCALLTYPE *GetFile)(
 195        IVssWMComponent *This,
 196        UINT iFile,
 197        IVssWMFiledesc **ppFiledesc);
 198
 199    HRESULT (STDMETHODCALLTYPE *GetDatabaseFile)(
 200        IVssWMComponent *This,
 201        UINT iDBFile,
 202        IVssWMFiledesc **ppFiledesc);
 203
 204    HRESULT (STDMETHODCALLTYPE *GetDatabaseLogFile)(
 205        IVssWMComponent *This,
 206        UINT iDbLogFile,
 207        IVssWMFiledesc **ppFiledesc);
 208
 209    HRESULT (STDMETHODCALLTYPE *GetDependency)(
 210        IVssWMComponent *This,
 211        UINT iDependency,
 212        IVssWMDependency **ppDependency);
 213
 214    END_INTERFACE
 215} IVssWMComponentVtbl;
 216
 217interface IVssWMComponent {
 218    CONST_VTBL IVssWMComponentVtbl* lpVtbl;
 219};
 220
 221#ifdef COBJMACROS
 222#ifndef WIDL_C_INLINE_WRAPPERS
 223/*** IUnknown methods ***/
 224#define IVssWMComponent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 225#define IVssWMComponent_AddRef(This) (This)->lpVtbl->AddRef(This)
 226#define IVssWMComponent_Release(This) (This)->lpVtbl->Release(This)
 227/*** IVssWMComponent methods ***/
 228#define IVssWMComponent_GetComponentInfo(This,ppInfo) (This)->lpVtbl->GetComponentInfo(This,ppInfo)
 229#define IVssWMComponent_FreeComponentInfo(This,pInfo) (This)->lpVtbl->FreeComponentInfo(This,pInfo)
 230#define IVssWMComponent_GetFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetFile(This,iFile,ppFiledesc)
 231#define IVssWMComponent_GetDatabaseFile(This,iDBFile,ppFiledesc) (This)->lpVtbl->GetDatabaseFile(This,iDBFile,ppFiledesc)
 232#define IVssWMComponent_GetDatabaseLogFile(This,iDbLogFile,ppFiledesc) (This)->lpVtbl->GetDatabaseLogFile(This,iDbLogFile,ppFiledesc)
 233#define IVssWMComponent_GetDependency(This,iDependency,ppDependency) (This)->lpVtbl->GetDependency(This,iDependency,ppDependency)
 234#else
 235/*** IUnknown methods ***/
 236static inline HRESULT IVssWMComponent_QueryInterface(IVssWMComponent* This,REFIID riid,void **ppvObject) {
 237    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 238}
 239static inline ULONG IVssWMComponent_AddRef(IVssWMComponent* This) {
 240    return This->lpVtbl->AddRef(This);
 241}
 242static inline ULONG IVssWMComponent_Release(IVssWMComponent* This) {
 243    return This->lpVtbl->Release(This);
 244}
 245/*** IVssWMComponent methods ***/
 246static inline HRESULT IVssWMComponent_GetComponentInfo(IVssWMComponent* This,PVSSCOMPONENTINFO *ppInfo) {
 247    return This->lpVtbl->GetComponentInfo(This,ppInfo);
 248}
 249static inline HRESULT IVssWMComponent_FreeComponentInfo(IVssWMComponent* This,PVSSCOMPONENTINFO pInfo) {
 250    return This->lpVtbl->FreeComponentInfo(This,pInfo);
 251}
 252static inline HRESULT IVssWMComponent_GetFile(IVssWMComponent* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
 253    return This->lpVtbl->GetFile(This,iFile,ppFiledesc);
 254}
 255static inline HRESULT IVssWMComponent_GetDatabaseFile(IVssWMComponent* This,UINT iDBFile,IVssWMFiledesc **ppFiledesc) {
 256    return This->lpVtbl->GetDatabaseFile(This,iDBFile,ppFiledesc);
 257}
 258static inline HRESULT IVssWMComponent_GetDatabaseLogFile(IVssWMComponent* This,UINT iDbLogFile,IVssWMFiledesc **ppFiledesc) {
 259    return This->lpVtbl->GetDatabaseLogFile(This,iDbLogFile,ppFiledesc);
 260}
 261static inline HRESULT IVssWMComponent_GetDependency(IVssWMComponent* This,UINT iDependency,IVssWMDependency **ppDependency) {
 262    return This->lpVtbl->GetDependency(This,iDependency,ppDependency);
 263}
 264#endif
 265#endif
 266
 267#endif
 268
 269
 270#endif  /* __IVssWMComponent_INTERFACE_DEFINED__ */
 271
 272/*****************************************************************************
 273 * IVssExamineWriterMetadata interface
 274 */
 275#ifndef __IVssExamineWriterMetadata_INTERFACE_DEFINED__
 276#define __IVssExamineWriterMetadata_INTERFACE_DEFINED__
 277
 278DEFINE_GUID(IID_IVssExamineWriterMetadata, 0x902fcf7f, 0xb7fd, 0x42f8, 0x81,0xf1, 0xb2,0xe4,0x00,0xb1,0xe5,0xbd);
 279#if defined(__cplusplus) && !defined(CINTERFACE)
 280MIDL_INTERFACE("902fcf7f-b7fd-42f8-81f1-b2e400b1e5bd")
 281IVssExamineWriterMetadata : public IUnknown
 282{
 283    virtual HRESULT STDMETHODCALLTYPE GetIdentity(
 284        VSS_ID *pidInstance,
 285        VSS_ID *pidWriter,
 286        BSTR *pbstrWriterName,
 287        VSS_USAGE_TYPE *pUsage,
 288        VSS_SOURCE_TYPE *pSource) = 0;
 289
 290    virtual HRESULT STDMETHODCALLTYPE GetFileCounts(
 291        UINT *pcIncludeFiles,
 292        UINT *pcExcludeFiles,
 293        UINT *pcComponents) = 0;
 294
 295    virtual HRESULT STDMETHODCALLTYPE GetIncludeFile(
 296        UINT iFile,
 297        IVssWMFiledesc **ppFiledesc) = 0;
 298
 299    virtual HRESULT STDMETHODCALLTYPE GetExcludeFile(
 300        UINT iFile,
 301        IVssWMFiledesc **ppFiledesc) = 0;
 302
 303    virtual HRESULT STDMETHODCALLTYPE GetComponent(
 304        UINT iComponent,
 305        IVssWMComponent **ppComponent) = 0;
 306
 307    virtual HRESULT STDMETHODCALLTYPE GetRestoreMethod(
 308        VSS_RESTOREMETHOD_ENUM *pMethod,
 309        BSTR *pbstrService,
 310        BSTR *pbstrUserProcedure,
 311        VSS_WRITERRESTORE_ENUM *pwriterRestore,
 312        boolean *pbRebootRequired,
 313        UINT *pcMappings) = 0;
 314
 315    virtual HRESULT STDMETHODCALLTYPE GetAlternateLocationMapping(
 316        UINT iMapping,
 317        IVssWMFiledesc **ppFiledesc) = 0;
 318
 319    virtual HRESULT STDMETHODCALLTYPE GetBackupSchema(
 320        DWORD *pdwSchemaMask) = 0;
 321
 322    virtual HRESULT STDMETHODCALLTYPE GetDocument(
 323        IXMLDOMDocument **pDoc) = 0;
 324
 325    virtual HRESULT STDMETHODCALLTYPE SaveAsXML(
 326        BSTR *pbstrXML) = 0;
 327
 328    virtual HRESULT STDMETHODCALLTYPE LoadFromXML(
 329        BSTR bstrXML) = 0;
 330
 331};
 332#ifdef __CRT_UUID_DECL
 333__CRT_UUID_DECL(IVssExamineWriterMetadata, 0x902fcf7f, 0xb7fd, 0x42f8, 0x81,0xf1, 0xb2,0xe4,0x00,0xb1,0xe5,0xbd)
 334#endif
 335#else
 336typedef struct IVssExamineWriterMetadataVtbl {
 337    BEGIN_INTERFACE
 338
 339    /*** IUnknown methods ***/
 340    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 341        IVssExamineWriterMetadata *This,
 342        REFIID riid,
 343        void **ppvObject);
 344
 345    ULONG (STDMETHODCALLTYPE *AddRef)(
 346        IVssExamineWriterMetadata *This);
 347
 348    ULONG (STDMETHODCALLTYPE *Release)(
 349        IVssExamineWriterMetadata *This);
 350
 351    /*** IVssExamineWriterMetadata methods ***/
 352    HRESULT (STDMETHODCALLTYPE *GetIdentity)(
 353        IVssExamineWriterMetadata *This,
 354        VSS_ID *pidInstance,
 355        VSS_ID *pidWriter,
 356        BSTR *pbstrWriterName,
 357        VSS_USAGE_TYPE *pUsage,
 358        VSS_SOURCE_TYPE *pSource);
 359
 360    HRESULT (STDMETHODCALLTYPE *GetFileCounts)(
 361        IVssExamineWriterMetadata *This,
 362        UINT *pcIncludeFiles,
 363        UINT *pcExcludeFiles,
 364        UINT *pcComponents);
 365
 366    HRESULT (STDMETHODCALLTYPE *GetIncludeFile)(
 367        IVssExamineWriterMetadata *This,
 368        UINT iFile,
 369        IVssWMFiledesc **ppFiledesc);
 370
 371    HRESULT (STDMETHODCALLTYPE *GetExcludeFile)(
 372        IVssExamineWriterMetadata *This,
 373        UINT iFile,
 374        IVssWMFiledesc **ppFiledesc);
 375
 376    HRESULT (STDMETHODCALLTYPE *GetComponent)(
 377        IVssExamineWriterMetadata *This,
 378        UINT iComponent,
 379        IVssWMComponent **ppComponent);
 380
 381    HRESULT (STDMETHODCALLTYPE *GetRestoreMethod)(
 382        IVssExamineWriterMetadata *This,
 383        VSS_RESTOREMETHOD_ENUM *pMethod,
 384        BSTR *pbstrService,
 385        BSTR *pbstrUserProcedure,
 386        VSS_WRITERRESTORE_ENUM *pwriterRestore,
 387        boolean *pbRebootRequired,
 388        UINT *pcMappings);
 389
 390    HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMapping)(
 391        IVssExamineWriterMetadata *This,
 392        UINT iMapping,
 393        IVssWMFiledesc **ppFiledesc);
 394
 395    HRESULT (STDMETHODCALLTYPE *GetBackupSchema)(
 396        IVssExamineWriterMetadata *This,
 397        DWORD *pdwSchemaMask);
 398
 399    HRESULT (STDMETHODCALLTYPE *GetDocument)(
 400        IVssExamineWriterMetadata *This,
 401        IXMLDOMDocument **pDoc);
 402
 403    HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
 404        IVssExamineWriterMetadata *This,
 405        BSTR *pbstrXML);
 406
 407    HRESULT (STDMETHODCALLTYPE *LoadFromXML)(
 408        IVssExamineWriterMetadata *This,
 409        BSTR bstrXML);
 410
 411    END_INTERFACE
 412} IVssExamineWriterMetadataVtbl;
 413
 414interface IVssExamineWriterMetadata {
 415    CONST_VTBL IVssExamineWriterMetadataVtbl* lpVtbl;
 416};
 417
 418#ifdef COBJMACROS
 419#ifndef WIDL_C_INLINE_WRAPPERS
 420/*** IUnknown methods ***/
 421#define IVssExamineWriterMetadata_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 422#define IVssExamineWriterMetadata_AddRef(This) (This)->lpVtbl->AddRef(This)
 423#define IVssExamineWriterMetadata_Release(This) (This)->lpVtbl->Release(This)
 424/*** IVssExamineWriterMetadata methods ***/
 425#define IVssExamineWriterMetadata_GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource) (This)->lpVtbl->GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource)
 426#define IVssExamineWriterMetadata_GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents) (This)->lpVtbl->GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents)
 427#define IVssExamineWriterMetadata_GetIncludeFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetIncludeFile(This,iFile,ppFiledesc)
 428#define IVssExamineWriterMetadata_GetExcludeFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetExcludeFile(This,iFile,ppFiledesc)
 429#define IVssExamineWriterMetadata_GetComponent(This,iComponent,ppComponent) (This)->lpVtbl->GetComponent(This,iComponent,ppComponent)
 430#define IVssExamineWriterMetadata_GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings) (This)->lpVtbl->GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings)
 431#define IVssExamineWriterMetadata_GetAlternateLocationMapping(This,iMapping,ppFiledesc) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc)
 432#define IVssExamineWriterMetadata_GetBackupSchema(This,pdwSchemaMask) (This)->lpVtbl->GetBackupSchema(This,pdwSchemaMask)
 433#define IVssExamineWriterMetadata_GetDocument(This,pDoc) (This)->lpVtbl->GetDocument(This,pDoc)
 434#define IVssExamineWriterMetadata_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
 435#define IVssExamineWriterMetadata_LoadFromXML(This,bstrXML) (This)->lpVtbl->LoadFromXML(This,bstrXML)
 436#else
 437/*** IUnknown methods ***/
 438static inline HRESULT IVssExamineWriterMetadata_QueryInterface(IVssExamineWriterMetadata* This,REFIID riid,void **ppvObject) {
 439    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 440}
 441static inline ULONG IVssExamineWriterMetadata_AddRef(IVssExamineWriterMetadata* This) {
 442    return This->lpVtbl->AddRef(This);
 443}
 444static inline ULONG IVssExamineWriterMetadata_Release(IVssExamineWriterMetadata* This) {
 445    return This->lpVtbl->Release(This);
 446}
 447/*** IVssExamineWriterMetadata methods ***/
 448static inline HRESULT IVssExamineWriterMetadata_GetIdentity(IVssExamineWriterMetadata* This,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriterName,VSS_USAGE_TYPE *pUsage,VSS_SOURCE_TYPE *pSource) {
 449    return This->lpVtbl->GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource);
 450}
 451static inline HRESULT IVssExamineWriterMetadata_GetFileCounts(IVssExamineWriterMetadata* This,UINT *pcIncludeFiles,UINT *pcExcludeFiles,UINT *pcComponents) {
 452    return This->lpVtbl->GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents);
 453}
 454static inline HRESULT IVssExamineWriterMetadata_GetIncludeFile(IVssExamineWriterMetadata* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
 455    return This->lpVtbl->GetIncludeFile(This,iFile,ppFiledesc);
 456}
 457static inline HRESULT IVssExamineWriterMetadata_GetExcludeFile(IVssExamineWriterMetadata* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
 458    return This->lpVtbl->GetExcludeFile(This,iFile,ppFiledesc);
 459}
 460static inline HRESULT IVssExamineWriterMetadata_GetComponent(IVssExamineWriterMetadata* This,UINT iComponent,IVssWMComponent **ppComponent) {
 461    return This->lpVtbl->GetComponent(This,iComponent,ppComponent);
 462}
 463static inline HRESULT IVssExamineWriterMetadata_GetRestoreMethod(IVssExamineWriterMetadata* This,VSS_RESTOREMETHOD_ENUM *pMethod,BSTR *pbstrService,BSTR *pbstrUserProcedure,VSS_WRITERRESTORE_ENUM *pwriterRestore,boolean *pbRebootRequired,UINT *pcMappings) {
 464    return This->lpVtbl->GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings);
 465}
 466static inline HRESULT IVssExamineWriterMetadata_GetAlternateLocationMapping(IVssExamineWriterMetadata* This,UINT iMapping,IVssWMFiledesc **ppFiledesc) {
 467    return This->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc);
 468}
 469static inline HRESULT IVssExamineWriterMetadata_GetBackupSchema(IVssExamineWriterMetadata* This,DWORD *pdwSchemaMask) {
 470    return This->lpVtbl->GetBackupSchema(This,pdwSchemaMask);
 471}
 472static inline HRESULT IVssExamineWriterMetadata_GetDocument(IVssExamineWriterMetadata* This,IXMLDOMDocument **pDoc) {
 473    return This->lpVtbl->GetDocument(This,pDoc);
 474}
 475static inline HRESULT IVssExamineWriterMetadata_SaveAsXML(IVssExamineWriterMetadata* This,BSTR *pbstrXML) {
 476    return This->lpVtbl->SaveAsXML(This,pbstrXML);
 477}
 478static inline HRESULT IVssExamineWriterMetadata_LoadFromXML(IVssExamineWriterMetadata* This,BSTR bstrXML) {
 479    return This->lpVtbl->LoadFromXML(This,bstrXML);
 480}
 481#endif
 482#endif
 483
 484#endif
 485
 486
 487#endif  /* __IVssExamineWriterMetadata_INTERFACE_DEFINED__ */
 488
 489/*****************************************************************************
 490 * IVssExamineWriterMetadataEx interface
 491 */
 492#ifndef __IVssExamineWriterMetadataEx_INTERFACE_DEFINED__
 493#define __IVssExamineWriterMetadataEx_INTERFACE_DEFINED__
 494
 495DEFINE_GUID(IID_IVssExamineWriterMetadataEx, 0x0c0e5ec0, 0xca44, 0x472b, 0xb7,0x02, 0xe6,0x52,0xdb,0x1c,0x04,0x51);
 496#if defined(__cplusplus) && !defined(CINTERFACE)
 497MIDL_INTERFACE("0c0e5ec0-ca44-472b-b702-e652db1c0451")
 498IVssExamineWriterMetadataEx : public IVssExamineWriterMetadata
 499{
 500    virtual HRESULT STDMETHODCALLTYPE GetIdentityEx(
 501        VSS_ID *pidInstance,
 502        VSS_ID *pidWriter,
 503        BSTR *pbstrWriterName,
 504        BSTR *pbstrInstanceName,
 505        VSS_USAGE_TYPE *pUsage,
 506        VSS_SOURCE_TYPE *pSource) = 0;
 507
 508};
 509#ifdef __CRT_UUID_DECL
 510__CRT_UUID_DECL(IVssExamineWriterMetadataEx, 0x0c0e5ec0, 0xca44, 0x472b, 0xb7,0x02, 0xe6,0x52,0xdb,0x1c,0x04,0x51)
 511#endif
 512#else
 513typedef struct IVssExamineWriterMetadataExVtbl {
 514    BEGIN_INTERFACE
 515
 516    /*** IUnknown methods ***/
 517    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 518        IVssExamineWriterMetadataEx *This,
 519        REFIID riid,
 520        void **ppvObject);
 521
 522    ULONG (STDMETHODCALLTYPE *AddRef)(
 523        IVssExamineWriterMetadataEx *This);
 524
 525    ULONG (STDMETHODCALLTYPE *Release)(
 526        IVssExamineWriterMetadataEx *This);
 527
 528    /*** IVssExamineWriterMetadata methods ***/
 529    HRESULT (STDMETHODCALLTYPE *GetIdentity)(
 530        IVssExamineWriterMetadataEx *This,
 531        VSS_ID *pidInstance,
 532        VSS_ID *pidWriter,
 533        BSTR *pbstrWriterName,
 534        VSS_USAGE_TYPE *pUsage,
 535        VSS_SOURCE_TYPE *pSource);
 536
 537    HRESULT (STDMETHODCALLTYPE *GetFileCounts)(
 538        IVssExamineWriterMetadataEx *This,
 539        UINT *pcIncludeFiles,
 540        UINT *pcExcludeFiles,
 541        UINT *pcComponents);
 542
 543    HRESULT (STDMETHODCALLTYPE *GetIncludeFile)(
 544        IVssExamineWriterMetadataEx *This,
 545        UINT iFile,
 546        IVssWMFiledesc **ppFiledesc);
 547
 548    HRESULT (STDMETHODCALLTYPE *GetExcludeFile)(
 549        IVssExamineWriterMetadataEx *This,
 550        UINT iFile,
 551        IVssWMFiledesc **ppFiledesc);
 552
 553    HRESULT (STDMETHODCALLTYPE *GetComponent)(
 554        IVssExamineWriterMetadataEx *This,
 555        UINT iComponent,
 556        IVssWMComponent **ppComponent);
 557
 558    HRESULT (STDMETHODCALLTYPE *GetRestoreMethod)(
 559        IVssExamineWriterMetadataEx *This,
 560        VSS_RESTOREMETHOD_ENUM *pMethod,
 561        BSTR *pbstrService,
 562        BSTR *pbstrUserProcedure,
 563        VSS_WRITERRESTORE_ENUM *pwriterRestore,
 564        boolean *pbRebootRequired,
 565        UINT *pcMappings);
 566
 567    HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMapping)(
 568        IVssExamineWriterMetadataEx *This,
 569        UINT iMapping,
 570        IVssWMFiledesc **ppFiledesc);
 571
 572    HRESULT (STDMETHODCALLTYPE *GetBackupSchema)(
 573        IVssExamineWriterMetadataEx *This,
 574        DWORD *pdwSchemaMask);
 575
 576    HRESULT (STDMETHODCALLTYPE *GetDocument)(
 577        IVssExamineWriterMetadataEx *This,
 578        IXMLDOMDocument **pDoc);
 579
 580    HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
 581        IVssExamineWriterMetadataEx *This,
 582        BSTR *pbstrXML);
 583
 584    HRESULT (STDMETHODCALLTYPE *LoadFromXML)(
 585        IVssExamineWriterMetadataEx *This,
 586        BSTR bstrXML);
 587
 588    /*** IVssExamineWriterMetadataEx methods ***/
 589    HRESULT (STDMETHODCALLTYPE *GetIdentityEx)(
 590        IVssExamineWriterMetadataEx *This,
 591        VSS_ID *pidInstance,
 592        VSS_ID *pidWriter,
 593        BSTR *pbstrWriterName,
 594        BSTR *pbstrInstanceName,
 595        VSS_USAGE_TYPE *pUsage,
 596        VSS_SOURCE_TYPE *pSource);
 597
 598    END_INTERFACE
 599} IVssExamineWriterMetadataExVtbl;
 600
 601interface IVssExamineWriterMetadataEx {
 602    CONST_VTBL IVssExamineWriterMetadataExVtbl* lpVtbl;
 603};
 604
 605#ifdef COBJMACROS
 606#ifndef WIDL_C_INLINE_WRAPPERS
 607/*** IUnknown methods ***/
 608#define IVssExamineWriterMetadataEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 609#define IVssExamineWriterMetadataEx_AddRef(This) (This)->lpVtbl->AddRef(This)
 610#define IVssExamineWriterMetadataEx_Release(This) (This)->lpVtbl->Release(This)
 611/*** IVssExamineWriterMetadata methods ***/
 612#define IVssExamineWriterMetadataEx_GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource) (This)->lpVtbl->GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource)
 613#define IVssExamineWriterMetadataEx_GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents) (This)->lpVtbl->GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents)
 614#define IVssExamineWriterMetadataEx_GetIncludeFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetIncludeFile(This,iFile,ppFiledesc)
 615#define IVssExamineWriterMetadataEx_GetExcludeFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetExcludeFile(This,iFile,ppFiledesc)
 616#define IVssExamineWriterMetadataEx_GetComponent(This,iComponent,ppComponent) (This)->lpVtbl->GetComponent(This,iComponent,ppComponent)
 617#define IVssExamineWriterMetadataEx_GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings) (This)->lpVtbl->GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings)
 618#define IVssExamineWriterMetadataEx_GetAlternateLocationMapping(This,iMapping,ppFiledesc) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc)
 619#define IVssExamineWriterMetadataEx_GetBackupSchema(This,pdwSchemaMask) (This)->lpVtbl->GetBackupSchema(This,pdwSchemaMask)
 620#define IVssExamineWriterMetadataEx_GetDocument(This,pDoc) (This)->lpVtbl->GetDocument(This,pDoc)
 621#define IVssExamineWriterMetadataEx_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
 622#define IVssExamineWriterMetadataEx_LoadFromXML(This,bstrXML) (This)->lpVtbl->LoadFromXML(This,bstrXML)
 623/*** IVssExamineWriterMetadataEx methods ***/
 624#define IVssExamineWriterMetadataEx_GetIdentityEx(This,pidInstance,pidWriter,pbstrWriterName,pbstrInstanceName,pUsage,pSource) (This)->lpVtbl->GetIdentityEx(This,pidInstance,pidWriter,pbstrWriterName,pbstrInstanceName,pUsage,pSource)
 625#else
 626/*** IUnknown methods ***/
 627static inline HRESULT IVssExamineWriterMetadataEx_QueryInterface(IVssExamineWriterMetadataEx* This,REFIID riid,void **ppvObject) {
 628    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 629}
 630static inline ULONG IVssExamineWriterMetadataEx_AddRef(IVssExamineWriterMetadataEx* This) {
 631    return This->lpVtbl->AddRef(This);
 632}
 633static inline ULONG IVssExamineWriterMetadataEx_Release(IVssExamineWriterMetadataEx* This) {
 634    return This->lpVtbl->Release(This);
 635}
 636/*** IVssExamineWriterMetadata methods ***/
 637static inline HRESULT IVssExamineWriterMetadataEx_GetIdentity(IVssExamineWriterMetadataEx* This,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriterName,VSS_USAGE_TYPE *pUsage,VSS_SOURCE_TYPE *pSource) {
 638    return This->lpVtbl->GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource);
 639}
 640static inline HRESULT IVssExamineWriterMetadataEx_GetFileCounts(IVssExamineWriterMetadataEx* This,UINT *pcIncludeFiles,UINT *pcExcludeFiles,UINT *pcComponents) {
 641    return This->lpVtbl->GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents);
 642}
 643static inline HRESULT IVssExamineWriterMetadataEx_GetIncludeFile(IVssExamineWriterMetadataEx* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
 644    return This->lpVtbl->GetIncludeFile(This,iFile,ppFiledesc);
 645}
 646static inline HRESULT IVssExamineWriterMetadataEx_GetExcludeFile(IVssExamineWriterMetadataEx* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
 647    return This->lpVtbl->GetExcludeFile(This,iFile,ppFiledesc);
 648}
 649static inline HRESULT IVssExamineWriterMetadataEx_GetComponent(IVssExamineWriterMetadataEx* This,UINT iComponent,IVssWMComponent **ppComponent) {
 650    return This->lpVtbl->GetComponent(This,iComponent,ppComponent);
 651}
 652static inline HRESULT IVssExamineWriterMetadataEx_GetRestoreMethod(IVssExamineWriterMetadataEx* This,VSS_RESTOREMETHOD_ENUM *pMethod,BSTR *pbstrService,BSTR *pbstrUserProcedure,VSS_WRITERRESTORE_ENUM *pwriterRestore,boolean *pbRebootRequired,UINT *pcMappings) {
 653    return This->lpVtbl->GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings);
 654}
 655static inline HRESULT IVssExamineWriterMetadataEx_GetAlternateLocationMapping(IVssExamineWriterMetadataEx* This,UINT iMapping,IVssWMFiledesc **ppFiledesc) {
 656    return This->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc);
 657}
 658static inline HRESULT IVssExamineWriterMetadataEx_GetBackupSchema(IVssExamineWriterMetadataEx* This,DWORD *pdwSchemaMask) {
 659    return This->lpVtbl->GetBackupSchema(This,pdwSchemaMask);
 660}
 661static inline HRESULT IVssExamineWriterMetadataEx_GetDocument(IVssExamineWriterMetadataEx* This,IXMLDOMDocument **pDoc) {
 662    return This->lpVtbl->GetDocument(This,pDoc);
 663}
 664static inline HRESULT IVssExamineWriterMetadataEx_SaveAsXML(IVssExamineWriterMetadataEx* This,BSTR *pbstrXML) {
 665    return This->lpVtbl->SaveAsXML(This,pbstrXML);
 666}
 667static inline HRESULT IVssExamineWriterMetadataEx_LoadFromXML(IVssExamineWriterMetadataEx* This,BSTR bstrXML) {
 668    return This->lpVtbl->LoadFromXML(This,bstrXML);
 669}
 670/*** IVssExamineWriterMetadataEx methods ***/
 671static inline HRESULT IVssExamineWriterMetadataEx_GetIdentityEx(IVssExamineWriterMetadataEx* This,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriterName,BSTR *pbstrInstanceName,VSS_USAGE_TYPE *pUsage,VSS_SOURCE_TYPE *pSource) {
 672    return This->lpVtbl->GetIdentityEx(This,pidInstance,pidWriter,pbstrWriterName,pbstrInstanceName,pUsage,pSource);
 673}
 674#endif
 675#endif
 676
 677#endif
 678
 679
 680#endif  /* __IVssExamineWriterMetadataEx_INTERFACE_DEFINED__ */
 681
 682/*****************************************************************************
 683 * IVssExamineWriterMetadataEx2 interface
 684 */
 685#ifndef __IVssExamineWriterMetadataEx2_INTERFACE_DEFINED__
 686#define __IVssExamineWriterMetadataEx2_INTERFACE_DEFINED__
 687
 688DEFINE_GUID(IID_IVssExamineWriterMetadataEx2, 0xce115780, 0xa611, 0x431b, 0xb5,0x7f, 0xc3,0x83,0x03,0xab,0x6a,0xee);
 689#if defined(__cplusplus) && !defined(CINTERFACE)
 690MIDL_INTERFACE("ce115780-a611-431b-b57f-c38303ab6aee")
 691IVssExamineWriterMetadataEx2 : public IVssExamineWriterMetadataEx
 692{
 693    virtual HRESULT STDMETHODCALLTYPE GetVersion(
 694        DWORD *pdwMajorVersion,
 695        DWORD *pdwMinorVersion) = 0;
 696
 697    virtual HRESULT STDMETHODCALLTYPE GetExcludeFromSnapshotCount(
 698        UINT *pcExcludedFromSnapshot) = 0;
 699
 700    virtual HRESULT STDMETHODCALLTYPE GetExcludeFromSnapshotFile(
 701        UINT iFile,
 702        IVssWMFiledesc **ppFiledesc) = 0;
 703
 704};
 705#ifdef __CRT_UUID_DECL
 706__CRT_UUID_DECL(IVssExamineWriterMetadataEx2, 0xce115780, 0xa611, 0x431b, 0xb5,0x7f, 0xc3,0x83,0x03,0xab,0x6a,0xee)
 707#endif
 708#else
 709typedef struct IVssExamineWriterMetadataEx2Vtbl {
 710    BEGIN_INTERFACE
 711
 712    /*** IUnknown methods ***/
 713    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 714        IVssExamineWriterMetadataEx2 *This,
 715        REFIID riid,
 716        void **ppvObject);
 717
 718    ULONG (STDMETHODCALLTYPE *AddRef)(
 719        IVssExamineWriterMetadataEx2 *This);
 720
 721    ULONG (STDMETHODCALLTYPE *Release)(
 722        IVssExamineWriterMetadataEx2 *This);
 723
 724    /*** IVssExamineWriterMetadata methods ***/
 725    HRESULT (STDMETHODCALLTYPE *GetIdentity)(
 726        IVssExamineWriterMetadataEx2 *This,
 727        VSS_ID *pidInstance,
 728        VSS_ID *pidWriter,
 729        BSTR *pbstrWriterName,
 730        VSS_USAGE_TYPE *pUsage,
 731        VSS_SOURCE_TYPE *pSource);
 732
 733    HRESULT (STDMETHODCALLTYPE *GetFileCounts)(
 734        IVssExamineWriterMetadataEx2 *This,
 735        UINT *pcIncludeFiles,
 736        UINT *pcExcludeFiles,
 737        UINT *pcComponents);
 738
 739    HRESULT (STDMETHODCALLTYPE *GetIncludeFile)(
 740        IVssExamineWriterMetadataEx2 *This,
 741        UINT iFile,
 742        IVssWMFiledesc **ppFiledesc);
 743
 744    HRESULT (STDMETHODCALLTYPE *GetExcludeFile)(
 745        IVssExamineWriterMetadataEx2 *This,
 746        UINT iFile,
 747        IVssWMFiledesc **ppFiledesc);
 748
 749    HRESULT (STDMETHODCALLTYPE *GetComponent)(
 750        IVssExamineWriterMetadataEx2 *This,
 751        UINT iComponent,
 752        IVssWMComponent **ppComponent);
 753
 754    HRESULT (STDMETHODCALLTYPE *GetRestoreMethod)(
 755        IVssExamineWriterMetadataEx2 *This,
 756        VSS_RESTOREMETHOD_ENUM *pMethod,
 757        BSTR *pbstrService,
 758        BSTR *pbstrUserProcedure,
 759        VSS_WRITERRESTORE_ENUM *pwriterRestore,
 760        boolean *pbRebootRequired,
 761        UINT *pcMappings);
 762
 763    HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMapping)(
 764        IVssExamineWriterMetadataEx2 *This,
 765        UINT iMapping,
 766        IVssWMFiledesc **ppFiledesc);
 767
 768    HRESULT (STDMETHODCALLTYPE *GetBackupSchema)(
 769        IVssExamineWriterMetadataEx2 *This,
 770        DWORD *pdwSchemaMask);
 771
 772    HRESULT (STDMETHODCALLTYPE *GetDocument)(
 773        IVssExamineWriterMetadataEx2 *This,
 774        IXMLDOMDocument **pDoc);
 775
 776    HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
 777        IVssExamineWriterMetadataEx2 *This,
 778        BSTR *pbstrXML);
 779
 780    HRESULT (STDMETHODCALLTYPE *LoadFromXML)(
 781        IVssExamineWriterMetadataEx2 *This,
 782        BSTR bstrXML);
 783
 784    /*** IVssExamineWriterMetadataEx methods ***/
 785    HRESULT (STDMETHODCALLTYPE *GetIdentityEx)(
 786        IVssExamineWriterMetadataEx2 *This,
 787        VSS_ID *pidInstance,
 788        VSS_ID *pidWriter,
 789        BSTR *pbstrWriterName,
 790        BSTR *pbstrInstanceName,
 791        VSS_USAGE_TYPE *pUsage,
 792        VSS_SOURCE_TYPE *pSource);
 793
 794    /*** IVssExamineWriterMetadataEx2 methods ***/
 795    HRESULT (STDMETHODCALLTYPE *GetVersion)(
 796        IVssExamineWriterMetadataEx2 *This,
 797        DWORD *pdwMajorVersion,
 798        DWORD *pdwMinorVersion);
 799
 800    HRESULT (STDMETHODCALLTYPE *GetExcludeFromSnapshotCount)(
 801        IVssExamineWriterMetadataEx2 *This,
 802        UINT *pcExcludedFromSnapshot);
 803
 804    HRESULT (STDMETHODCALLTYPE *GetExcludeFromSnapshotFile)(
 805        IVssExamineWriterMetadataEx2 *This,
 806        UINT iFile,
 807        IVssWMFiledesc **ppFiledesc);
 808
 809    END_INTERFACE
 810} IVssExamineWriterMetadataEx2Vtbl;
 811
 812interface IVssExamineWriterMetadataEx2 {
 813    CONST_VTBL IVssExamineWriterMetadataEx2Vtbl* lpVtbl;
 814};
 815
 816#ifdef COBJMACROS
 817#ifndef WIDL_C_INLINE_WRAPPERS
 818/*** IUnknown methods ***/
 819#define IVssExamineWriterMetadataEx2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 820#define IVssExamineWriterMetadataEx2_AddRef(This) (This)->lpVtbl->AddRef(This)
 821#define IVssExamineWriterMetadataEx2_Release(This) (This)->lpVtbl->Release(This)
 822/*** IVssExamineWriterMetadata methods ***/
 823#define IVssExamineWriterMetadataEx2_GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource) (This)->lpVtbl->GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource)
 824#define IVssExamineWriterMetadataEx2_GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents) (This)->lpVtbl->GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents)
 825#define IVssExamineWriterMetadataEx2_GetIncludeFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetIncludeFile(This,iFile,ppFiledesc)
 826#define IVssExamineWriterMetadataEx2_GetExcludeFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetExcludeFile(This,iFile,ppFiledesc)
 827#define IVssExamineWriterMetadataEx2_GetComponent(This,iComponent,ppComponent) (This)->lpVtbl->GetComponent(This,iComponent,ppComponent)
 828#define IVssExamineWriterMetadataEx2_GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings) (This)->lpVtbl->GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings)
 829#define IVssExamineWriterMetadataEx2_GetAlternateLocationMapping(This,iMapping,ppFiledesc) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc)
 830#define IVssExamineWriterMetadataEx2_GetBackupSchema(This,pdwSchemaMask) (This)->lpVtbl->GetBackupSchema(This,pdwSchemaMask)
 831#define IVssExamineWriterMetadataEx2_GetDocument(This,pDoc) (This)->lpVtbl->GetDocument(This,pDoc)
 832#define IVssExamineWriterMetadataEx2_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
 833#define IVssExamineWriterMetadataEx2_LoadFromXML(This,bstrXML) (This)->lpVtbl->LoadFromXML(This,bstrXML)
 834/*** IVssExamineWriterMetadataEx methods ***/
 835#define IVssExamineWriterMetadataEx2_GetIdentityEx(This,pidInstance,pidWriter,pbstrWriterName,pbstrInstanceName,pUsage,pSource) (This)->lpVtbl->GetIdentityEx(This,pidInstance,pidWriter,pbstrWriterName,pbstrInstanceName,pUsage,pSource)
 836/*** IVssExamineWriterMetadataEx2 methods ***/
 837#define IVssExamineWriterMetadataEx2_GetVersion(This,pdwMajorVersion,pdwMinorVersion) (This)->lpVtbl->GetVersion(This,pdwMajorVersion,pdwMinorVersion)
 838#define IVssExamineWriterMetadataEx2_GetExcludeFromSnapshotCount(This,pcExcludedFromSnapshot) (This)->lpVtbl->GetExcludeFromSnapshotCount(This,pcExcludedFromSnapshot)
 839#define IVssExamineWriterMetadataEx2_GetExcludeFromSnapshotFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetExcludeFromSnapshotFile(This,iFile,ppFiledesc)
 840#else
 841/*** IUnknown methods ***/
 842static inline HRESULT IVssExamineWriterMetadataEx2_QueryInterface(IVssExamineWriterMetadataEx2* This,REFIID riid,void **ppvObject) {
 843    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 844}
 845static inline ULONG IVssExamineWriterMetadataEx2_AddRef(IVssExamineWriterMetadataEx2* This) {
 846    return This->lpVtbl->AddRef(This);
 847}
 848static inline ULONG IVssExamineWriterMetadataEx2_Release(IVssExamineWriterMetadataEx2* This) {
 849    return This->lpVtbl->Release(This);
 850}
 851/*** IVssExamineWriterMetadata methods ***/
 852static inline HRESULT IVssExamineWriterMetadataEx2_GetIdentity(IVssExamineWriterMetadataEx2* This,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriterName,VSS_USAGE_TYPE *pUsage,VSS_SOURCE_TYPE *pSource) {
 853    return This->lpVtbl->GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource);
 854}
 855static inline HRESULT IVssExamineWriterMetadataEx2_GetFileCounts(IVssExamineWriterMetadataEx2* This,UINT *pcIncludeFiles,UINT *pcExcludeFiles,UINT *pcComponents) {
 856    return This->lpVtbl->GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents);
 857}
 858static inline HRESULT IVssExamineWriterMetadataEx2_GetIncludeFile(IVssExamineWriterMetadataEx2* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
 859    return This->lpVtbl->GetIncludeFile(This,iFile,ppFiledesc);
 860}
 861static inline HRESULT IVssExamineWriterMetadataEx2_GetExcludeFile(IVssExamineWriterMetadataEx2* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
 862    return This->lpVtbl->GetExcludeFile(This,iFile,ppFiledesc);
 863}
 864static inline HRESULT IVssExamineWriterMetadataEx2_GetComponent(IVssExamineWriterMetadataEx2* This,UINT iComponent,IVssWMComponent **ppComponent) {
 865    return This->lpVtbl->GetComponent(This,iComponent,ppComponent);
 866}
 867static inline HRESULT IVssExamineWriterMetadataEx2_GetRestoreMethod(IVssExamineWriterMetadataEx2* This,VSS_RESTOREMETHOD_ENUM *pMethod,BSTR *pbstrService,BSTR *pbstrUserProcedure,VSS_WRITERRESTORE_ENUM *pwriterRestore,boolean *pbRebootRequired,UINT *pcMappings) {
 868    return This->lpVtbl->GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings);
 869}
 870static inline HRESULT IVssExamineWriterMetadataEx2_GetAlternateLocationMapping(IVssExamineWriterMetadataEx2* This,UINT iMapping,IVssWMFiledesc **ppFiledesc) {
 871    return This->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc);
 872}
 873static inline HRESULT IVssExamineWriterMetadataEx2_GetBackupSchema(IVssExamineWriterMetadataEx2* This,DWORD *pdwSchemaMask) {
 874    return This->lpVtbl->GetBackupSchema(This,pdwSchemaMask);
 875}
 876static inline HRESULT IVssExamineWriterMetadataEx2_GetDocument(IVssExamineWriterMetadataEx2* This,IXMLDOMDocument **pDoc) {
 877    return This->lpVtbl->GetDocument(This,pDoc);
 878}
 879static inline HRESULT IVssExamineWriterMetadataEx2_SaveAsXML(IVssExamineWriterMetadataEx2* This,BSTR *pbstrXML) {
 880    return This->lpVtbl->SaveAsXML(This,pbstrXML);
 881}
 882static inline HRESULT IVssExamineWriterMetadataEx2_LoadFromXML(IVssExamineWriterMetadataEx2* This,BSTR bstrXML) {
 883    return This->lpVtbl->LoadFromXML(This,bstrXML);
 884}
 885/*** IVssExamineWriterMetadataEx methods ***/
 886static inline HRESULT IVssExamineWriterMetadataEx2_GetIdentityEx(IVssExamineWriterMetadataEx2* This,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriterName,BSTR *pbstrInstanceName,VSS_USAGE_TYPE *pUsage,VSS_SOURCE_TYPE *pSource) {
 887    return This->lpVtbl->GetIdentityEx(This,pidInstance,pidWriter,pbstrWriterName,pbstrInstanceName,pUsage,pSource);
 888}
 889/*** IVssExamineWriterMetadataEx2 methods ***/
 890static inline HRESULT IVssExamineWriterMetadataEx2_GetVersion(IVssExamineWriterMetadataEx2* This,DWORD *pdwMajorVersion,DWORD *pdwMinorVersion) {
 891    return This->lpVtbl->GetVersion(This,pdwMajorVersion,pdwMinorVersion);
 892}
 893static inline HRESULT IVssExamineWriterMetadataEx2_GetExcludeFromSnapshotCount(IVssExamineWriterMetadataEx2* This,UINT *pcExcludedFromSnapshot) {
 894    return This->lpVtbl->GetExcludeFromSnapshotCount(This,pcExcludedFromSnapshot);
 895}
 896static inline HRESULT IVssExamineWriterMetadataEx2_GetExcludeFromSnapshotFile(IVssExamineWriterMetadataEx2* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
 897    return This->lpVtbl->GetExcludeFromSnapshotFile(This,iFile,ppFiledesc);
 898}
 899#endif
 900#endif
 901
 902#endif
 903
 904
 905#endif  /* __IVssExamineWriterMetadataEx2_INTERFACE_DEFINED__ */
 906
 907/*****************************************************************************
 908 * IVssWriterComponentsExt interface
 909 */
 910#ifndef __IVssWriterComponentsExt_INTERFACE_DEFINED__
 911#define __IVssWriterComponentsExt_INTERFACE_DEFINED__
 912
 913DEFINE_GUID(IID_IVssWriterComponentsExt, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
 914#if defined(__cplusplus) && !defined(CINTERFACE)
 915MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
 916IVssWriterComponentsExt : public IVssWriterComponents
 917{
 918};
 919#ifdef __CRT_UUID_DECL
 920__CRT_UUID_DECL(IVssWriterComponentsExt, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00)
 921#endif
 922#else
 923typedef struct IVssWriterComponentsExtVtbl {
 924    BEGIN_INTERFACE
 925
 926    /*** IVssWriterComponents methods ***/
 927    HRESULT (STDMETHODCALLTYPE *GetComponentCount)(
 928        IVssWriterComponentsExt *This,
 929        UINT *pcComponents);
 930
 931    HRESULT (STDMETHODCALLTYPE *GetWriterInfo)(
 932        IVssWriterComponentsExt *This,
 933        VSS_ID *pidInstance,
 934        VSS_ID *pidWriter);
 935
 936    HRESULT (STDMETHODCALLTYPE *GetComponent)(
 937        IVssWriterComponentsExt *This,
 938        UINT iComponent,
 939        IVssComponent **ppComponent);
 940
 941    END_INTERFACE
 942} IVssWriterComponentsExtVtbl;
 943
 944interface IVssWriterComponentsExt {
 945    CONST_VTBL IVssWriterComponentsExtVtbl* lpVtbl;
 946};
 947
 948#ifdef COBJMACROS
 949#ifndef WIDL_C_INLINE_WRAPPERS
 950/*** IVssWriterComponents methods ***/
 951#define IVssWriterComponentsExt_GetComponentCount(This,pcComponents) (This)->lpVtbl->GetComponentCount(This,pcComponents)
 952#define IVssWriterComponentsExt_GetWriterInfo(This,pidInstance,pidWriter) (This)->lpVtbl->GetWriterInfo(This,pidInstance,pidWriter)
 953#define IVssWriterComponentsExt_GetComponent(This,iComponent,ppComponent) (This)->lpVtbl->GetComponent(This,iComponent,ppComponent)
 954#else
 955/*** IVssWriterComponents methods ***/
 956static inline HRESULT IVssWriterComponentsExt_GetComponentCount(IVssWriterComponentsExt* This,UINT *pcComponents) {
 957    return This->lpVtbl->GetComponentCount(This,pcComponents);
 958}
 959static inline HRESULT IVssWriterComponentsExt_GetWriterInfo(IVssWriterComponentsExt* This,VSS_ID *pidInstance,VSS_ID *pidWriter) {
 960    return This->lpVtbl->GetWriterInfo(This,pidInstance,pidWriter);
 961}
 962static inline HRESULT IVssWriterComponentsExt_GetComponent(IVssWriterComponentsExt* This,UINT iComponent,IVssComponent **ppComponent) {
 963    return This->lpVtbl->GetComponent(This,iComponent,ppComponent);
 964}
 965#endif
 966#endif
 967
 968#endif
 969
 970
 971#endif  /* __IVssWriterComponentsExt_INTERFACE_DEFINED__ */
 972
 973/*****************************************************************************
 974 * IVssBackupComponents interface
 975 */
 976#ifndef __IVssBackupComponents_INTERFACE_DEFINED__
 977#define __IVssBackupComponents_INTERFACE_DEFINED__
 978
 979DEFINE_GUID(IID_IVssBackupComponents, 0x665c1d5f, 0xc218, 0x414d, 0xa0,0x5d, 0x7f,0xef,0x5f,0x9d,0x5c,0x86);
 980#if defined(__cplusplus) && !defined(CINTERFACE)
 981MIDL_INTERFACE("665c1d5f-c218-414d-a05d-7fef5f9d5c86")
 982IVssBackupComponents : public IUnknown
 983{
 984    virtual HRESULT STDMETHODCALLTYPE GetWriterComponentsCount(
 985        UINT *pcComponents) = 0;
 986
 987    virtual HRESULT STDMETHODCALLTYPE GetWriterComponents(
 988        UINT iWriter,
 989        IVssWriterComponentsExt **ppWriter) = 0;
 990
 991    virtual HRESULT STDMETHODCALLTYPE InitializeForBackup(
 992        BSTR bstrXML = 0) = 0;
 993
 994    virtual HRESULT STDMETHODCALLTYPE SetBackupState(
 995        boolean bSelectComponents,
 996        boolean bBackupBootableSystemState,
 997        VSS_BACKUP_TYPE backupType,
 998        boolean bPartialFileSupport = 0) = 0;
 999
1000    virtual HRESULT STDMETHODCALLTYPE InitializeForRestore(
1001        BSTR bstrXML) = 0;
1002
1003    virtual HRESULT STDMETHODCALLTYPE SetRestoreState(
1004        VSS_RESTORE_TYPE restoreType) = 0;
1005
1006    virtual HRESULT STDMETHODCALLTYPE GatherWriterMetadata(
1007        IVssAsync **pAsync) = 0;
1008
1009    virtual HRESULT STDMETHODCALLTYPE GetWriterMetadataCount(
1010        UINT *pcWriters) = 0;
1011
1012    virtual HRESULT STDMETHODCALLTYPE GetWriterMetadata(
1013        UINT iWriter,
1014        VSS_ID *pidInstance,
1015        IVssExamineWriterMetadata **ppMetadata) = 0;
1016
1017    virtual HRESULT STDMETHODCALLTYPE FreeWriterMetadata(
1018        ) = 0;
1019
1020    virtual HRESULT STDMETHODCALLTYPE AddComponent(
1021        VSS_ID instanceId,
1022        VSS_ID writerId,
1023        VSS_COMPONENT_TYPE ct,
1024        LPCWSTR wszLogicalPath,
1025        LPCWSTR wszComponentName) = 0;
1026
1027    virtual HRESULT STDMETHODCALLTYPE PrepareForBackup(
1028        IVssAsync **ppAsync) = 0;
1029
1030    virtual HRESULT STDMETHODCALLTYPE AbortBackup(
1031        ) = 0;
1032
1033    virtual HRESULT STDMETHODCALLTYPE GatherWriterStatus(
1034        IVssAsync **pAsync) = 0;
1035
1036    virtual HRESULT STDMETHODCALLTYPE GetWriterStatusCount(
1037        UINT *pcWriters) = 0;
1038
1039    virtual HRESULT STDMETHODCALLTYPE FreeWriterStatus(
1040        ) = 0;
1041
1042    virtual HRESULT STDMETHODCALLTYPE GetWriterStatus(
1043        UINT iWriter,
1044        VSS_ID *pidInstance,
1045        VSS_ID *pidWriter,
1046        BSTR *pbstrWriter,
1047        VSS_WRITER_STATE *pnStatus,
1048        HRESULT *phResultFailure) = 0;
1049
1050    virtual HRESULT STDMETHODCALLTYPE SetBackupSucceeded(
1051        VSS_ID instanceId,
1052        VSS_ID writerId,
1053        VSS_COMPONENT_TYPE ct,
1054        LPCWSTR wszLogicalPath,
1055        LPCWSTR wszComponentName,
1056        boolean bSucceded) = 0;
1057
1058    virtual HRESULT STDMETHODCALLTYPE SetBackupOptions(
1059        VSS_ID writerId,
1060        VSS_COMPONENT_TYPE ct,
1061        LPCWSTR wszLogicalPath,
1062        LPCWSTR wszComponentName,
1063        LPCWSTR wszBackupOptions) = 0;
1064
1065    virtual HRESULT STDMETHODCALLTYPE SetSelectedForRestore(
1066        VSS_ID writerId,
1067        VSS_COMPONENT_TYPE ct,
1068        LPCWSTR wszLogicalPath,
1069        LPCWSTR wszComponentName,
1070        boolean bSelectedForRestore) = 0;
1071
1072    virtual HRESULT STDMETHODCALLTYPE SetRestoreOptions(
1073        VSS_ID writerId,
1074        VSS_COMPONENT_TYPE ct,
1075        LPCWSTR wszLogicalPath,
1076        LPCWSTR wszComponentName,
1077        LPCWSTR wszRestoreOptions) = 0;
1078
1079    virtual HRESULT STDMETHODCALLTYPE SetAdditionalRestores(
1080        VSS_ID writerId,
1081        VSS_COMPONENT_TYPE ct,
1082        LPCWSTR wszLogicalPath,
1083        LPCWSTR wszComponentName,
1084        boolean bAdditionalRestores) = 0;
1085
1086    virtual HRESULT STDMETHODCALLTYPE SetPreviousBackupStamp(
1087        VSS_ID writerId,
1088        VSS_COMPONENT_TYPE ct,
1089        LPCWSTR wszLogicalPath,
1090        LPCWSTR wszComponentName,
1091        LPCWSTR wszPreviousBackupStamp) = 0;
1092
1093    virtual HRESULT STDMETHODCALLTYPE SaveAsXML(
1094        BSTR *pbstrXML) = 0;
1095
1096    virtual HRESULT STDMETHODCALLTYPE BackupComplete(
1097        IVssAsync **ppAsync) = 0;
1098
1099    virtual HRESULT STDMETHODCALLTYPE AddAlternativeLocationMapping(
1100        VSS_ID writerId,
1101        VSS_COMPONENT_TYPE componentType,
1102        LPCWSTR wszLogicalPath,
1103        LPCWSTR wszComponentName,
1104        LPCWSTR wszPath,
1105        LPCWSTR wszFilespec,
1106        boolean bRecursive,
1107        LPCWSTR wszDestination) = 0;
1108
1109    virtual HRESULT STDMETHODCALLTYPE AddRestoreSubcomponent(
1110        VSS_ID writerId,
1111        VSS_COMPONENT_TYPE componentType,
1112        LPCWSTR wszLogicalPath,
1113        LPCWSTR wszComponentName,
1114        LPCWSTR wszSubComponentLogicalPath,
1115        LPCWSTR wszSubComponentName,
1116        boolean bRepair) = 0;
1117
1118    virtual HRESULT STDMETHODCALLTYPE SetFileRestoreStatus(
1119        VSS_ID writerId,
1120        VSS_COMPONENT_TYPE ct,
1121        LPCWSTR wszLogicalPath,
1122        LPCWSTR wszComponentName,
1123        VSS_FILE_RESTORE_STATUS status) = 0;
1124
1125    virtual HRESULT STDMETHODCALLTYPE AddNewTarget(
1126        VSS_ID writerId,
1127        VSS_COMPONENT_TYPE ct,
1128        LPCWSTR wszLogicalPath,
1129        LPCWSTR wszComponentName,
1130        LPCWSTR wszPath,
1131        LPCWSTR wszFileName,
1132        boolean bRecursive,
1133        LPCWSTR wszAlternatePath) = 0;
1134
1135    virtual HRESULT STDMETHODCALLTYPE SetRangesFilePath(
1136        VSS_ID writerId,
1137        VSS_COMPONENT_TYPE ct,
1138        LPCWSTR wszLogicalPath,
1139        LPCWSTR wszComponentName,
1140        UINT iPartialFile,
1141        LPCWSTR wszRangesFile) = 0;
1142
1143    virtual HRESULT STDMETHODCALLTYPE PreRestore(
1144        IVssAsync **ppAsync) = 0;
1145
1146    virtual HRESULT STDMETHODCALLTYPE PostRestore(
1147        IVssAsync **ppAsync) = 0;
1148
1149    virtual HRESULT STDMETHODCALLTYPE SetContext(
1150        LONG lContext) = 0;
1151
1152    virtual HRESULT STDMETHODCALLTYPE StartSnapshotSet(
1153        VSS_ID *pSnapshotSetId) = 0;
1154
1155    virtual HRESULT STDMETHODCALLTYPE AddToSnapshotSet(
1156        VSS_PWSZ pwszVolumeName,
1157        VSS_ID ProviderId,
1158        VSS_ID *pidSnapshot) = 0;
1159
1160    virtual HRESULT STDMETHODCALLTYPE DoSnapshotSet(
1161        IVssAsync **ppAsync) = 0;
1162
1163    virtual HRESULT STDMETHODCALLTYPE DeleteSnapshots(
1164        VSS_ID SourceObjectId,
1165        VSS_OBJECT_TYPE eSourceObjectType,
1166        WINBOOL bForceDelete,
1167        LONG *plDeletedSnapshots,
1168        VSS_ID *pNondeletedSnapshotID) = 0;
1169
1170    virtual HRESULT STDMETHODCALLTYPE ImportSnapshots(
1171        IVssAsync **ppAsync) = 0;
1172
1173    virtual HRESULT STDMETHODCALLTYPE BreakSnapshotSet(
1174        VSS_ID SnapshotSetId) = 0;
1175
1176    virtual HRESULT STDMETHODCALLTYPE GetSnapshotProperties(
1177        VSS_ID SnapshotId,
1178        VSS_SNAPSHOT_PROP *pProp) = 0;
1179
1180    virtual HRESULT STDMETHODCALLTYPE Query(
1181        VSS_ID QueriedObjectId,
1182        VSS_OBJECT_TYPE eQueriedObjectType,
1183        VSS_OBJECT_TYPE eReturnedObjectsType,
1184        IVssEnumObject **ppEnum) = 0;
1185
1186    virtual HRESULT STDMETHODCALLTYPE IsVolumeSupported(
1187        VSS_ID ProviderId,
1188        VSS_PWSZ pwszVolumeName,
1189        WINBOOL *pbSupportedByThisProvider) = 0;
1190
1191    virtual HRESULT STDMETHODCALLTYPE DisableWriterClasses(
1192        const VSS_ID *rgWriterClassId,
1193        UINT cClassId) = 0;
1194
1195    virtual HRESULT STDMETHODCALLTYPE EnableWriterClasses(
1196        const VSS_ID *rgWriterClassId,
1197        UINT cClassId) = 0;
1198
1199    virtual HRESULT STDMETHODCALLTYPE DisableWriterInstances(
1200        const VSS_ID *rgWriterInstanceId,
1201        UINT cInstanceId) = 0;
1202
1203    virtual HRESULT STDMETHODCALLTYPE ExposeSnapshot(
1204        VSS_ID SnapshotId,
1205        VSS_PWSZ wszPathFromRoot,
1206        LONG lAttributes,
1207        VSS_PWSZ wszExpose,
1208        VSS_PWSZ *pwszExposed) = 0;
1209
1210    virtual HRESULT STDMETHODCALLTYPE RevertToSnapshot(
1211        VSS_ID SnapshotId,
1212        WINBOOL bForceDismount) = 0;
1213
1214    virtual HRESULT STDMETHODCALLTYPE QueryRevertStatus(
1215        VSS_PWSZ pwszVolume,
1216        IVssAsync **ppAsync) = 0;
1217
1218};
1219#ifdef __CRT_UUID_DECL
1220__CRT_UUID_DECL(IVssBackupComponents, 0x665c1d5f, 0xc218, 0x414d, 0xa0,0x5d, 0x7f,0xef,0x5f,0x9d,0x5c,0x86)
1221#endif
1222#else
1223typedef struct IVssBackupComponentsVtbl {
1224    BEGIN_INTERFACE
1225
1226    /*** IUnknown methods ***/
1227    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1228        IVssBackupComponents *This,
1229        REFIID riid,
1230        void **ppvObject);
1231
1232    ULONG (STDMETHODCALLTYPE *AddRef)(
1233        IVssBackupComponents *This);
1234
1235    ULONG (STDMETHODCALLTYPE *Release)(
1236        IVssBackupComponents *This);
1237
1238    /*** IVssBackupComponents methods ***/
1239    HRESULT (STDMETHODCALLTYPE *GetWriterComponentsCount)(
1240        IVssBackupComponents *This,
1241        UINT *pcComponents);
1242
1243    HRESULT (STDMETHODCALLTYPE *GetWriterComponents)(
1244        IVssBackupComponents *This,
1245        UINT iWriter,
1246        IVssWriterComponentsExt **ppWriter);
1247
1248    HRESULT (STDMETHODCALLTYPE *InitializeForBackup)(
1249        IVssBackupComponents *This,
1250        BSTR bstrXML);
1251
1252    HRESULT (STDMETHODCALLTYPE *SetBackupState)(
1253        IVssBackupComponents *This,
1254        boolean bSelectComponents,
1255        boolean bBackupBootableSystemState,
1256        VSS_BACKUP_TYPE backupType,
1257        boolean bPartialFileSupport);
1258
1259    HRESULT (STDMETHODCALLTYPE *InitializeForRestore)(
1260        IVssBackupComponents *This,
1261        BSTR bstrXML);
1262
1263    HRESULT (STDMETHODCALLTYPE *SetRestoreState)(
1264        IVssBackupComponents *This,
1265        VSS_RESTORE_TYPE restoreType);
1266
1267    HRESULT (STDMETHODCALLTYPE *GatherWriterMetadata)(
1268        IVssBackupComponents *This,
1269        IVssAsync **pAsync);
1270
1271    HRESULT (STDMETHODCALLTYPE *GetWriterMetadataCount)(
1272        IVssBackupComponents *This,
1273        UINT *pcWriters);
1274
1275    HRESULT (STDMETHODCALLTYPE *GetWriterMetadata)(
1276        IVssBackupComponents *This,
1277        UINT iWriter,
1278        VSS_ID *pidInstance,
1279        IVssExamineWriterMetadata **ppMetadata);
1280
1281    HRESULT (STDMETHODCALLTYPE *FreeWriterMetadata)(
1282        IVssBackupComponents *This);
1283
1284    HRESULT (STDMETHODCALLTYPE *AddComponent)(
1285        IVssBackupComponents *This,
1286        VSS_ID instanceId,
1287        VSS_ID writerId,
1288        VSS_COMPONENT_TYPE ct,
1289        LPCWSTR wszLogicalPath,
1290        LPCWSTR wszComponentName);
1291
1292    HRESULT (STDMETHODCALLTYPE *PrepareForBackup)(
1293        IVssBackupComponents *This,
1294        IVssAsync **ppAsync);
1295
1296    HRESULT (STDMETHODCALLTYPE *AbortBackup)(
1297        IVssBackupComponents *This);
1298
1299    HRESULT (STDMETHODCALLTYPE *GatherWriterStatus)(
1300        IVssBackupComponents *This,
1301        IVssAsync **pAsync);
1302
1303    HRESULT (STDMETHODCALLTYPE *GetWriterStatusCount)(
1304        IVssBackupComponents *This,
1305        UINT *pcWriters);
1306
1307    HRESULT (STDMETHODCALLTYPE *FreeWriterStatus)(
1308        IVssBackupComponents *This);
1309
1310    HRESULT (STDMETHODCALLTYPE *GetWriterStatus)(
1311        IVssBackupComponents *This,
1312        UINT iWriter,
1313        VSS_ID *pidInstance,
1314        VSS_ID *pidWriter,
1315        BSTR *pbstrWriter,
1316        VSS_WRITER_STATE *pnStatus,
1317        HRESULT *phResultFailure);
1318
1319    HRESULT (STDMETHODCALLTYPE *SetBackupSucceeded)(
1320        IVssBackupComponents *This,
1321        VSS_ID instanceId,
1322        VSS_ID writerId,
1323        VSS_COMPONENT_TYPE ct,
1324        LPCWSTR wszLogicalPath,
1325        LPCWSTR wszComponentName,
1326        boolean bSucceded);
1327
1328    HRESULT (STDMETHODCALLTYPE *SetBackupOptions)(
1329        IVssBackupComponents *This,
1330        VSS_ID writerId,
1331        VSS_COMPONENT_TYPE ct,
1332        LPCWSTR wszLogicalPath,
1333        LPCWSTR wszComponentName,
1334        LPCWSTR wszBackupOptions);
1335
1336    HRESULT (STDMETHODCALLTYPE *SetSelectedForRestore)(
1337        IVssBackupComponents *This,
1338        VSS_ID writerId,
1339        VSS_COMPONENT_TYPE ct,
1340        LPCWSTR wszLogicalPath,
1341        LPCWSTR wszComponentName,
1342        boolean bSelectedForRestore);
1343
1344    HRESULT (STDMETHODCALLTYPE *SetRestoreOptions)(
1345        IVssBackupComponents *This,
1346        VSS_ID writerId,
1347        VSS_COMPONENT_TYPE ct,
1348        LPCWSTR wszLogicalPath,
1349        LPCWSTR wszComponentName,
1350        LPCWSTR wszRestoreOptions);
1351
1352    HRESULT (STDMETHODCALLTYPE *SetAdditionalRestores)(
1353        IVssBackupComponents *This,
1354        VSS_ID writerId,
1355        VSS_COMPONENT_TYPE ct,
1356        LPCWSTR wszLogicalPath,
1357        LPCWSTR wszComponentName,
1358        boolean bAdditionalRestores);
1359
1360    HRESULT (STDMETHODCALLTYPE *SetPreviousBackupStamp)(
1361        IVssBackupComponents *This,
1362        VSS_ID writerId,
1363        VSS_COMPONENT_TYPE ct,
1364        LPCWSTR wszLogicalPath,
1365        LPCWSTR wszComponentName,
1366        LPCWSTR wszPreviousBackupStamp);
1367
1368    HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
1369        IVssBackupComponents *This,
1370        BSTR *pbstrXML);
1371
1372    HRESULT (STDMETHODCALLTYPE *BackupComplete)(
1373        IVssBackupComponents *This,
1374        IVssAsync **ppAsync);
1375
1376    HRESULT (STDMETHODCALLTYPE *AddAlternativeLocationMapping)(
1377        IVssBackupComponents *This,
1378        VSS_ID writerId,
1379        VSS_COMPONENT_TYPE componentType,
1380        LPCWSTR wszLogicalPath,
1381        LPCWSTR wszComponentName,
1382        LPCWSTR wszPath,
1383        LPCWSTR wszFilespec,
1384        boolean bRecursive,
1385        LPCWSTR wszDestination);
1386
1387    HRESULT (STDMETHODCALLTYPE *AddRestoreSubcomponent)(
1388        IVssBackupComponents *This,
1389        VSS_ID writerId,
1390        VSS_COMPONENT_TYPE componentType,
1391        LPCWSTR wszLogicalPath,
1392        LPCWSTR wszComponentName,
1393        LPCWSTR wszSubComponentLogicalPath,
1394        LPCWSTR wszSubComponentName,
1395        boolean bRepair);
1396
1397    HRESULT (STDMETHODCALLTYPE *SetFileRestoreStatus)(
1398        IVssBackupComponents *This,
1399        VSS_ID writerId,
1400        VSS_COMPONENT_TYPE ct,
1401        LPCWSTR wszLogicalPath,
1402        LPCWSTR wszComponentName,
1403        VSS_FILE_RESTORE_STATUS status);
1404
1405    HRESULT (STDMETHODCALLTYPE *AddNewTarget)(
1406        IVssBackupComponents *This,
1407        VSS_ID writerId,
1408        VSS_COMPONENT_TYPE ct,
1409        LPCWSTR wszLogicalPath,
1410        LPCWSTR wszComponentName,
1411        LPCWSTR wszPath,
1412        LPCWSTR wszFileName,
1413        boolean bRecursive,
1414        LPCWSTR wszAlternatePath);
1415
1416    HRESULT (STDMETHODCALLTYPE *SetRangesFilePath)(
1417        IVssBackupComponents *This,
1418        VSS_ID writerId,
1419        VSS_COMPONENT_TYPE ct,
1420        LPCWSTR wszLogicalPath,
1421        LPCWSTR wszComponentName,
1422        UINT iPartialFile,
1423        LPCWSTR wszRangesFile);
1424
1425    HRESULT (STDMETHODCALLTYPE *PreRestore)(
1426        IVssBackupComponents *This,
1427        IVssAsync **ppAsync);
1428
1429    HRESULT (STDMETHODCALLTYPE *PostRestore)(
1430        IVssBackupComponents *This,
1431        IVssAsync **ppAsync);
1432
1433    HRESULT (STDMETHODCALLTYPE *SetContext)(
1434        IVssBackupComponents *This,
1435        LONG lContext);
1436
1437    HRESULT (STDMETHODCALLTYPE *StartSnapshotSet)(
1438        IVssBackupComponents *This,
1439        VSS_ID *pSnapshotSetId);
1440
1441    HRESULT (STDMETHODCALLTYPE *AddToSnapshotSet)(
1442        IVssBackupComponents *This,
1443        VSS_PWSZ pwszVolumeName,
1444        VSS_ID ProviderId,
1445        VSS_ID *pidSnapshot);
1446
1447    HRESULT (STDMETHODCALLTYPE *DoSnapshotSet)(
1448        IVssBackupComponents *This,
1449        IVssAsync **ppAsync);
1450
1451    HRESULT (STDMETHODCALLTYPE *DeleteSnapshots)(
1452        IVssBackupComponents *This,
1453        VSS_ID SourceObjectId,
1454        VSS_OBJECT_TYPE eSourceObjectType,
1455        WINBOOL bForceDelete,
1456        LONG *plDeletedSnapshots,
1457        VSS_ID *pNondeletedSnapshotID);
1458
1459    HRESULT (STDMETHODCALLTYPE *ImportSnapshots)(
1460        IVssBackupComponents *This,
1461        IVssAsync **ppAsync);
1462
1463    HRESULT (STDMETHODCALLTYPE *BreakSnapshotSet)(
1464        IVssBackupComponents *This,
1465        VSS_ID SnapshotSetId);
1466
1467    HRESULT (STDMETHODCALLTYPE *GetSnapshotProperties)(
1468        IVssBackupComponents *This,
1469        VSS_ID SnapshotId,
1470        VSS_SNAPSHOT_PROP *pProp);
1471
1472    HRESULT (STDMETHODCALLTYPE *Query)(
1473        IVssBackupComponents *This,
1474        VSS_ID QueriedObjectId,
1475        VSS_OBJECT_TYPE eQueriedObjectType,
1476        VSS_OBJECT_TYPE eReturnedObjectsType,
1477        IVssEnumObject **ppEnum);
1478
1479    HRESULT (STDMETHODCALLTYPE *IsVolumeSupported)(
1480        IVssBackupComponents *This,
1481        VSS_ID ProviderId,
1482        VSS_PWSZ pwszVolumeName,
1483        WINBOOL *pbSupportedByThisProvider);
1484
1485    HRESULT (STDMETHODCALLTYPE *DisableWriterClasses)(
1486        IVssBackupComponents *This,
1487        const VSS_ID *rgWriterClassId,
1488        UINT cClassId);
1489
1490    HRESULT (STDMETHODCALLTYPE *EnableWriterClasses)(
1491        IVssBackupComponents *This,
1492        const VSS_ID *rgWriterClassId,
1493        UINT cClassId);
1494
1495    HRESULT (STDMETHODCALLTYPE *DisableWriterInstances)(
1496        IVssBackupComponents *This,
1497        const VSS_ID *rgWriterInstanceId,
1498        UINT cInstanceId);
1499
1500    HRESULT (STDMETHODCALLTYPE *ExposeSnapshot)(
1501        IVssBackupComponents *This,
1502        VSS_ID SnapshotId,
1503        VSS_PWSZ wszPathFromRoot,
1504        LONG lAttributes,
1505        VSS_PWSZ wszExpose,
1506        VSS_PWSZ *pwszExposed);
1507
1508    HRESULT (STDMETHODCALLTYPE *RevertToSnapshot)(
1509        IVssBackupComponents *This,
1510        VSS_ID SnapshotId,
1511        WINBOOL bForceDismount);
1512
1513    HRESULT (STDMETHODCALLTYPE *QueryRevertStatus)(
1514        IVssBackupComponents *This,
1515        VSS_PWSZ pwszVolume,
1516        IVssAsync **ppAsync);
1517
1518    END_INTERFACE
1519} IVssBackupComponentsVtbl;
1520
1521interface IVssBackupComponents {
1522    CONST_VTBL IVssBackupComponentsVtbl* lpVtbl;
1523};
1524
1525#ifdef COBJMACROS
1526#ifndef WIDL_C_INLINE_WRAPPERS
1527/*** IUnknown methods ***/
1528#define IVssBackupComponents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1529#define IVssBackupComponents_AddRef(This) (This)->lpVtbl->AddRef(This)
1530#define IVssBackupComponents_Release(This) (This)->lpVtbl->Release(This)
1531/*** IVssBackupComponents methods ***/
1532#define IVssBackupComponents_GetWriterComponentsCount(This,pcComponents) (This)->lpVtbl->GetWriterComponentsCount(This,pcComponents)
1533#define IVssBackupComponents_GetWriterComponents(This,iWriter,ppWriter) (This)->lpVtbl->GetWriterComponents(This,iWriter,ppWriter)
1534#define IVssBackupComponents_InitializeForBackup(This,bstrXML) (This)->lpVtbl->InitializeForBackup(This,bstrXML)
1535#define IVssBackupComponents_SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport) (This)->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport)
1536#define IVssBackupComponents_InitializeForRestore(This,bstrXML) (This)->lpVtbl->InitializeForRestore(This,bstrXML)
1537#define IVssBackupComponents_SetRestoreState(This,restoreType) (This)->lpVtbl->SetRestoreState(This,restoreType)
1538#define IVssBackupComponents_GatherWriterMetadata(This,pAsync) (This)->lpVtbl->GatherWriterMetadata(This,pAsync)
1539#define IVssBackupComponents_GetWriterMetadataCount(This,pcWriters) (This)->lpVtbl->GetWriterMetadataCount(This,pcWriters)
1540#define IVssBackupComponents_GetWriterMetadata(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata)
1541#define IVssBackupComponents_FreeWriterMetadata(This) (This)->lpVtbl->FreeWriterMetadata(This)
1542#define IVssBackupComponents_AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName) (This)->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName)
1543#define IVssBackupComponents_PrepareForBackup(This,ppAsync) (This)->lpVtbl->PrepareForBackup(This,ppAsync)
1544#define IVssBackupComponents_AbortBackup(This) (This)->lpVtbl->AbortBackup(This)
1545#define IVssBackupComponents_GatherWriterStatus(This,pAsync) (This)->lpVtbl->GatherWriterStatus(This,pAsync)
1546#define IVssBackupComponents_GetWriterStatusCount(This,pcWriters) (This)->lpVtbl->GetWriterStatusCount(This,pcWriters)
1547#define IVssBackupComponents_FreeWriterStatus(This) (This)->lpVtbl->FreeWriterStatus(This)
1548#define IVssBackupComponents_GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure) (This)->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure)
1549#define IVssBackupComponents_SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded) (This)->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded)
1550#define IVssBackupComponents_SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions) (This)->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions)
1551#define IVssBackupComponents_SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore) (This)->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore)
1552#define IVssBackupComponents_SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions) (This)->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions)
1553#define IVssBackupComponents_SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores) (This)->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores)
1554#define IVssBackupComponents_SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp) (This)->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp)
1555#define IVssBackupComponents_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
1556#define IVssBackupComponents_BackupComplete(This,ppAsync) (This)->lpVtbl->BackupComplete(This,ppAsync)
1557#define IVssBackupComponents_AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination) (This)->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination)
1558#define IVssBackupComponents_AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair) (This)->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair)
1559#define IVssBackupComponents_SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status) (This)->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status)
1560#define IVssBackupComponents_AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath) (This)->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath)
1561#define IVssBackupComponents_SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile) (This)->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile)
1562#define IVssBackupComponents_PreRestore(This,ppAsync) (This)->lpVtbl->PreRestore(This,ppAsync)
1563#define IVssBackupComponents_PostRestore(This,ppAsync) (This)->lpVtbl->PostRestore(This,ppAsync)
1564#define IVssBackupComponents_SetContext(This,lContext) (This)->lpVtbl->SetContext(This,lContext)
1565#define IVssBackupComponents_StartSnapshotSet(This,pSnapshotSetId) (This)->lpVtbl->StartSnapshotSet(This,pSnapshotSetId)
1566#define IVssBackupComponents_AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot) (This)->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot)
1567#define IVssBackupComponents_DoSnapshotSet(This,ppAsync) (This)->lpVtbl->DoSnapshotSet(This,ppAsync)
1568#define IVssBackupComponents_DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID) (This)->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID)
1569#define IVssBackupComponents_ImportSnapshots(This,ppAsync) (This)->lpVtbl->ImportSnapshots(This,ppAsync)
1570#define IVssBackupComponents_BreakSnapshotSet(This,SnapshotSetId) (This)->lpVtbl->BreakSnapshotSet(This,SnapshotSetId)
1571#define IVssBackupComponents_GetSnapshotProperties(This,SnapshotId,pProp) (This)->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp)
1572#define IVssBackupComponents_Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum) (This)->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum)
1573#define IVssBackupComponents_IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider) (This)->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider)
1574#define IVssBackupComponents_DisableWriterClasses(This,rgWriterClassId,cClassId) (This)->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId)
1575#define IVssBackupComponents_EnableWriterClasses(This,rgWriterClassId,cClassId) (This)->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId)
1576#define IVssBackupComponents_DisableWriterInstances(This,rgWriterInstanceId,cInstanceId) (This)->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId)
1577#define IVssBackupComponents_ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed) (This)->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed)
1578#define IVssBackupComponents_RevertToSnapshot(This,SnapshotId,bForceDismount) (This)->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount)
1579#define IVssBackupComponents_QueryRevertStatus(This,pwszVolume,ppAsync) (This)->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync)
1580#else
1581/*** IUnknown methods ***/
1582static inline HRESULT IVssBackupComponents_QueryInterface(IVssBackupComponents* This,REFIID riid,void **ppvObject) {
1583    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1584}
1585static inline ULONG IVssBackupComponents_AddRef(IVssBackupComponents* This) {
1586    return This->lpVtbl->AddRef(This);
1587}
1588static inline ULONG IVssBackupComponents_Release(IVssBackupComponents* This) {
1589    return This->lpVtbl->Release(This);
1590}
1591/*** IVssBackupComponents methods ***/
1592static inline HRESULT IVssBackupComponents_GetWriterComponentsCount(IVssBackupComponents* This,UINT *pcComponents) {
1593    return This->lpVtbl->GetWriterComponentsCount(This,pcComponents);
1594}
1595static inline HRESULT IVssBackupComponents_GetWriterComponents(IVssBackupComponents* This,UINT iWriter,IVssWriterComponentsExt **ppWriter) {
1596    return This->lpVtbl->GetWriterComponents(This,iWriter,ppWriter);
1597}
1598static inline HRESULT IVssBackupComponents_InitializeForBackup(IVssBackupComponents* This,BSTR bstrXML) {
1599    return This->lpVtbl->InitializeForBackup(This,bstrXML);
1600}
1601static inline HRESULT IVssBackupComponents_SetBackupState(IVssBackupComponents* This,boolean bSelectComponents,boolean bBackupBootableSystemState,VSS_BACKUP_TYPE backupType,boolean bPartialFileSupport) {
1602    return This->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport);
1603}
1604static inline HRESULT IVssBackupComponents_InitializeForRestore(IVssBackupComponents* This,BSTR bstrXML) {
1605    return This->lpVtbl->InitializeForRestore(This,bstrXML);
1606}
1607static inline HRESULT IVssBackupComponents_SetRestoreState(IVssBackupComponents* This,VSS_RESTORE_TYPE restoreType) {
1608    return This->lpVtbl->SetRestoreState(This,restoreType);
1609}
1610static inline HRESULT IVssBackupComponents_GatherWriterMetadata(IVssBackupComponents* This,IVssAsync **pAsync) {
1611    return This->lpVtbl->GatherWriterMetadata(This,pAsync);
1612}
1613static inline HRESULT IVssBackupComponents_GetWriterMetadataCount(IVssBackupComponents* This,UINT *pcWriters) {
1614    return This->lpVtbl->GetWriterMetadataCount(This,pcWriters);
1615}
1616static inline HRESULT IVssBackupComponents_GetWriterMetadata(IVssBackupComponents* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadata **ppMetadata) {
1617    return This->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata);
1618}
1619static inline HRESULT IVssBackupComponents_FreeWriterMetadata(IVssBackupComponents* This) {
1620    return This->lpVtbl->FreeWriterMetadata(This);
1621}
1622static inline HRESULT IVssBackupComponents_AddComponent(IVssBackupComponents* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName) {
1623    return This->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName);
1624}
1625static inline HRESULT IVssBackupComponents_PrepareForBackup(IVssBackupComponents* This,IVssAsync **ppAsync) {
1626    return This->lpVtbl->PrepareForBackup(This,ppAsync);
1627}
1628static inline HRESULT IVssBackupComponents_AbortBackup(IVssBackupComponents* This) {
1629    return This->lpVtbl->AbortBackup(This);
1630}
1631static inline HRESULT IVssBackupComponents_GatherWriterStatus(IVssBackupComponents* This,IVssAsync **pAsync) {
1632    return This->lpVtbl->GatherWriterStatus(This,pAsync);
1633}
1634static inline HRESULT IVssBackupComponents_GetWriterStatusCount(IVssBackupComponents* This,UINT *pcWriters) {
1635    return This->lpVtbl->GetWriterStatusCount(This,pcWriters);
1636}
1637static inline HRESULT IVssBackupComponents_FreeWriterStatus(IVssBackupComponents* This) {
1638    return This->lpVtbl->FreeWriterStatus(This);
1639}
1640static inline HRESULT IVssBackupComponents_GetWriterStatus(IVssBackupComponents* This,UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pnStatus,HRESULT *phResultFailure) {
1641    return This->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure);
1642}
1643static inline HRESULT IVssBackupComponents_SetBackupSucceeded(IVssBackupComponents* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSucceded) {
1644    return This->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded);
1645}
1646static inline HRESULT IVssBackupComponents_SetBackupOptions(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszBackupOptions) {
1647    return This->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions);
1648}
1649static inline HRESULT IVssBackupComponents_SetSelectedForRestore(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore) {
1650    return This->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore);
1651}
1652static inline HRESULT IVssBackupComponents_SetRestoreOptions(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreOptions) {
1653    return This->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions);
1654}
1655static inline HRESULT IVssBackupComponents_SetAdditionalRestores(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAdditionalRestores) {
1656    return This->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores);
1657}
1658static inline HRESULT IVssBackupComponents_SetPreviousBackupStamp(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPreviousBackupStamp) {
1659    return This->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp);
1660}
1661static inline HRESULT IVssBackupComponents_SaveAsXML(IVssBackupComponents* This,BSTR *pbstrXML) {
1662    return This->lpVtbl->SaveAsXML(This,pbstrXML);
1663}
1664static inline HRESULT IVssBackupComponents_BackupComplete(IVssBackupComponents* This,IVssAsync **ppAsync) {
1665    return This->lpVtbl->BackupComplete(This,ppAsync);
1666}
1667static inline HRESULT IVssBackupComponents_AddAlternativeLocationMapping(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszDestination) {
1668    return This->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination);
1669}
1670static inline HRESULT IVssBackupComponents_AddRestoreSubcomponent(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszSubComponentLogicalPath,LPCWSTR wszSubComponentName,boolean bRepair) {
1671    return This->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair);
1672}
1673static inline HRESULT IVssBackupComponents_SetFileRestoreStatus(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_FILE_RESTORE_STATUS status) {
1674    return This->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status);
1675}
1676static inline HRESULT IVssBackupComponents_AddNewTarget(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFileName,boolean bRecursive,LPCWSTR wszAlternatePath) {
1677    return This->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath);
1678}
1679static inline HRESULT IVssBackupComponents_SetRangesFilePath(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,UINT iPartialFile,LPCWSTR wszRangesFile) {
1680    return This->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile);
1681}
1682static inline HRESULT IVssBackupComponents_PreRestore(IVssBackupComponents* This,IVssAsync **ppAsync) {
1683    return This->lpVtbl->PreRestore(This,ppAsync);
1684}
1685static inline HRESULT IVssBackupComponents_PostRestore(IVssBackupComponents* This,IVssAsync **ppAsync) {
1686    return This->lpVtbl->PostRestore(This,ppAsync);
1687}
1688static inline HRESULT IVssBackupComponents_SetContext(IVssBackupComponents* This,LONG lContext) {
1689    return This->lpVtbl->SetContext(This,lContext);
1690}
1691static inline HRESULT IVssBackupComponents_StartSnapshotSet(IVssBackupComponents* This,VSS_ID *pSnapshotSetId) {
1692    return This->lpVtbl->StartSnapshotSet(This,pSnapshotSetId);
1693}
1694static inline HRESULT IVssBackupComponents_AddToSnapshotSet(IVssBackupComponents* This,VSS_PWSZ pwszVolumeName,VSS_ID ProviderId,VSS_ID *pidSnapshot) {
1695    return This->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot);
1696}
1697static inline HRESULT IVssBackupComponents_DoSnapshotSet(IVssBackupComponents* This,IVssAsync **ppAsync) {
1698    return This->lpVtbl->DoSnapshotSet(This,ppAsync);
1699}
1700static inline HRESULT IVssBackupComponents_DeleteSnapshots(IVssBackupComponents* This,VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,WINBOOL bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) {
1701    return This->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID);
1702}
1703static inline HRESULT IVssBackupComponents_ImportSnapshots(IVssBackupComponents* This,IVssAsync **ppAsync) {
1704    return This->lpVtbl->ImportSnapshots(This,ppAsync);
1705}
1706static inline HRESULT IVssBackupComponents_BreakSnapshotSet(IVssBackupComponents* This,VSS_ID SnapshotSetId) {
1707    return This->lpVtbl->BreakSnapshotSet(This,SnapshotSetId);
1708}
1709static inline HRESULT IVssBackupComponents_GetSnapshotProperties(IVssBackupComponents* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
1710    return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
1711}
1712static inline HRESULT IVssBackupComponents_Query(IVssBackupComponents* This,VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) {
1713    return This->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum);
1714}
1715static inline HRESULT IVssBackupComponents_IsVolumeSupported(IVssBackupComponents* This,VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
1716    return This->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider);
1717}
1718static inline HRESULT IVssBackupComponents_DisableWriterClasses(IVssBackupComponents* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
1719    return This->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId);
1720}
1721static inline HRESULT IVssBackupComponents_EnableWriterClasses(IVssBackupComponents* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
1722    return This->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId);
1723}
1724static inline HRESULT IVssBackupComponents_DisableWriterInstances(IVssBackupComponents* This,const VSS_ID *rgWriterInstanceId,UINT cInstanceId) {
1725    return This->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId);
1726}
1727static inline HRESULT IVssBackupComponents_ExposeSnapshot(IVssBackupComponents* This,VSS_ID SnapshotId,VSS_PWSZ wszPathFromRoot,LONG lAttributes,VSS_PWSZ wszExpose,VSS_PWSZ *pwszExposed) {
1728    return This->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed);
1729}
1730static inline HRESULT IVssBackupComponents_RevertToSnapshot(IVssBackupComponents* This,VSS_ID SnapshotId,WINBOOL bForceDismount) {
1731    return This->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount);
1732}
1733static inline HRESULT IVssBackupComponents_QueryRevertStatus(IVssBackupComponents* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
1734    return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
1735}
1736#endif
1737#endif
1738
1739#endif
1740
1741
1742#endif  /* __IVssBackupComponents_INTERFACE_DEFINED__ */
1743
1744/*****************************************************************************
1745 * IVssBackupComponentsEx interface
1746 */
1747#ifndef __IVssBackupComponentsEx_INTERFACE_DEFINED__
1748#define __IVssBackupComponentsEx_INTERFACE_DEFINED__
1749
1750DEFINE_GUID(IID_IVssBackupComponentsEx, 0x963f03ad, 0x9e4c, 0x4a34, 0xac,0x15, 0xe4,0xb6,0x17,0x4e,0x50,0x36);
1751#if defined(__cplusplus) && !defined(CINTERFACE)
1752MIDL_INTERFACE("963f03ad-9e4c-4a34-ac15-e4b6174e5036")
1753IVssBackupComponentsEx : public IVssBackupComponents
1754{
1755    virtual HRESULT STDMETHODCALLTYPE GetWriterMetadataEx(
1756        UINT iWriter,
1757        VSS_ID *pidInstance,
1758        IVssExamineWriterMetadataEx **ppMetadata) = 0;
1759
1760    virtual HRESULT STDMETHODCALLTYPE SetSelectedForRestoreEx(
1761        VSS_ID writerId,
1762        VSS_COMPONENT_TYPE ct,
1763        LPCWSTR wszLogicalPath,
1764        LPCWSTR wszComponentName,
1765        boolean bSelectedForRestore,
1766        VSS_ID instanceId) = 0;
1767
1768};
1769#ifdef __CRT_UUID_DECL
1770__CRT_UUID_DECL(IVssBackupComponentsEx, 0x963f03ad, 0x9e4c, 0x4a34, 0xac,0x15, 0xe4,0xb6,0x17,0x4e,0x50,0x36)
1771#endif
1772#else
1773typedef struct IVssBackupComponentsExVtbl {
1774    BEGIN_INTERFACE
1775
1776    /*** IUnknown methods ***/
1777    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1778        IVssBackupComponentsEx *This,
1779        REFIID riid,
1780        void **ppvObject);
1781
1782    ULONG (STDMETHODCALLTYPE *AddRef)(
1783        IVssBackupComponentsEx *This);
1784
1785    ULONG (STDMETHODCALLTYPE *Release)(
1786        IVssBackupComponentsEx *This);
1787
1788    /*** IVssBackupComponents methods ***/
1789    HRESULT (STDMETHODCALLTYPE *GetWriterComponentsCount)(
1790        IVssBackupComponentsEx *This,
1791        UINT *pcComponents);
1792
1793    HRESULT (STDMETHODCALLTYPE *GetWriterComponents)(
1794        IVssBackupComponentsEx *This,
1795        UINT iWriter,
1796        IVssWriterComponentsExt **ppWriter);
1797
1798    HRESULT (STDMETHODCALLTYPE *InitializeForBackup)(
1799        IVssBackupComponentsEx *This,
1800        BSTR bstrXML);
1801
1802    HRESULT (STDMETHODCALLTYPE *SetBackupState)(
1803        IVssBackupComponentsEx *This,
1804        boolean bSelectComponents,
1805        boolean bBackupBootableSystemState,
1806        VSS_BACKUP_TYPE backupType,
1807        boolean bPartialFileSupport);
1808
1809    HRESULT (STDMETHODCALLTYPE *InitializeForRestore)(
1810        IVssBackupComponentsEx *This,
1811        BSTR bstrXML);
1812
1813    HRESULT (STDMETHODCALLTYPE *SetRestoreState)(
1814        IVssBackupComponentsEx *This,
1815        VSS_RESTORE_TYPE restoreType);
1816
1817    HRESULT (STDMETHODCALLTYPE *GatherWriterMetadata)(
1818        IVssBackupComponentsEx *This,
1819        IVssAsync **pAsync);
1820
1821    HRESULT (STDMETHODCALLTYPE *GetWriterMetadataCount)(
1822        IVssBackupComponentsEx *This,
1823        UINT *pcWriters);
1824
1825    HRESULT (STDMETHODCALLTYPE *GetWriterMetadata)(
1826        IVssBackupComponentsEx *This,
1827        UINT iWriter,
1828        VSS_ID *pidInstance,
1829        IVssExamineWriterMetadata **ppMetadata);
1830
1831    HRESULT (STDMETHODCALLTYPE *FreeWriterMetadata)(
1832        IVssBackupComponentsEx *This);
1833
1834    HRESULT (STDMETHODCALLTYPE *AddComponent)(
1835        IVssBackupComponentsEx *This,
1836        VSS_ID instanceId,
1837        VSS_ID writerId,
1838        VSS_COMPONENT_TYPE ct,
1839        LPCWSTR wszLogicalPath,
1840        LPCWSTR wszComponentName);
1841
1842    HRESULT (STDMETHODCALLTYPE *PrepareForBackup)(
1843        IVssBackupComponentsEx *This,
1844        IVssAsync **ppAsync);
1845
1846    HRESULT (STDMETHODCALLTYPE *AbortBackup)(
1847        IVssBackupComponentsEx *This);
1848
1849    HRESULT (STDMETHODCALLTYPE *GatherWriterStatus)(
1850        IVssBackupComponentsEx *This,
1851        IVssAsync **pAsync);
1852
1853    HRESULT (STDMETHODCALLTYPE *GetWriterStatusCount)(
1854        IVssBackupComponentsEx *This,
1855        UINT *pcWriters);
1856
1857    HRESULT (STDMETHODCALLTYPE *FreeWriterStatus)(
1858        IVssBackupComponentsEx *This);
1859
1860    HRESULT (STDMETHODCALLTYPE *GetWriterStatus)(
1861        IVssBackupComponentsEx *This,
1862        UINT iWriter,
1863        VSS_ID *pidInstance,
1864        VSS_ID *pidWriter,
1865        BSTR *pbstrWriter,
1866        VSS_WRITER_STATE *pnStatus,
1867        HRESULT *phResultFailure);
1868
1869    HRESULT (STDMETHODCALLTYPE *SetBackupSucceeded)(
1870        IVssBackupComponentsEx *This,
1871        VSS_ID instanceId,
1872        VSS_ID writerId,
1873        VSS_COMPONENT_TYPE ct,
1874        LPCWSTR wszLogicalPath,
1875        LPCWSTR wszComponentName,
1876        boolean bSucceded);
1877
1878    HRESULT (STDMETHODCALLTYPE *SetBackupOptions)(
1879        IVssBackupComponentsEx *This,
1880        VSS_ID writerId,
1881        VSS_COMPONENT_TYPE ct,
1882        LPCWSTR wszLogicalPath,
1883        LPCWSTR wszComponentName,
1884        LPCWSTR wszBackupOptions);
1885
1886    HRESULT (STDMETHODCALLTYPE *SetSelectedForRestore)(
1887        IVssBackupComponentsEx *This,
1888        VSS_ID writerId,
1889        VSS_COMPONENT_TYPE ct,
1890        LPCWSTR wszLogicalPath,
1891        LPCWSTR wszComponentName,
1892        boolean bSelectedForRestore);
1893
1894    HRESULT (STDMETHODCALLTYPE *SetRestoreOptions)(
1895        IVssBackupComponentsEx *This,
1896        VSS_ID writerId,
1897        VSS_COMPONENT_TYPE ct,
1898        LPCWSTR wszLogicalPath,
1899        LPCWSTR wszComponentName,
1900        LPCWSTR wszRestoreOptions);
1901
1902    HRESULT (STDMETHODCALLTYPE *SetAdditionalRestores)(
1903        IVssBackupComponentsEx *This,
1904        VSS_ID writerId,
1905        VSS_COMPONENT_TYPE ct,
1906        LPCWSTR wszLogicalPath,
1907        LPCWSTR wszComponentName,
1908        boolean bAdditionalRestores);
1909
1910    HRESULT (STDMETHODCALLTYPE *SetPreviousBackupStamp)(
1911        IVssBackupComponentsEx *This,
1912        VSS_ID writerId,
1913        VSS_COMPONENT_TYPE ct,
1914        LPCWSTR wszLogicalPath,
1915        LPCWSTR wszComponentName,
1916        LPCWSTR wszPreviousBackupStamp);
1917
1918    HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
1919        IVssBackupComponentsEx *This,
1920        BSTR *pbstrXML);
1921
1922    HRESULT (STDMETHODCALLTYPE *BackupComplete)(
1923        IVssBackupComponentsEx *This,
1924        IVssAsync **ppAsync);
1925
1926    HRESULT (STDMETHODCALLTYPE *AddAlternativeLocationMapping)(
1927        IVssBackupComponentsEx *This,
1928        VSS_ID writerId,
1929        VSS_COMPONENT_TYPE componentType,
1930        LPCWSTR wszLogicalPath,
1931        LPCWSTR wszComponentName,
1932        LPCWSTR wszPath,
1933        LPCWSTR wszFilespec,
1934        boolean bRecursive,
1935        LPCWSTR wszDestination);
1936
1937    HRESULT (STDMETHODCALLTYPE *AddRestoreSubcomponent)(
1938        IVssBackupComponentsEx *This,
1939        VSS_ID writerId,
1940        VSS_COMPONENT_TYPE componentType,
1941        LPCWSTR wszLogicalPath,
1942        LPCWSTR wszComponentName,
1943        LPCWSTR wszSubComponentLogicalPath,
1944        LPCWSTR wszSubComponentName,
1945        boolean bRepair);
1946
1947    HRESULT (STDMETHODCALLTYPE *SetFileRestoreStatus)(
1948        IVssBackupComponentsEx *This,
1949        VSS_ID writerId,
1950        VSS_COMPONENT_TYPE ct,
1951        LPCWSTR wszLogicalPath,
1952        LPCWSTR wszComponentName,
1953        VSS_FILE_RESTORE_STATUS status);
1954
1955    HRESULT (STDMETHODCALLTYPE *AddNewTarget)(
1956        IVssBackupComponentsEx *This,
1957        VSS_ID writerId,
1958        VSS_COMPONENT_TYPE ct,
1959        LPCWSTR wszLogicalPath,
1960        LPCWSTR wszComponentName,
1961        LPCWSTR wszPath,
1962        LPCWSTR wszFileName,
1963        boolean bRecursive,
1964        LPCWSTR wszAlternatePath);
1965
1966    HRESULT (STDMETHODCALLTYPE *SetRangesFilePath)(
1967        IVssBackupComponentsEx *This,
1968        VSS_ID writerId,
1969        VSS_COMPONENT_TYPE ct,
1970        LPCWSTR wszLogicalPath,
1971        LPCWSTR wszComponentName,
1972        UINT iPartialFile,
1973        LPCWSTR wszRangesFile);
1974
1975    HRESULT (STDMETHODCALLTYPE *PreRestore)(
1976        IVssBackupComponentsEx *This,
1977        IVssAsync **ppAsync);
1978
1979    HRESULT (STDMETHODCALLTYPE *PostRestore)(
1980        IVssBackupComponentsEx *This,
1981        IVssAsync **ppAsync);
1982
1983    HRESULT (STDMETHODCALLTYPE *SetContext)(
1984        IVssBackupComponentsEx *This,
1985        LONG lContext);
1986
1987    HRESULT (STDMETHODCALLTYPE *StartSnapshotSet)(
1988        IVssBackupComponentsEx *This,
1989        VSS_ID *pSnapshotSetId);
1990
1991    HRESULT (STDMETHODCALLTYPE *AddToSnapshotSet)(
1992        IVssBackupComponentsEx *This,
1993        VSS_PWSZ pwszVolumeName,
1994        VSS_ID ProviderId,
1995        VSS_ID *pidSnapshot);
1996
1997    HRESULT (STDMETHODCALLTYPE *DoSnapshotSet)(
1998        IVssBackupComponentsEx *This,
1999        IVssAsync **ppAsync);
2000
2001    HRESULT (STDMETHODCALLTYPE *DeleteSnapshots)(
2002        IVssBackupComponentsEx *This,
2003        VSS_ID SourceObjectId,
2004        VSS_OBJECT_TYPE eSourceObjectType,
2005        WINBOOL bForceDelete,
2006        LONG *plDeletedSnapshots,
2007        VSS_ID *pNondeletedSnapshotID);
2008
2009    HRESULT (STDMETHODCALLTYPE *ImportSnapshots)(
2010        IVssBackupComponentsEx *This,
2011        IVssAsync **ppAsync);
2012
2013    HRESULT (STDMETHODCALLTYPE *BreakSnapshotSet)(
2014        IVssBackupComponentsEx *This,
2015        VSS_ID SnapshotSetId);
2016
2017    HRESULT (STDMETHODCALLTYPE *GetSnapshotProperties)(
2018        IVssBackupComponentsEx *This,
2019        VSS_ID SnapshotId,
2020        VSS_SNAPSHOT_PROP *pProp);
2021
2022    HRESULT (STDMETHODCALLTYPE *Query)(
2023        IVssBackupComponentsEx *This,
2024        VSS_ID QueriedObjectId,
2025        VSS_OBJECT_TYPE eQueriedObjectType,
2026        VSS_OBJECT_TYPE eReturnedObjectsType,
2027        IVssEnumObject **ppEnum);
2028
2029    HRESULT (STDMETHODCALLTYPE *IsVolumeSupported)(
2030        IVssBackupComponentsEx *This,
2031        VSS_ID ProviderId,
2032        VSS_PWSZ pwszVolumeName,
2033        WINBOOL *pbSupportedByThisProvider);
2034
2035    HRESULT (STDMETHODCALLTYPE *DisableWriterClasses)(
2036        IVssBackupComponentsEx *This,
2037        const VSS_ID *rgWriterClassId,
2038        UINT cClassId);
2039
2040    HRESULT (STDMETHODCALLTYPE *EnableWriterClasses)(
2041        IVssBackupComponentsEx *This,
2042        const VSS_ID *rgWriterClassId,
2043        UINT cClassId);
2044
2045    HRESULT (STDMETHODCALLTYPE *DisableWriterInstances)(
2046        IVssBackupComponentsEx *This,
2047        const VSS_ID *rgWriterInstanceId,
2048        UINT cInstanceId);
2049
2050    HRESULT (STDMETHODCALLTYPE *ExposeSnapshot)(
2051        IVssBackupComponentsEx *This,
2052        VSS_ID SnapshotId,
2053        VSS_PWSZ wszPathFromRoot,
2054        LONG lAttributes,
2055        VSS_PWSZ wszExpose,
2056        VSS_PWSZ *pwszExposed);
2057
2058    HRESULT (STDMETHODCALLTYPE *RevertToSnapshot)(
2059        IVssBackupComponentsEx *This,
2060        VSS_ID SnapshotId,
2061        WINBOOL bForceDismount);
2062
2063    HRESULT (STDMETHODCALLTYPE *QueryRevertStatus)(
2064        IVssBackupComponentsEx *This,
2065        VSS_PWSZ pwszVolume,
2066        IVssAsync **ppAsync);
2067
2068    /*** IVssBackupComponentsEx methods ***/
2069    HRESULT (STDMETHODCALLTYPE *GetWriterMetadataEx)(
2070        IVssBackupComponentsEx *This,
2071        UINT iWriter,
2072        VSS_ID *pidInstance,
2073        IVssExamineWriterMetadataEx **ppMetadata);
2074
2075    HRESULT (STDMETHODCALLTYPE *SetSelectedForRestoreEx)(
2076        IVssBackupComponentsEx *This,
2077        VSS_ID writerId,
2078        VSS_COMPONENT_TYPE ct,
2079        LPCWSTR wszLogicalPath,
2080        LPCWSTR wszComponentName,
2081        boolean bSelectedForRestore,
2082        VSS_ID instanceId);
2083
2084    END_INTERFACE
2085} IVssBackupComponentsExVtbl;
2086
2087interface IVssBackupComponentsEx {
2088    CONST_VTBL IVssBackupComponentsExVtbl* lpVtbl;
2089};
2090
2091#ifdef COBJMACROS
2092#ifndef WIDL_C_INLINE_WRAPPERS
2093/*** IUnknown methods ***/
2094#define IVssBackupComponentsEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2095#define IVssBackupComponentsEx_AddRef(This) (This)->lpVtbl->AddRef(This)
2096#define IVssBackupComponentsEx_Release(This) (This)->lpVtbl->Release(This)
2097/*** IVssBackupComponents methods ***/
2098#define IVssBackupComponentsEx_GetWriterComponentsCount(This,pcComponents) (This)->lpVtbl->GetWriterComponentsCount(This,pcComponents)
2099#define IVssBackupComponentsEx_GetWriterComponents(This,iWriter,ppWriter) (This)->lpVtbl->GetWriterComponents(This,iWriter,ppWriter)
2100#define IVssBackupComponentsEx_InitializeForBackup(This,bstrXML) (This)->lpVtbl->InitializeForBackup(This,bstrXML)
2101#define IVssBackupComponentsEx_SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport) (This)->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport)
2102#define IVssBackupComponentsEx_InitializeForRestore(This,bstrXML) (This)->lpVtbl->InitializeForRestore(This,bstrXML)
2103#define IVssBackupComponentsEx_SetRestoreState(This,restoreType) (This)->lpVtbl->SetRestoreState(This,restoreType)
2104#define IVssBackupComponentsEx_GatherWriterMetadata(This,pAsync) (This)->lpVtbl->GatherWriterMetadata(This,pAsync)
2105#define IVssBackupComponentsEx_GetWriterMetadataCount(This,pcWriters) (This)->lpVtbl->GetWriterMetadataCount(This,pcWriters)
2106#define IVssBackupComponentsEx_GetWriterMetadata(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata)
2107#define IVssBackupComponentsEx_FreeWriterMetadata(This) (This)->lpVtbl->FreeWriterMetadata(This)
2108#define IVssBackupComponentsEx_AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName) (This)->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName)
2109#define IVssBackupComponentsEx_PrepareForBackup(This,ppAsync) (This)->lpVtbl->PrepareForBackup(This,ppAsync)
2110#define IVssBackupComponentsEx_AbortBackup(This) (This)->lpVtbl->AbortBackup(This)
2111#define IVssBackupComponentsEx_GatherWriterStatus(This,pAsync) (This)->lpVtbl->GatherWriterStatus(This,pAsync)
2112#define IVssBackupComponentsEx_GetWriterStatusCount(This,pcWriters) (This)->lpVtbl->GetWriterStatusCount(This,pcWriters)
2113#define IVssBackupComponentsEx_FreeWriterStatus(This) (This)->lpVtbl->FreeWriterStatus(This)
2114#define IVssBackupComponentsEx_GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure) (This)->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure)
2115#define IVssBackupComponentsEx_SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded) (This)->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded)
2116#define IVssBackupComponentsEx_SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions) (This)->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions)
2117#define IVssBackupComponentsEx_SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore) (This)->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore)
2118#define IVssBackupComponentsEx_SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions) (This)->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions)
2119#define IVssBackupComponentsEx_SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores) (This)->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores)
2120#define IVssBackupComponentsEx_SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp) (This)->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp)
2121#define IVssBackupComponentsEx_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
2122#define IVssBackupComponentsEx_BackupComplete(This,ppAsync) (This)->lpVtbl->BackupComplete(This,ppAsync)
2123#define IVssBackupComponentsEx_AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination) (This)->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination)
2124#define IVssBackupComponentsEx_AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair) (This)->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair)
2125#define IVssBackupComponentsEx_SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status) (This)->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status)
2126#define IVssBackupComponentsEx_AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath) (This)->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath)
2127#define IVssBackupComponentsEx_SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile) (This)->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile)
2128#define IVssBackupComponentsEx_PreRestore(This,ppAsync) (This)->lpVtbl->PreRestore(This,ppAsync)
2129#define IVssBackupComponentsEx_PostRestore(This,ppAsync) (This)->lpVtbl->PostRestore(This,ppAsync)
2130#define IVssBackupComponentsEx_SetContext(This,lContext) (This)->lpVtbl->SetContext(This,lContext)
2131#define IVssBackupComponentsEx_StartSnapshotSet(This,pSnapshotSetId) (This)->lpVtbl->StartSnapshotSet(This,pSnapshotSetId)
2132#define IVssBackupComponentsEx_AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot) (This)->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot)
2133#define IVssBackupComponentsEx_DoSnapshotSet(This,ppAsync) (This)->lpVtbl->DoSnapshotSet(This,ppAsync)
2134#define IVssBackupComponentsEx_DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID) (This)->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID)
2135#define IVssBackupComponentsEx_ImportSnapshots(This,ppAsync) (This)->lpVtbl->ImportSnapshots(This,ppAsync)
2136#define IVssBackupComponentsEx_BreakSnapshotSet(This,SnapshotSetId) (This)->lpVtbl->BreakSnapshotSet(This,SnapshotSetId)
2137#define IVssBackupComponentsEx_GetSnapshotProperties(This,SnapshotId,pProp) (This)->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp)
2138#define IVssBackupComponentsEx_Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum) (This)->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum)
2139#define IVssBackupComponentsEx_IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider) (This)->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider)
2140#define IVssBackupComponentsEx_DisableWriterClasses(This,rgWriterClassId,cClassId) (This)->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId)
2141#define IVssBackupComponentsEx_EnableWriterClasses(This,rgWriterClassId,cClassId) (This)->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId)
2142#define IVssBackupComponentsEx_DisableWriterInstances(This,rgWriterInstanceId,cInstanceId) (This)->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId)
2143#define IVssBackupComponentsEx_ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed) (This)->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed)
2144#define IVssBackupComponentsEx_RevertToSnapshot(This,SnapshotId,bForceDismount) (This)->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount)
2145#define IVssBackupComponentsEx_QueryRevertStatus(This,pwszVolume,ppAsync) (This)->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync)
2146/*** IVssBackupComponentsEx methods ***/
2147#define IVssBackupComponentsEx_GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata)
2148#define IVssBackupComponentsEx_SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId) (This)->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId)
2149#else
2150/*** IUnknown methods ***/
2151static inline HRESULT IVssBackupComponentsEx_QueryInterface(IVssBackupComponentsEx* This,REFIID riid,void **ppvObject) {
2152    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2153}
2154static inline ULONG IVssBackupComponentsEx_AddRef(IVssBackupComponentsEx* This) {
2155    return This->lpVtbl->AddRef(This);
2156}
2157static inline ULONG IVssBackupComponentsEx_Release(IVssBackupComponentsEx* This) {
2158    return This->lpVtbl->Release(This);
2159}
2160/*** IVssBackupComponents methods ***/
2161static inline HRESULT IVssBackupComponentsEx_GetWriterComponentsCount(IVssBackupComponentsEx* This,UINT *pcComponents) {
2162    return This->lpVtbl->GetWriterComponentsCount(This,pcComponents);
2163}
2164static inline HRESULT IVssBackupComponentsEx_GetWriterComponents(IVssBackupComponentsEx* This,UINT iWriter,IVssWriterComponentsExt **ppWriter) {
2165    return This->lpVtbl->GetWriterComponents(This,iWriter,ppWriter);
2166}
2167static inline HRESULT IVssBackupComponentsEx_InitializeForBackup(IVssBackupComponentsEx* This,BSTR bstrXML) {
2168    return This->lpVtbl->InitializeForBackup(This,bstrXML);
2169}
2170static inline HRESULT IVssBackupComponentsEx_SetBackupState(IVssBackupComponentsEx* This,boolean bSelectComponents,boolean bBackupBootableSystemState,VSS_BACKUP_TYPE backupType,boolean bPartialFileSupport) {
2171    return This->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport);
2172}
2173static inline HRESULT IVssBackupComponentsEx_InitializeForRestore(IVssBackupComponentsEx* This,BSTR bstrXML) {
2174    return This->lpVtbl->InitializeForRestore(This,bstrXML);
2175}
2176static inline HRESULT IVssBackupComponentsEx_SetRestoreState(IVssBackupComponentsEx* This,VSS_RESTORE_TYPE restoreType) {
2177    return This->lpVtbl->SetRestoreState(This,restoreType);
2178}
2179static inline HRESULT IVssBackupComponentsEx_GatherWriterMetadata(IVssBackupComponentsEx* This,IVssAsync **pAsync) {
2180    return This->lpVtbl->GatherWriterMetadata(This,pAsync);
2181}
2182static inline HRESULT IVssBackupComponentsEx_GetWriterMetadataCount(IVssBackupComponentsEx* This,UINT *pcWriters) {
2183    return This->lpVtbl->GetWriterMetadataCount(This,pcWriters);
2184}
2185static inline HRESULT IVssBackupComponentsEx_GetWriterMetadata(IVssBackupComponentsEx* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadata **ppMetadata) {
2186    return This->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata);
2187}
2188static inline HRESULT IVssBackupComponentsEx_FreeWriterMetadata(IVssBackupComponentsEx* This) {
2189    return This->lpVtbl->FreeWriterMetadata(This);
2190}
2191static inline HRESULT IVssBackupComponentsEx_AddComponent(IVssBackupComponentsEx* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName) {
2192    return This->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName);
2193}
2194static inline HRESULT IVssBackupComponentsEx_PrepareForBackup(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
2195    return This->lpVtbl->PrepareForBackup(This,ppAsync);
2196}
2197static inline HRESULT IVssBackupComponentsEx_AbortBackup(IVssBackupComponentsEx* This) {
2198    return This->lpVtbl->AbortBackup(This);
2199}
2200static inline HRESULT IVssBackupComponentsEx_GatherWriterStatus(IVssBackupComponentsEx* This,IVssAsync **pAsync) {
2201    return This->lpVtbl->GatherWriterStatus(This,pAsync);
2202}
2203static inline HRESULT IVssBackupComponentsEx_GetWriterStatusCount(IVssBackupComponentsEx* This,UINT *pcWriters) {
2204    return This->lpVtbl->GetWriterStatusCount(This,pcWriters);
2205}
2206static inline HRESULT IVssBackupComponentsEx_FreeWriterStatus(IVssBackupComponentsEx* This) {
2207    return This->lpVtbl->FreeWriterStatus(This);
2208}
2209static inline HRESULT IVssBackupComponentsEx_GetWriterStatus(IVssBackupComponentsEx* This,UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pnStatus,HRESULT *phResultFailure) {
2210    return This->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure);
2211}
2212static inline HRESULT IVssBackupComponentsEx_SetBackupSucceeded(IVssBackupComponentsEx* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSucceded) {
2213    return This->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded);
2214}
2215static inline HRESULT IVssBackupComponentsEx_SetBackupOptions(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszBackupOptions) {
2216    return This->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions);
2217}
2218static inline HRESULT IVssBackupComponentsEx_SetSelectedForRestore(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore) {
2219    return This->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore);
2220}
2221static inline HRESULT IVssBackupComponentsEx_SetRestoreOptions(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreOptions) {
2222    return This->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions);
2223}
2224static inline HRESULT IVssBackupComponentsEx_SetAdditionalRestores(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAdditionalRestores) {
2225    return This->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores);
2226}
2227static inline HRESULT IVssBackupComponentsEx_SetPreviousBackupStamp(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPreviousBackupStamp) {
2228    return This->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp);
2229}
2230static inline HRESULT IVssBackupComponentsEx_SaveAsXML(IVssBackupComponentsEx* This,BSTR *pbstrXML) {
2231    return This->lpVtbl->SaveAsXML(This,pbstrXML);
2232}
2233static inline HRESULT IVssBackupComponentsEx_BackupComplete(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
2234    return This->lpVtbl->BackupComplete(This,ppAsync);
2235}
2236static inline HRESULT IVssBackupComponentsEx_AddAlternativeLocationMapping(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszDestination) {
2237    return This->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination);
2238}
2239static inline HRESULT IVssBackupComponentsEx_AddRestoreSubcomponent(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszSubComponentLogicalPath,LPCWSTR wszSubComponentName,boolean bRepair) {
2240    return This->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair);
2241}
2242static inline HRESULT IVssBackupComponentsEx_SetFileRestoreStatus(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_FILE_RESTORE_STATUS status) {
2243    return This->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status);
2244}
2245static inline HRESULT IVssBackupComponentsEx_AddNewTarget(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFileName,boolean bRecursive,LPCWSTR wszAlternatePath) {
2246    return This->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath);
2247}
2248static inline HRESULT IVssBackupComponentsEx_SetRangesFilePath(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,UINT iPartialFile,LPCWSTR wszRangesFile) {
2249    return This->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile);
2250}
2251static inline HRESULT IVssBackupComponentsEx_PreRestore(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
2252    return This->lpVtbl->PreRestore(This,ppAsync);
2253}
2254static inline HRESULT IVssBackupComponentsEx_PostRestore(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
2255    return This->lpVtbl->PostRestore(This,ppAsync);
2256}
2257static inline HRESULT IVssBackupComponentsEx_SetContext(IVssBackupComponentsEx* This,LONG lContext) {
2258    return This->lpVtbl->SetContext(This,lContext);
2259}
2260static inline HRESULT IVssBackupComponentsEx_StartSnapshotSet(IVssBackupComponentsEx* This,VSS_ID *pSnapshotSetId) {
2261    return This->lpVtbl->StartSnapshotSet(This,pSnapshotSetId);
2262}
2263static inline HRESULT IVssBackupComponentsEx_AddToSnapshotSet(IVssBackupComponentsEx* This,VSS_PWSZ pwszVolumeName,VSS_ID ProviderId,VSS_ID *pidSnapshot) {
2264    return This->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot);
2265}
2266static inline HRESULT IVssBackupComponentsEx_DoSnapshotSet(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
2267    return This->lpVtbl->DoSnapshotSet(This,ppAsync);
2268}
2269static inline HRESULT IVssBackupComponentsEx_DeleteSnapshots(IVssBackupComponentsEx* This,VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,WINBOOL bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) {
2270    return This->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID);
2271}
2272static inline HRESULT IVssBackupComponentsEx_ImportSnapshots(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
2273    return This->lpVtbl->ImportSnapshots(This,ppAsync);
2274}
2275static inline HRESULT IVssBackupComponentsEx_BreakSnapshotSet(IVssBackupComponentsEx* This,VSS_ID SnapshotSetId) {
2276    return This->lpVtbl->BreakSnapshotSet(This,SnapshotSetId);
2277}
2278static inline HRESULT IVssBackupComponentsEx_GetSnapshotProperties(IVssBackupComponentsEx* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
2279    return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
2280}
2281static inline HRESULT IVssBackupComponentsEx_Query(IVssBackupComponentsEx* This,VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) {
2282    return This->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum);
2283}
2284static inline HRESULT IVssBackupComponentsEx_IsVolumeSupported(IVssBackupComponentsEx* This,VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
2285    return This->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider);
2286}
2287static inline HRESULT IVssBackupComponentsEx_DisableWriterClasses(IVssBackupComponentsEx* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
2288    return This->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId);
2289}
2290static inline HRESULT IVssBackupComponentsEx_EnableWriterClasses(IVssBackupComponentsEx* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
2291    return This->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId);
2292}
2293static inline HRESULT IVssBackupComponentsEx_DisableWriterInstances(IVssBackupComponentsEx* This,const VSS_ID *rgWriterInstanceId,UINT cInstanceId) {
2294    return This->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId);
2295}
2296static inline HRESULT IVssBackupComponentsEx_ExposeSnapshot(IVssBackupComponentsEx* This,VSS_ID SnapshotId,VSS_PWSZ wszPathFromRoot,LONG lAttributes,VSS_PWSZ wszExpose,VSS_PWSZ *pwszExposed) {
2297    return This->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed);
2298}
2299static inline HRESULT IVssBackupComponentsEx_RevertToSnapshot(IVssBackupComponentsEx* This,VSS_ID SnapshotId,WINBOOL bForceDismount) {
2300    return This->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount);
2301}
2302static inline HRESULT IVssBackupComponentsEx_QueryRevertStatus(IVssBackupComponentsEx* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
2303    return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
2304}
2305/*** IVssBackupComponentsEx methods ***/
2306static inline HRESULT IVssBackupComponentsEx_GetWriterMetadataEx(IVssBackupComponentsEx* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadataEx **ppMetadata) {
2307    return This->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata);
2308}
2309static inline HRESULT IVssBackupComponentsEx_SetSelectedForRestoreEx(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore,VSS_ID instanceId) {
2310    return This->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId);
2311}
2312#endif
2313#endif
2314
2315#endif
2316
2317
2318#endif  /* __IVssBackupComponentsEx_INTERFACE_DEFINED__ */
2319
2320/*****************************************************************************
2321 * IVssBackupComponentsEx2 interface
2322 */
2323#ifndef __IVssBackupComponentsEx2_INTERFACE_DEFINED__
2324#define __IVssBackupComponentsEx2_INTERFACE_DEFINED__
2325
2326DEFINE_GUID(IID_IVssBackupComponentsEx2, 0xacfe2b3a, 0x22c9, 0x4ef8, 0xbd,0x03, 0x2f,0x9c,0xa2,0x30,0x08,0x4e);
2327#if defined(__cplusplus) && !defined(CINTERFACE)
2328MIDL_INTERFACE("acfe2b3a-22c9-4ef8-bd03-2f9ca230084e")
2329IVssBackupComponentsEx2 : public IVssBackupComponentsEx
2330{
2331    virtual HRESULT STDMETHODCALLTYPE UnexposeSnapshot(
2332        VSS_ID snapshotId) = 0;
2333
2334    virtual HRESULT STDMETHODCALLTYPE SetAuthoritativeRestore(
2335        VSS_ID writerId,
2336        VSS_COMPONENT_TYPE ct,
2337        LPCWSTR wszLogicalPath,
2338        LPCWSTR wszComponentName,
2339        boolean bAuth) = 0;
2340
2341    virtual HRESULT STDMETHODCALLTYPE SetRollForward(
2342        VSS_ID writerId,
2343        VSS_COMPONENT_TYPE ct,
2344        LPCWSTR wszLogicalPath,
2345        LPCWSTR wszComponentName,
2346        VSS_ROLLFORWARD_TYPE rollType,
2347        LPCWSTR wszRollForwardPoint) = 0;
2348
2349    virtual HRESULT STDMETHODCALLTYPE SetRestoreName(
2350        VSS_ID writerId,
2351        VSS_COMPONENT_TYPE ct,
2352        LPCWSTR wszLogicalPath,
2353        LPCWSTR wszComponentName,
2354        LPCWSTR wszRestoreName) = 0;
2355
2356    virtual HRESULT STDMETHODCALLTYPE BreakSnapshotSetEx(
2357        VSS_ID SnapshotSetID,
2358        DWORD dwBreakFlags,
2359        IVssAsync **ppAsync) = 0;
2360
2361    virtual HRESULT STDMETHODCALLTYPE PreFastRecovery(
2362        VSS_ID SnapshotSetID,
2363        DWORD dwPreFastRecoveryFlags,
2364        IVssAsync **ppAsync) = 0;
2365
2366    virtual HRESULT STDMETHODCALLTYPE FastRecovery(
2367        VSS_ID SnapshotSetID,
2368        DWORD dwFastRecoveryFlags,
2369        IVssAsync **ppAsync) = 0;
2370
2371};
2372#ifdef __CRT_UUID_DECL
2373__CRT_UUID_DECL(IVssBackupComponentsEx2, 0xacfe2b3a, 0x22c9, 0x4ef8, 0xbd,0x03, 0x2f,0x9c,0xa2,0x30,0x08,0x4e)
2374#endif
2375#else
2376typedef struct IVssBackupComponentsEx2Vtbl {
2377    BEGIN_INTERFACE
2378
2379    /*** IUnknown methods ***/
2380    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2381        IVssBackupComponentsEx2 *This,
2382        REFIID riid,
2383        void **ppvObject);
2384
2385    ULONG (STDMETHODCALLTYPE *AddRef)(
2386        IVssBackupComponentsEx2 *This);
2387
2388    ULONG (STDMETHODCALLTYPE *Release)(
2389        IVssBackupComponentsEx2 *This);
2390
2391    /*** IVssBackupComponents methods ***/
2392    HRESULT (STDMETHODCALLTYPE *GetWriterComponentsCount)(
2393        IVssBackupComponentsEx2 *This,
2394        UINT *pcComponents);
2395
2396    HRESULT (STDMETHODCALLTYPE *GetWriterComponents)(
2397        IVssBackupComponentsEx2 *This,
2398        UINT iWriter,
2399        IVssWriterComponentsExt **ppWriter);
2400
2401    HRESULT (STDMETHODCALLTYPE *InitializeForBackup)(
2402        IVssBackupComponentsEx2 *This,
2403        BSTR bstrXML);
2404
2405    HRESULT (STDMETHODCALLTYPE *SetBackupState)(
2406        IVssBackupComponentsEx2 *This,
2407        boolean bSelectComponents,
2408        boolean bBackupBootableSystemState,
2409        VSS_BACKUP_TYPE backupType,
2410        boolean bPartialFileSupport);
2411
2412    HRESULT (STDMETHODCALLTYPE *InitializeForRestore)(
2413        IVssBackupComponentsEx2 *This,
2414        BSTR bstrXML);
2415
2416    HRESULT (STDMETHODCALLTYPE *SetRestoreState)(
2417        IVssBackupComponentsEx2 *This,
2418        VSS_RESTORE_TYPE restoreType);
2419
2420    HRESULT (STDMETHODCALLTYPE *GatherWriterMetadata)(
2421        IVssBackupComponentsEx2 *This,
2422        IVssAsync **pAsync);
2423
2424    HRESULT (STDMETHODCALLTYPE *GetWriterMetadataCount)(
2425        IVssBackupComponentsEx2 *This,
2426        UINT *pcWriters);
2427
2428    HRESULT (STDMETHODCALLTYPE *GetWriterMetadata)(
2429        IVssBackupComponentsEx2 *This,
2430        UINT iWriter,
2431        VSS_ID *pidInstance,
2432        IVssExamineWriterMetadata **ppMetadata);
2433
2434    HRESULT (STDMETHODCALLTYPE *FreeWriterMetadata)(
2435        IVssBackupComponentsEx2 *This);
2436
2437    HRESULT (STDMETHODCALLTYPE *AddComponent)(
2438        IVssBackupComponentsEx2 *This,
2439        VSS_ID instanceId,
2440        VSS_ID writerId,
2441        VSS_COMPONENT_TYPE ct,
2442        LPCWSTR wszLogicalPath,
2443        LPCWSTR wszComponentName);
2444
2445    HRESULT (STDMETHODCALLTYPE *PrepareForBackup)(
2446        IVssBackupComponentsEx2 *This,
2447        IVssAsync **ppAsync);
2448
2449    HRESULT (STDMETHODCALLTYPE *AbortBackup)(
2450        IVssBackupComponentsEx2 *This);
2451
2452    HRESULT (STDMETHODCALLTYPE *GatherWriterStatus)(
2453        IVssBackupComponentsEx2 *This,
2454        IVssAsync **pAsync);
2455
2456    HRESULT (STDMETHODCALLTYPE *GetWriterStatusCount)(
2457        IVssBackupComponentsEx2 *This,
2458        UINT *pcWriters);
2459
2460    HRESULT (STDMETHODCALLTYPE *FreeWriterStatus)(
2461        IVssBackupComponentsEx2 *This);
2462
2463    HRESULT (STDMETHODCALLTYPE *GetWriterStatus)(
2464        IVssBackupComponentsEx2 *This,
2465        UINT iWriter,
2466        VSS_ID *pidInstance,
2467        VSS_ID *pidWriter,
2468        BSTR *pbstrWriter,
2469        VSS_WRITER_STATE *pnStatus,
2470        HRESULT *phResultFailure);
2471
2472    HRESULT (STDMETHODCALLTYPE *SetBackupSucceeded)(
2473        IVssBackupComponentsEx2 *This,
2474        VSS_ID instanceId,
2475        VSS_ID writerId,
2476        VSS_COMPONENT_TYPE ct,
2477        LPCWSTR wszLogicalPath,
2478        LPCWSTR wszComponentName,
2479        boolean bSucceded);
2480
2481    HRESULT (STDMETHODCALLTYPE *SetBackupOptions)(
2482        IVssBackupComponentsEx2 *This,
2483        VSS_ID writerId,
2484        VSS_COMPONENT_TYPE ct,
2485        LPCWSTR wszLogicalPath,
2486        LPCWSTR wszComponentName,
2487        LPCWSTR wszBackupOptions);
2488
2489    HRESULT (STDMETHODCALLTYPE *SetSelectedForRestore)(
2490        IVssBackupComponentsEx2 *This,
2491        VSS_ID writerId,
2492        VSS_COMPONENT_TYPE ct,
2493        LPCWSTR wszLogicalPath,
2494        LPCWSTR wszComponentName,
2495        boolean bSelectedForRestore);
2496
2497    HRESULT (STDMETHODCALLTYPE *SetRestoreOptions)(
2498        IVssBackupComponentsEx2 *This,
2499        VSS_ID writerId,
2500        VSS_COMPONENT_TYPE ct,
2501        LPCWSTR wszLogicalPath,
2502        LPCWSTR wszComponentName,
2503        LPCWSTR wszRestoreOptions);
2504
2505    HRESULT (STDMETHODCALLTYPE *SetAdditionalRestores)(
2506        IVssBackupComponentsEx2 *This,
2507        VSS_ID writerId,
2508        VSS_COMPONENT_TYPE ct,
2509        LPCWSTR wszLogicalPath,
2510        LPCWSTR wszComponentName,
2511        boolean bAdditionalRestores);
2512
2513    HRESULT (STDMETHODCALLTYPE *SetPreviousBackupStamp)(
2514        IVssBackupComponentsEx2 *This,
2515        VSS_ID writerId,
2516        VSS_COMPONENT_TYPE ct,
2517        LPCWSTR wszLogicalPath,
2518        LPCWSTR wszComponentName,
2519        LPCWSTR wszPreviousBackupStamp);
2520
2521    HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
2522        IVssBackupComponentsEx2 *This,
2523        BSTR *pbstrXML);
2524
2525    HRESULT (STDMETHODCALLTYPE *BackupComplete)(
2526        IVssBackupComponentsEx2 *This,
2527        IVssAsync **ppAsync);
2528
2529    HRESULT (STDMETHODCALLTYPE *AddAlternativeLocationMapping)(
2530        IVssBackupComponentsEx2 *This,
2531        VSS_ID writerId,
2532        VSS_COMPONENT_TYPE componentType,
2533        LPCWSTR wszLogicalPath,
2534        LPCWSTR wszComponentName,
2535        LPCWSTR wszPath,
2536        LPCWSTR wszFilespec,
2537        boolean bRecursive,
2538        LPCWSTR wszDestination);
2539
2540    HRESULT (STDMETHODCALLTYPE *AddRestoreSubcomponent)(
2541        IVssBackupComponentsEx2 *This,
2542        VSS_ID writerId,
2543        VSS_COMPONENT_TYPE componentType,
2544        LPCWSTR wszLogicalPath,
2545        LPCWSTR wszComponentName,
2546        LPCWSTR wszSubComponentLogicalPath,
2547        LPCWSTR wszSubComponentName,
2548        boolean bRepair);
2549
2550    HRESULT (STDMETHODCALLTYPE *SetFileRestoreStatus)(
2551        IVssBackupComponentsEx2 *This,
2552        VSS_ID writerId,
2553        VSS_COMPONENT_TYPE ct,
2554        LPCWSTR wszLogicalPath,
2555        LPCWSTR wszComponentName,
2556        VSS_FILE_RESTORE_STATUS status);
2557
2558    HRESULT (STDMETHODCALLTYPE *AddNewTarget)(
2559        IVssBackupComponentsEx2 *This,
2560        VSS_ID writerId,
2561        VSS_COMPONENT_TYPE ct,
2562        LPCWSTR wszLogicalPath,
2563        LPCWSTR wszComponentName,
2564        LPCWSTR wszPath,
2565        LPCWSTR wszFileName,
2566        boolean bRecursive,
2567        LPCWSTR wszAlternatePath);
2568
2569    HRESULT (STDMETHODCALLTYPE *SetRangesFilePath)(
2570        IVssBackupComponentsEx2 *This,
2571        VSS_ID writerId,
2572        VSS_COMPONENT_TYPE ct,
2573        LPCWSTR wszLogicalPath,
2574        LPCWSTR wszComponentName,
2575        UINT iPartialFile,
2576        LPCWSTR wszRangesFile);
2577
2578    HRESULT (STDMETHODCALLTYPE *PreRestore)(
2579        IVssBackupComponentsEx2 *This,
2580        IVssAsync **ppAsync);
2581
2582    HRESULT (STDMETHODCALLTYPE *PostRestore)(
2583        IVssBackupComponentsEx2 *This,
2584        IVssAsync **ppAsync);
2585
2586    HRESULT (STDMETHODCALLTYPE *SetContext)(
2587        IVssBackupComponentsEx2 *This,
2588        LONG lContext);
2589
2590    HRESULT (STDMETHODCALLTYPE *StartSnapshotSet)(
2591        IVssBackupComponentsEx2 *This,
2592        VSS_ID *pSnapshotSetId);
2593
2594    HRESULT (STDMETHODCALLTYPE *AddToSnapshotSet)(
2595        IVssBackupComponentsEx2 *This,
2596        VSS_PWSZ pwszVolumeName,
2597        VSS_ID ProviderId,
2598        VSS_ID *pidSnapshot);
2599
2600    HRESULT (STDMETHODCALLTYPE *DoSnapshotSet)(
2601        IVssBackupComponentsEx2 *This,
2602        IVssAsync **ppAsync);
2603
2604    HRESULT (STDMETHODCALLTYPE *DeleteSnapshots)(
2605        IVssBackupComponentsEx2 *This,
2606        VSS_ID SourceObjectId,
2607        VSS_OBJECT_TYPE eSourceObjectType,
2608        WINBOOL bForceDelete,
2609        LONG *plDeletedSnapshots,
2610        VSS_ID *pNondeletedSnapshotID);
2611
2612    HRESULT (STDMETHODCALLTYPE *ImportSnapshots)(
2613        IVssBackupComponentsEx2 *This,
2614        IVssAsync **ppAsync);
2615
2616    HRESULT (STDMETHODCALLTYPE *BreakSnapshotSet)(
2617        IVssBackupComponentsEx2 *This,
2618        VSS_ID SnapshotSetId);
2619
2620    HRESULT (STDMETHODCALLTYPE *GetSnapshotProperties)(
2621        IVssBackupComponentsEx2 *This,
2622        VSS_ID SnapshotId,
2623        VSS_SNAPSHOT_PROP *pProp);
2624
2625    HRESULT (STDMETHODCALLTYPE *Query)(
2626        IVssBackupComponentsEx2 *This,
2627        VSS_ID QueriedObjectId,
2628        VSS_OBJECT_TYPE eQueriedObjectType,
2629        VSS_OBJECT_TYPE eReturnedObjectsType,
2630        IVssEnumObject **ppEnum);
2631
2632    HRESULT (STDMETHODCALLTYPE *IsVolumeSupported)(
2633        IVssBackupComponentsEx2 *This,
2634        VSS_ID ProviderId,
2635        VSS_PWSZ pwszVolumeName,
2636        WINBOOL *pbSupportedByThisProvider);
2637
2638    HRESULT (STDMETHODCALLTYPE *DisableWriterClasses)(
2639        IVssBackupComponentsEx2 *This,
2640        const VSS_ID *rgWriterClassId,
2641        UINT cClassId);
2642
2643    HRESULT (STDMETHODCALLTYPE *EnableWriterClasses)(
2644        IVssBackupComponentsEx2 *This,
2645        const VSS_ID *rgWriterClassId,
2646        UINT cClassId);
2647
2648    HRESULT (STDMETHODCALLTYPE *DisableWriterInstances)(
2649        IVssBackupComponentsEx2 *This,
2650        const VSS_ID *rgWriterInstanceId,
2651        UINT cInstanceId);
2652
2653    HRESULT (STDMETHODCALLTYPE *ExposeSnapshot)(
2654        IVssBackupComponentsEx2 *This,
2655        VSS_ID SnapshotId,
2656        VSS_PWSZ wszPathFromRoot,
2657        LONG lAttributes,
2658        VSS_PWSZ wszExpose,
2659        VSS_PWSZ *pwszExposed);
2660
2661    HRESULT (STDMETHODCALLTYPE *RevertToSnapshot)(
2662        IVssBackupComponentsEx2 *This,
2663        VSS_ID SnapshotId,
2664        WINBOOL bForceDismount);
2665
2666    HRESULT (STDMETHODCALLTYPE *QueryRevertStatus)(
2667        IVssBackupComponentsEx2 *This,
2668        VSS_PWSZ pwszVolume,
2669        IVssAsync **ppAsync);
2670
2671    /*** IVssBackupComponentsEx methods ***/
2672    HRESULT (STDMETHODCALLTYPE *GetWriterMetadataEx)(
2673        IVssBackupComponentsEx2 *This,
2674        UINT iWriter,
2675        VSS_ID *pidInstance,
2676        IVssExamineWriterMetadataEx **ppMetadata);
2677
2678    HRESULT (STDMETHODCALLTYPE *SetSelectedForRestoreEx)(
2679        IVssBackupComponentsEx2 *This,
2680        VSS_ID writerId,
2681        VSS_COMPONENT_TYPE ct,
2682        LPCWSTR wszLogicalPath,
2683        LPCWSTR wszComponentName,
2684        boolean bSelectedForRestore,
2685        VSS_ID instanceId);
2686
2687    /*** IVssBackupComponentsEx2 methods ***/
2688    HRESULT (STDMETHODCALLTYPE *UnexposeSnapshot)(
2689        IVssBackupComponentsEx2 *This,
2690        VSS_ID snapshotId);
2691
2692    HRESULT (STDMETHODCALLTYPE *SetAuthoritativeRestore)(
2693        IVssBackupComponentsEx2 *This,
2694        VSS_ID writerId,
2695        VSS_COMPONENT_TYPE ct,
2696        LPCWSTR wszLogicalPath,
2697        LPCWSTR wszComponentName,
2698        boolean bAuth);
2699
2700    HRESULT (STDMETHODCALLTYPE *SetRollForward)(
2701        IVssBackupComponentsEx2 *This,
2702        VSS_ID writerId,
2703        VSS_COMPONENT_TYPE ct,
2704        LPCWSTR wszLogicalPath,
2705        LPCWSTR wszComponentName,
2706        VSS_ROLLFORWARD_TYPE rollType,
2707        LPCWSTR wszRollForwardPoint);
2708
2709    HRESULT (STDMETHODCALLTYPE *SetRestoreName)(
2710        IVssBackupComponentsEx2 *This,
2711        VSS_ID writerId,
2712        VSS_COMPONENT_TYPE ct,
2713        LPCWSTR wszLogicalPath,
2714        LPCWSTR wszComponentName,
2715        LPCWSTR wszRestoreName);
2716
2717    HRESULT (STDMETHODCALLTYPE *BreakSnapshotSetEx)(
2718        IVssBackupComponentsEx2 *This,
2719        VSS_ID SnapshotSetID,
2720        DWORD dwBreakFlags,
2721        IVssAsync **ppAsync);
2722
2723    HRESULT (STDMETHODCALLTYPE *PreFastRecovery)(
2724        IVssBackupComponentsEx2 *This,
2725        VSS_ID SnapshotSetID,
2726        DWORD dwPreFastRecoveryFlags,
2727        IVssAsync **ppAsync);
2728
2729    HRESULT (STDMETHODCALLTYPE *FastRecovery)(
2730        IVssBackupComponentsEx2 *This,
2731        VSS_ID SnapshotSetID,
2732        DWORD dwFastRecoveryFlags,
2733        IVssAsync **ppAsync);
2734
2735    END_INTERFACE
2736} IVssBackupComponentsEx2Vtbl;
2737
2738interface IVssBackupComponentsEx2 {
2739    CONST_VTBL IVssBackupComponentsEx2Vtbl* lpVtbl;
2740};
2741
2742#ifdef COBJMACROS
2743#ifndef WIDL_C_INLINE_WRAPPERS
2744/*** IUnknown methods ***/
2745#define IVssBackupComponentsEx2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2746#define IVssBackupComponentsEx2_AddRef(This) (This)->lpVtbl->AddRef(This)
2747#define IVssBackupComponentsEx2_Release(This) (This)->lpVtbl->Release(This)
2748/*** IVssBackupComponents methods ***/
2749#define IVssBackupComponentsEx2_GetWriterComponentsCount(This,pcComponents) (This)->lpVtbl->GetWriterComponentsCount(This,pcComponents)
2750#define IVssBackupComponentsEx2_GetWriterComponents(This,iWriter,ppWriter) (This)->lpVtbl->GetWriterComponents(This,iWriter,ppWriter)
2751#define IVssBackupComponentsEx2_InitializeForBackup(This,bstrXML) (This)->lpVtbl->InitializeForBackup(This,bstrXML)
2752#define IVssBackupComponentsEx2_SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport) (This)->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport)
2753#define IVssBackupComponentsEx2_InitializeForRestore(This,bstrXML) (This)->lpVtbl->InitializeForRestore(This,bstrXML)
2754#define IVssBackupComponentsEx2_SetRestoreState(This,restoreType) (This)->lpVtbl->SetRestoreState(This,restoreType)
2755#define IVssBackupComponentsEx2_GatherWriterMetadata(This,pAsync) (This)->lpVtbl->GatherWriterMetadata(This,pAsync)
2756#define IVssBackupComponentsEx2_GetWriterMetadataCount(This,pcWriters) (This)->lpVtbl->GetWriterMetadataCount(This,pcWriters)
2757#define IVssBackupComponentsEx2_GetWriterMetadata(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata)
2758#define IVssBackupComponentsEx2_FreeWriterMetadata(This) (This)->lpVtbl->FreeWriterMetadata(This)
2759#define IVssBackupComponentsEx2_AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName) (This)->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName)
2760#define IVssBackupComponentsEx2_PrepareForBackup(This,ppAsync) (This)->lpVtbl->PrepareForBackup(This,ppAsync)
2761#define IVssBackupComponentsEx2_AbortBackup(This) (This)->lpVtbl->AbortBackup(This)
2762#define IVssBackupComponentsEx2_GatherWriterStatus(This,pAsync) (This)->lpVtbl->GatherWriterStatus(This,pAsync)
2763#define IVssBackupComponentsEx2_GetWriterStatusCount(This,pcWriters) (This)->lpVtbl->GetWriterStatusCount(This,pcWriters)
2764#define IVssBackupComponentsEx2_FreeWriterStatus(This) (This)->lpVtbl->FreeWriterStatus(This)
2765#define IVssBackupComponentsEx2_GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure) (This)->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure)
2766#define IVssBackupComponentsEx2_SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded) (This)->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded)
2767#define IVssBackupComponentsEx2_SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions) (This)->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions)
2768#define IVssBackupComponentsEx2_SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore) (This)->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore)
2769#define IVssBackupComponentsEx2_SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions) (This)->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions)
2770#define IVssBackupComponentsEx2_SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores) (This)->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores)
2771#define IVssBackupComponentsEx2_SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp) (This)->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp)
2772#define IVssBackupComponentsEx2_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
2773#define IVssBackupComponentsEx2_BackupComplete(This,ppAsync) (This)->lpVtbl->BackupComplete(This,ppAsync)
2774#define IVssBackupComponentsEx2_AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination) (This)->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination)
2775#define IVssBackupComponentsEx2_AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair) (This)->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair)
2776#define IVssBackupComponentsEx2_SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status) (This)->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status)
2777#define IVssBackupComponentsEx2_AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath) (This)->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath)
2778#define IVssBackupComponentsEx2_SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile) (This)->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile)
2779#define IVssBackupComponentsEx2_PreRestore(This,ppAsync) (This)->lpVtbl->PreRestore(This,ppAsync)
2780#define IVssBackupComponentsEx2_PostRestore(This,ppAsync) (This)->lpVtbl->PostRestore(This,ppAsync)
2781#define IVssBackupComponentsEx2_SetContext(This,lContext) (This)->lpVtbl->SetContext(This,lContext)
2782#define IVssBackupComponentsEx2_StartSnapshotSet(This,pSnapshotSetId) (This)->lpVtbl->StartSnapshotSet(This,pSnapshotSetId)
2783#define IVssBackupComponentsEx2_AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot) (This)->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot)
2784#define IVssBackupComponentsEx2_DoSnapshotSet(This,ppAsync) (This)->lpVtbl->DoSnapshotSet(This,ppAsync)
2785#define IVssBackupComponentsEx2_DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID) (This)->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID)
2786#define IVssBackupComponentsEx2_ImportSnapshots(This,ppAsync) (This)->lpVtbl->ImportSnapshots(This,ppAsync)
2787#define IVssBackupComponentsEx2_BreakSnapshotSet(This,SnapshotSetId) (This)->lpVtbl->BreakSnapshotSet(This,SnapshotSetId)
2788#define IVssBackupComponentsEx2_GetSnapshotProperties(This,SnapshotId,pProp) (This)->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp)
2789#define IVssBackupComponentsEx2_Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum) (This)->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum)
2790#define IVssBackupComponentsEx2_IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider) (This)->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider)
2791#define IVssBackupComponentsEx2_DisableWriterClasses(This,rgWriterClassId,cClassId) (This)->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId)
2792#define IVssBackupComponentsEx2_EnableWriterClasses(This,rgWriterClassId,cClassId) (This)->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId)
2793#define IVssBackupComponentsEx2_DisableWriterInstances(This,rgWriterInstanceId,cInstanceId) (This)->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId)
2794#define IVssBackupComponentsEx2_ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed) (This)->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed)
2795#define IVssBackupComponentsEx2_RevertToSnapshot(This,SnapshotId,bForceDismount) (This)->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount)
2796#define IVssBackupComponentsEx2_QueryRevertStatus(This,pwszVolume,ppAsync) (This)->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync)
2797/*** IVssBackupComponentsEx methods ***/
2798#define IVssBackupComponentsEx2_GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata)
2799#define IVssBackupComponentsEx2_SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId) (This)->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId)
2800/*** IVssBackupComponentsEx2 methods ***/
2801#define IVssBackupComponentsEx2_UnexposeSnapshot(This,snapshotId) (This)->lpVtbl->UnexposeSnapshot(This,snapshotId)
2802#define IVssBackupComponentsEx2_SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth) (This)->lpVtbl->SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth)
2803#define IVssBackupComponentsEx2_SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint) (This)->lpVtbl->SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint)
2804#define IVssBackupComponentsEx2_SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName) (This)->lpVtbl->SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName)
2805#define IVssBackupComponentsEx2_BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync) (This)->lpVtbl->BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync)
2806#define IVssBackupComponentsEx2_PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync) (This)->lpVtbl->PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync)
2807#define IVssBackupComponentsEx2_FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync) (This)->lpVtbl->FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync)
2808#else
2809/*** IUnknown methods ***/
2810static inline HRESULT IVssBackupComponentsEx2_QueryInterface(IVssBackupComponentsEx2* This,REFIID riid,void **ppvObject) {
2811    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2812}
2813static inline ULONG IVssBackupComponentsEx2_AddRef(IVssBackupComponentsEx2* This) {
2814    return This->lpVtbl->AddRef(This);
2815}
2816static inline ULONG IVssBackupComponentsEx2_Release(IVssBackupComponentsEx2* This) {
2817    return This->lpVtbl->Release(This);
2818}
2819/*** IVssBackupComponents methods ***/
2820static inline HRESULT IVssBackupComponentsEx2_GetWriterComponentsCount(IVssBackupComponentsEx2* This,UINT *pcComponents) {
2821    return This->lpVtbl->GetWriterComponentsCount(This,pcComponents);
2822}
2823static inline HRESULT IVssBackupComponentsEx2_GetWriterComponents(IVssBackupComponentsEx2* This,UINT iWriter,IVssWriterComponentsExt **ppWriter) {
2824    return This->lpVtbl->GetWriterComponents(This,iWriter,ppWriter);
2825}
2826static inline HRESULT IVssBackupComponentsEx2_InitializeForBackup(IVssBackupComponentsEx2* This,BSTR bstrXML) {
2827    return This->lpVtbl->InitializeForBackup(This,bstrXML);
2828}
2829static inline HRESULT IVssBackupComponentsEx2_SetBackupState(IVssBackupComponentsEx2* This,boolean bSelectComponents,boolean bBackupBootableSystemState,VSS_BACKUP_TYPE backupType,boolean bPartialFileSupport) {
2830    return This->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport);
2831}
2832static inline HRESULT IVssBackupComponentsEx2_InitializeForRestore(IVssBackupComponentsEx2* This,BSTR bstrXML) {
2833    return This->lpVtbl->InitializeForRestore(This,bstrXML);
2834}
2835static inline HRESULT IVssBackupComponentsEx2_SetRestoreState(IVssBackupComponentsEx2* This,VSS_RESTORE_TYPE restoreType) {
2836    return This->lpVtbl->SetRestoreState(This,restoreType);
2837}
2838static inline HRESULT IVssBackupComponentsEx2_GatherWriterMetadata(IVssBackupComponentsEx2* This,IVssAsync **pAsync) {
2839    return This->lpVtbl->GatherWriterMetadata(This,pAsync);
2840}
2841static inline HRESULT IVssBackupComponentsEx2_GetWriterMetadataCount(IVssBackupComponentsEx2* This,UINT *pcWriters) {
2842    return This->lpVtbl->GetWriterMetadataCount(This,pcWriters);
2843}
2844static inline HRESULT IVssBackupComponentsEx2_GetWriterMetadata(IVssBackupComponentsEx2* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadata **ppMetadata) {
2845    return This->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata);
2846}
2847static inline HRESULT IVssBackupComponentsEx2_FreeWriterMetadata(IVssBackupComponentsEx2* This) {
2848    return This->lpVtbl->FreeWriterMetadata(This);
2849}
2850static inline HRESULT IVssBackupComponentsEx2_AddComponent(IVssBackupComponentsEx2* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName) {
2851    return This->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName);
2852}
2853static inline HRESULT IVssBackupComponentsEx2_PrepareForBackup(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
2854    return This->lpVtbl->PrepareForBackup(This,ppAsync);
2855}
2856static inline HRESULT IVssBackupComponentsEx2_AbortBackup(IVssBackupComponentsEx2* This) {
2857    return This->lpVtbl->AbortBackup(This);
2858}
2859static inline HRESULT IVssBackupComponentsEx2_GatherWriterStatus(IVssBackupComponentsEx2* This,IVssAsync **pAsync) {
2860    return This->lpVtbl->GatherWriterStatus(This,pAsync);
2861}
2862static inline HRESULT IVssBackupComponentsEx2_GetWriterStatusCount(IVssBackupComponentsEx2* This,UINT *pcWriters) {
2863    return This->lpVtbl->GetWriterStatusCount(This,pcWriters);
2864}
2865static inline HRESULT IVssBackupComponentsEx2_FreeWriterStatus(IVssBackupComponentsEx2* This) {
2866    return This->lpVtbl->FreeWriterStatus(This);
2867}
2868static inline HRESULT IVssBackupComponentsEx2_GetWriterStatus(IVssBackupComponentsEx2* This,UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pnStatus,HRESULT *phResultFailure) {
2869    return This->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure);
2870}
2871static inline HRESULT IVssBackupComponentsEx2_SetBackupSucceeded(IVssBackupComponentsEx2* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSucceded) {
2872    return This->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded);
2873}
2874static inline HRESULT IVssBackupComponentsEx2_SetBackupOptions(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszBackupOptions) {
2875    return This->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions);
2876}
2877static inline HRESULT IVssBackupComponentsEx2_SetSelectedForRestore(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore) {
2878    return This->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore);
2879}
2880static inline HRESULT IVssBackupComponentsEx2_SetRestoreOptions(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreOptions) {
2881    return This->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions);
2882}
2883static inline HRESULT IVssBackupComponentsEx2_SetAdditionalRestores(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAdditionalRestores) {
2884    return This->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores);
2885}
2886static inline HRESULT IVssBackupComponentsEx2_SetPreviousBackupStamp(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPreviousBackupStamp) {
2887    return This->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp);
2888}
2889static inline HRESULT IVssBackupComponentsEx2_SaveAsXML(IVssBackupComponentsEx2* This,BSTR *pbstrXML) {
2890    return This->lpVtbl->SaveAsXML(This,pbstrXML);
2891}
2892static inline HRESULT IVssBackupComponentsEx2_BackupComplete(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
2893    return This->lpVtbl->BackupComplete(This,ppAsync);
2894}
2895static inline HRESULT IVssBackupComponentsEx2_AddAlternativeLocationMapping(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszDestination) {
2896    return This->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination);
2897}
2898static inline HRESULT IVssBackupComponentsEx2_AddRestoreSubcomponent(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszSubComponentLogicalPath,LPCWSTR wszSubComponentName,boolean bRepair) {
2899    return This->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair);
2900}
2901static inline HRESULT IVssBackupComponentsEx2_SetFileRestoreStatus(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_FILE_RESTORE_STATUS status) {
2902    return This->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status);
2903}
2904static inline HRESULT IVssBackupComponentsEx2_AddNewTarget(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFileName,boolean bRecursive,LPCWSTR wszAlternatePath) {
2905    return This->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath);
2906}
2907static inline HRESULT IVssBackupComponentsEx2_SetRangesFilePath(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,UINT iPartialFile,LPCWSTR wszRangesFile) {
2908    return This->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile);
2909}
2910static inline HRESULT IVssBackupComponentsEx2_PreRestore(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
2911    return This->lpVtbl->PreRestore(This,ppAsync);
2912}
2913static inline HRESULT IVssBackupComponentsEx2_PostRestore(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
2914    return This->lpVtbl->PostRestore(This,ppAsync);
2915}
2916static inline HRESULT IVssBackupComponentsEx2_SetContext(IVssBackupComponentsEx2* This,LONG lContext) {
2917    return This->lpVtbl->SetContext(This,lContext);
2918}
2919static inline HRESULT IVssBackupComponentsEx2_StartSnapshotSet(IVssBackupComponentsEx2* This,VSS_ID *pSnapshotSetId) {
2920    return This->lpVtbl->StartSnapshotSet(This,pSnapshotSetId);
2921}
2922static inline HRESULT IVssBackupComponentsEx2_AddToSnapshotSet(IVssBackupComponentsEx2* This,VSS_PWSZ pwszVolumeName,VSS_ID ProviderId,VSS_ID *pidSnapshot) {
2923    return This->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot);
2924}
2925static inline HRESULT IVssBackupComponentsEx2_DoSnapshotSet(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
2926    return This->lpVtbl->DoSnapshotSet(This,ppAsync);
2927}
2928static inline HRESULT IVssBackupComponentsEx2_DeleteSnapshots(IVssBackupComponentsEx2* This,VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,WINBOOL bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) {
2929    return This->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID);
2930}
2931static inline HRESULT IVssBackupComponentsEx2_ImportSnapshots(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
2932    return This->lpVtbl->ImportSnapshots(This,ppAsync);
2933}
2934static inline HRESULT IVssBackupComponentsEx2_BreakSnapshotSet(IVssBackupComponentsEx2* This,VSS_ID SnapshotSetId) {
2935    return This->lpVtbl->BreakSnapshotSet(This,SnapshotSetId);
2936}
2937static inline HRESULT IVssBackupComponentsEx2_GetSnapshotProperties(IVssBackupComponentsEx2* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
2938    return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
2939}
2940static inline HRESULT IVssBackupComponentsEx2_Query(IVssBackupComponentsEx2* This,VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) {
2941    return This->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum);
2942}
2943static inline HRESULT IVssBackupComponentsEx2_IsVolumeSupported(IVssBackupComponentsEx2* This,VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
2944    return This->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider);
2945}
2946static inline HRESULT IVssBackupComponentsEx2_DisableWriterClasses(IVssBackupComponentsEx2* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
2947    return This->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId);
2948}
2949static inline HRESULT IVssBackupComponentsEx2_EnableWriterClasses(IVssBackupComponentsEx2* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
2950    return This->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId);
2951}
2952static inline HRESULT IVssBackupComponentsEx2_DisableWriterInstances(IVssBackupComponentsEx2* This,const VSS_ID *rgWriterInstanceId,UINT cInstanceId) {
2953    return This->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId);
2954}
2955static inline HRESULT IVssBackupComponentsEx2_ExposeSnapshot(IVssBackupComponentsEx2* This,VSS_ID SnapshotId,VSS_PWSZ wszPathFromRoot,LONG lAttributes,VSS_PWSZ wszExpose,VSS_PWSZ *pwszExposed) {
2956    return This->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed);
2957}
2958static inline HRESULT IVssBackupComponentsEx2_RevertToSnapshot(IVssBackupComponentsEx2* This,VSS_ID SnapshotId,WINBOOL bForceDismount) {
2959    return This->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount);
2960}
2961static inline HRESULT IVssBackupComponentsEx2_QueryRevertStatus(IVssBackupComponentsEx2* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
2962    return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
2963}
2964/*** IVssBackupComponentsEx methods ***/
2965static inline HRESULT IVssBackupComponentsEx2_GetWriterMetadataEx(IVssBackupComponentsEx2* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadataEx **ppMetadata) {
2966    return This->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata);
2967}
2968static inline HRESULT IVssBackupComponentsEx2_SetSelectedForRestoreEx(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore,VSS_ID instanceId) {
2969    return This->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId);
2970}
2971/*** IVssBackupComponentsEx2 methods ***/
2972static inline HRESULT IVssBackupComponentsEx2_UnexposeSnapshot(IVssBackupComponentsEx2* This,VSS_ID snapshotId) {
2973    return This->lpVtbl->UnexposeSnapshot(This,snapshotId);
2974}
2975static inline HRESULT IVssBackupComponentsEx2_SetAuthoritativeRestore(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAuth) {
2976    return This->lpVtbl->SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth);
2977}
2978static inline HRESULT IVssBackupComponentsEx2_SetRollForward(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_ROLLFORWARD_TYPE rollType,LPCWSTR wszRollForwardPoint) {
2979    return This->lpVtbl->SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint);
2980}
2981static inline HRESULT IVssBackupComponentsEx2_SetRestoreName(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreName) {
2982    return This->lpVtbl->SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName);
2983}
2984static inline HRESULT IVssBackupComponentsEx2_BreakSnapshotSetEx(IVssBackupComponentsEx2* This,VSS_ID SnapshotSetID,DWORD dwBreakFlags,IVssAsync **ppAsync) {
2985    return This->lpVtbl->BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync);
2986}
2987static inline HRESULT IVssBackupComponentsEx2_PreFastRecovery(IVssBackupComponentsEx2* This,VSS_ID SnapshotSetID,DWORD dwPreFastRecoveryFlags,IVssAsync **ppAsync) {
2988    return This->lpVtbl->PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync);
2989}
2990static inline HRESULT IVssBackupComponentsEx2_FastRecovery(IVssBackupComponentsEx2* This,VSS_ID SnapshotSetID,DWORD dwFastRecoveryFlags,IVssAsync **ppAsync) {
2991    return This->lpVtbl->FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync);
2992}
2993#endif
2994#endif
2995
2996#endif
2997
2998
2999#endif  /* __IVssBackupComponentsEx2_INTERFACE_DEFINED__ */
3000
3001/*****************************************************************************
3002 * IVssBackupComponentsEx3 interface
3003 */
3004#ifndef __IVssBackupComponentsEx3_INTERFACE_DEFINED__
3005#define __IVssBackupComponentsEx3_INTERFACE_DEFINED__
3006
3007DEFINE_GUID(IID_IVssBackupComponentsEx3, 0xc191bfbc, 0xb602, 0x4675, 0x8b,0xd1, 0x67,0xd6,0x42,0xf5,0x29,0xd5);
3008#if defined(__cplusplus) && !defined(CINTERFACE)
3009MIDL_INTERFACE("c191bfbc-b602-4675-8bd1-67d642f529d5")
3010IVssBackupComponentsEx3 : public IVssBackupComponentsEx2
3011{
3012    virtual HRESULT STDMETHODCALLTYPE GetWriterStatusEx(
3013        UINT iWriter,
3014        VSS_ID *pidInstance,
3015        VSS_ID *pidWriter,
3016        BSTR *pbstrWriter,
3017        VSS_WRITER_STATE *pnStatus,
3018        HRESULT *phrFailureWriter,
3019        HRESULT *phrApplication = 0,
3020        BSTR *pbstrApplicationMessage = 0) = 0;
3021
3022    virtual HRESULT STDMETHODCALLTYPE AddSnapshotToRecoverySet(
3023        VSS_ID snapshotId,
3024        DWORD dwFlags,
3025        VSS_PWSZ pwszDestinationVolume = 0) = 0;
3026
3027    virtual HRESULT STDMETHODCALLTYPE RecoverSet(
3028        DWORD dwFlags,
3029        IVssAsync **ppAsync) = 0;
3030
3031    virtual HRESULT STDMETHODCALLTYPE GetSessionId(
3032        VSS_ID *idSession) = 0;
3033
3034};
3035#ifdef __CRT_UUID_DECL
3036__CRT_UUID_DECL(IVssBackupComponentsEx3, 0xc191bfbc, 0xb602, 0x4675, 0x8b,0xd1, 0x67,0xd6,0x42,0xf5,0x29,0xd5)
3037#endif
3038#else
3039typedef struct IVssBackupComponentsEx3Vtbl {
3040    BEGIN_INTERFACE
3041
3042    /*** IUnknown methods ***/
3043    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3044        IVssBackupComponentsEx3 *This,
3045        REFIID riid,
3046        void **ppvObject);
3047
3048    ULONG (STDMETHODCALLTYPE *AddRef)(
3049        IVssBackupComponentsEx3 *This);
3050
3051    ULONG (STDMETHODCALLTYPE *Release)(
3052        IVssBackupComponentsEx3 *This);
3053
3054    /*** IVssBackupComponents methods ***/
3055    HRESULT (STDMETHODCALLTYPE *GetWriterComponentsCount)(
3056        IVssBackupComponentsEx3 *This,
3057        UINT *pcComponents);
3058
3059    HRESULT (STDMETHODCALLTYPE *GetWriterComponents)(
3060        IVssBackupComponentsEx3 *This,
3061        UINT iWriter,
3062        IVssWriterComponentsExt **ppWriter);
3063
3064    HRESULT (STDMETHODCALLTYPE *InitializeForBackup)(
3065        IVssBackupComponentsEx3 *This,
3066        BSTR bstrXML);
3067
3068    HRESULT (STDMETHODCALLTYPE *SetBackupState)(
3069        IVssBackupComponentsEx3 *This,
3070        boolean bSelectComponents,
3071        boolean bBackupBootableSystemState,
3072        VSS_BACKUP_TYPE backupType,
3073        boolean bPartialFileSupport);
3074
3075    HRESULT (STDMETHODCALLTYPE *InitializeForRestore)(
3076        IVssBackupComponentsEx3 *This,
3077        BSTR bstrXML);
3078
3079    HRESULT (STDMETHODCALLTYPE *SetRestoreState)(
3080        IVssBackupComponentsEx3 *This,
3081        VSS_RESTORE_TYPE restoreType);
3082
3083    HRESULT (STDMETHODCALLTYPE *GatherWriterMetadata)(
3084        IVssBackupComponentsEx3 *This,
3085        IVssAsync **pAsync);
3086
3087    HRESULT (STDMETHODCALLTYPE *GetWriterMetadataCount)(
3088        IVssBackupComponentsEx3 *This,
3089        UINT *pcWriters);
3090
3091    HRESULT (STDMETHODCALLTYPE *GetWriterMetadata)(
3092        IVssBackupComponentsEx3 *This,
3093        UINT iWriter,
3094        VSS_ID *pidInstance,
3095        IVssExamineWriterMetadata **ppMetadata);
3096
3097    HRESULT (STDMETHODCALLTYPE *FreeWriterMetadata)(
3098        IVssBackupComponentsEx3 *This);
3099
3100    HRESULT (STDMETHODCALLTYPE *AddComponent)(
3101        IVssBackupComponentsEx3 *This,
3102        VSS_ID instanceId,
3103        VSS_ID writerId,
3104        VSS_COMPONENT_TYPE ct,
3105        LPCWSTR wszLogicalPath,
3106        LPCWSTR wszComponentName);
3107
3108    HRESULT (STDMETHODCALLTYPE *PrepareForBackup)(
3109        IVssBackupComponentsEx3 *This,
3110        IVssAsync **ppAsync);
3111
3112    HRESULT (STDMETHODCALLTYPE *AbortBackup)(
3113        IVssBackupComponentsEx3 *This);
3114
3115    HRESULT (STDMETHODCALLTYPE *GatherWriterStatus)(
3116        IVssBackupComponentsEx3 *This,
3117        IVssAsync **pAsync);
3118
3119    HRESULT (STDMETHODCALLTYPE *GetWriterStatusCount)(
3120        IVssBackupComponentsEx3 *This,
3121        UINT *pcWriters);
3122
3123    HRESULT (STDMETHODCALLTYPE *FreeWriterStatus)(
3124        IVssBackupComponentsEx3 *This);
3125
3126    HRESULT (STDMETHODCALLTYPE *GetWriterStatus)(
3127        IVssBackupComponentsEx3 *This,
3128        UINT iWriter,
3129        VSS_ID *pidInstance,
3130        VSS_ID *pidWriter,
3131        BSTR *pbstrWriter,
3132        VSS_WRITER_STATE *pnStatus,
3133        HRESULT *phResultFailure);
3134
3135    HRESULT (STDMETHODCALLTYPE *SetBackupSucceeded)(
3136        IVssBackupComponentsEx3 *This,
3137        VSS_ID instanceId,
3138        VSS_ID writerId,
3139        VSS_COMPONENT_TYPE ct,
3140        LPCWSTR wszLogicalPath,
3141        LPCWSTR wszComponentName,
3142        boolean bSucceded);
3143
3144    HRESULT (STDMETHODCALLTYPE *SetBackupOptions)(
3145        IVssBackupComponentsEx3 *This,
3146        VSS_ID writerId,
3147        VSS_COMPONENT_TYPE ct,
3148        LPCWSTR wszLogicalPath,
3149        LPCWSTR wszComponentName,
3150        LPCWSTR wszBackupOptions);
3151
3152    HRESULT (STDMETHODCALLTYPE *SetSelectedForRestore)(
3153        IVssBackupComponentsEx3 *This,
3154        VSS_ID writerId,
3155        VSS_COMPONENT_TYPE ct,
3156        LPCWSTR wszLogicalPath,
3157        LPCWSTR wszComponentName,
3158        boolean bSelectedForRestore);
3159
3160    HRESULT (STDMETHODCALLTYPE *SetRestoreOptions)(
3161        IVssBackupComponentsEx3 *This,
3162        VSS_ID writerId,
3163        VSS_COMPONENT_TYPE ct,
3164        LPCWSTR wszLogicalPath,
3165        LPCWSTR wszComponentName,
3166        LPCWSTR wszRestoreOptions);
3167
3168    HRESULT (STDMETHODCALLTYPE *SetAdditionalRestores)(
3169        IVssBackupComponentsEx3 *This,
3170        VSS_ID writerId,
3171        VSS_COMPONENT_TYPE ct,
3172        LPCWSTR wszLogicalPath,
3173        LPCWSTR wszComponentName,
3174        boolean bAdditionalRestores);
3175
3176    HRESULT (STDMETHODCALLTYPE *SetPreviousBackupStamp)(
3177        IVssBackupComponentsEx3 *This,
3178        VSS_ID writerId,
3179        VSS_COMPONENT_TYPE ct,
3180        LPCWSTR wszLogicalPath,
3181        LPCWSTR wszComponentName,
3182        LPCWSTR wszPreviousBackupStamp);
3183
3184    HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
3185        IVssBackupComponentsEx3 *This,
3186        BSTR *pbstrXML);
3187
3188    HRESULT (STDMETHODCALLTYPE *BackupComplete)(
3189        IVssBackupComponentsEx3 *This,
3190        IVssAsync **ppAsync);
3191
3192    HRESULT (STDMETHODCALLTYPE *AddAlternativeLocationMapping)(
3193        IVssBackupComponentsEx3 *This,
3194        VSS_ID writerId,
3195        VSS_COMPONENT_TYPE componentType,
3196        LPCWSTR wszLogicalPath,
3197        LPCWSTR wszComponentName,
3198        LPCWSTR wszPath,
3199        LPCWSTR wszFilespec,
3200        boolean bRecursive,
3201        LPCWSTR wszDestination);
3202
3203    HRESULT (STDMETHODCALLTYPE *AddRestoreSubcomponent)(
3204        IVssBackupComponentsEx3 *This,
3205        VSS_ID writerId,
3206        VSS_COMPONENT_TYPE componentType,
3207        LPCWSTR wszLogicalPath,
3208        LPCWSTR wszComponentName,
3209        LPCWSTR wszSubComponentLogicalPath,
3210        LPCWSTR wszSubComponentName,
3211        boolean bRepair);
3212
3213    HRESULT (STDMETHODCALLTYPE *SetFileRestoreStatus)(
3214        IVssBackupComponentsEx3 *This,
3215        VSS_ID writerId,
3216        VSS_COMPONENT_TYPE ct,
3217        LPCWSTR wszLogicalPath,
3218        LPCWSTR wszComponentName,
3219        VSS_FILE_RESTORE_STATUS status);
3220
3221    HRESULT (STDMETHODCALLTYPE *AddNewTarget)(
3222        IVssBackupComponentsEx3 *This,
3223        VSS_ID writerId,
3224        VSS_COMPONENT_TYPE ct,
3225        LPCWSTR wszLogicalPath,
3226        LPCWSTR wszComponentName,
3227        LPCWSTR wszPath,
3228        LPCWSTR wszFileName,
3229        boolean bRecursive,
3230        LPCWSTR wszAlternatePath);
3231
3232    HRESULT (STDMETHODCALLTYPE *SetRangesFilePath)(
3233        IVssBackupComponentsEx3 *This,
3234        VSS_ID writerId,
3235        VSS_COMPONENT_TYPE ct,
3236        LPCWSTR wszLogicalPath,
3237        LPCWSTR wszComponentName,
3238        UINT iPartialFile,
3239        LPCWSTR wszRangesFile);
3240
3241    HRESULT (STDMETHODCALLTYPE *PreRestore)(
3242        IVssBackupComponentsEx3 *This,
3243        IVssAsync **ppAsync);
3244
3245    HRESULT (STDMETHODCALLTYPE *PostRestore)(
3246        IVssBackupComponentsEx3 *This,
3247        IVssAsync **ppAsync);
3248
3249    HRESULT (STDMETHODCALLTYPE *SetContext)(
3250        IVssBackupComponentsEx3 *This,
3251        LONG lContext);
3252
3253    HRESULT (STDMETHODCALLTYPE *StartSnapshotSet)(
3254        IVssBackupComponentsEx3 *This,
3255        VSS_ID *pSnapshotSetId);
3256
3257    HRESULT (STDMETHODCALLTYPE *AddToSnapshotSet)(
3258        IVssBackupComponentsEx3 *This,
3259        VSS_PWSZ pwszVolumeName,
3260        VSS_ID ProviderId,
3261        VSS_ID *pidSnapshot);
3262
3263    HRESULT (STDMETHODCALLTYPE *DoSnapshotSet)(
3264        IVssBackupComponentsEx3 *This,
3265        IVssAsync **ppAsync);
3266
3267    HRESULT (STDMETHODCALLTYPE *DeleteSnapshots)(
3268        IVssBackupComponentsEx3 *This,
3269        VSS_ID SourceObjectId,
3270        VSS_OBJECT_TYPE eSourceObjectType,
3271        WINBOOL bForceDelete,
3272        LONG *plDeletedSnapshots,
3273        VSS_ID *pNondeletedSnapshotID);
3274
3275    HRESULT (STDMETHODCALLTYPE *ImportSnapshots)(
3276        IVssBackupComponentsEx3 *This,
3277        IVssAsync **ppAsync);
3278
3279    HRESULT (STDMETHODCALLTYPE *BreakSnapshotSet)(
3280        IVssBackupComponentsEx3 *This,
3281        VSS_ID SnapshotSetId);
3282
3283    HRESULT (STDMETHODCALLTYPE *GetSnapshotProperties)(
3284        IVssBackupComponentsEx3 *This,
3285        VSS_ID SnapshotId,
3286        VSS_SNAPSHOT_PROP *pProp);
3287
3288    HRESULT (STDMETHODCALLTYPE *Query)(
3289        IVssBackupComponentsEx3 *This,
3290        VSS_ID QueriedObjectId,
3291        VSS_OBJECT_TYPE eQueriedObjectType,
3292        VSS_OBJECT_TYPE eReturnedObjectsType,
3293        IVssEnumObject **ppEnum);
3294
3295    HRESULT (STDMETHODCALLTYPE *IsVolumeSupported)(
3296        IVssBackupComponentsEx3 *This,
3297        VSS_ID ProviderId,
3298        VSS_PWSZ pwszVolumeName,
3299        WINBOOL *pbSupportedByThisProvider);
3300
3301    HRESULT (STDMETHODCALLTYPE *DisableWriterClasses)(
3302        IVssBackupComponentsEx3 *This,
3303        const VSS_ID *rgWriterClassId,
3304        UINT cClassId);
3305
3306    HRESULT (STDMETHODCALLTYPE *EnableWriterClasses)(
3307        IVssBackupComponentsEx3 *This,
3308        const VSS_ID *rgWriterClassId,
3309        UINT cClassId);
3310
3311    HRESULT (STDMETHODCALLTYPE *DisableWriterInstances)(
3312        IVssBackupComponentsEx3 *This,
3313        const VSS_ID *rgWriterInstanceId,
3314        UINT cInstanceId);
3315
3316    HRESULT (STDMETHODCALLTYPE *ExposeSnapshot)(
3317        IVssBackupComponentsEx3 *This,
3318        VSS_ID SnapshotId,
3319        VSS_PWSZ wszPathFromRoot,
3320        LONG lAttributes,
3321        VSS_PWSZ wszExpose,
3322        VSS_PWSZ *pwszExposed);
3323
3324    HRESULT (STDMETHODCALLTYPE *RevertToSnapshot)(
3325        IVssBackupComponentsEx3 *This,
3326        VSS_ID SnapshotId,
3327        WINBOOL bForceDismount);
3328
3329    HRESULT (STDMETHODCALLTYPE *QueryRevertStatus)(
3330        IVssBackupComponentsEx3 *This,
3331        VSS_PWSZ pwszVolume,
3332        IVssAsync **ppAsync);
3333
3334    /*** IVssBackupComponentsEx methods ***/
3335    HRESULT (STDMETHODCALLTYPE *GetWriterMetadataEx)(
3336        IVssBackupComponentsEx3 *This,
3337        UINT iWriter,
3338        VSS_ID *pidInstance,
3339        IVssExamineWriterMetadataEx **ppMetadata);
3340
3341    HRESULT (STDMETHODCALLTYPE *SetSelectedForRestoreEx)(
3342        IVssBackupComponentsEx3 *This,
3343        VSS_ID writerId,
3344        VSS_COMPONENT_TYPE ct,
3345        LPCWSTR wszLogicalPath,
3346        LPCWSTR wszComponentName,
3347        boolean bSelectedForRestore,
3348        VSS_ID instanceId);
3349
3350    /*** IVssBackupComponentsEx2 methods ***/
3351    HRESULT (STDMETHODCALLTYPE *UnexposeSnapshot)(
3352        IVssBackupComponentsEx3 *This,
3353        VSS_ID snapshotId);
3354
3355    HRESULT (STDMETHODCALLTYPE *SetAuthoritativeRestore)(
3356        IVssBackupComponentsEx3 *This,
3357        VSS_ID writerId,
3358        VSS_COMPONENT_TYPE ct,
3359        LPCWSTR wszLogicalPath,
3360        LPCWSTR wszComponentName,
3361        boolean bAuth);
3362
3363    HRESULT (STDMETHODCALLTYPE *SetRollForward)(
3364        IVssBackupComponentsEx3 *This,
3365        VSS_ID writerId,
3366        VSS_COMPONENT_TYPE ct,
3367        LPCWSTR wszLogicalPath,
3368        LPCWSTR wszComponentName,
3369        VSS_ROLLFORWARD_TYPE rollType,
3370        LPCWSTR wszRollForwardPoint);
3371
3372    HRESULT (STDMETHODCALLTYPE *SetRestoreName)(
3373        IVssBackupComponentsEx3 *This,
3374        VSS_ID writerId,
3375        VSS_COMPONENT_TYPE ct,
3376        LPCWSTR wszLogicalPath,
3377        LPCWSTR wszComponentName,
3378        LPCWSTR wszRestoreName);
3379
3380    HRESULT (STDMETHODCALLTYPE *BreakSnapshotSetEx)(
3381        IVssBackupComponentsEx3 *This,
3382        VSS_ID SnapshotSetID,
3383        DWORD dwBreakFlags,
3384        IVssAsync **ppAsync);
3385
3386    HRESULT (STDMETHODCALLTYPE *PreFastRecovery)(
3387        IVssBackupComponentsEx3 *This,
3388        VSS_ID SnapshotSetID,
3389        DWORD dwPreFastRecoveryFlags,
3390        IVssAsync **ppAsync);
3391
3392    HRESULT (STDMETHODCALLTYPE *FastRecovery)(
3393        IVssBackupComponentsEx3 *This,
3394        VSS_ID SnapshotSetID,
3395        DWORD dwFastRecoveryFlags,
3396        IVssAsync **ppAsync);
3397
3398    /*** IVssBackupComponentsEx3 methods ***/
3399    HRESULT (STDMETHODCALLTYPE *GetWriterStatusEx)(
3400        IVssBackupComponentsEx3 *This,
3401        UINT iWriter,
3402        VSS_ID *pidInstance,
3403        VSS_ID *pidWriter,
3404        BSTR *pbstrWriter,
3405        VSS_WRITER_STATE *pnStatus,
3406        HRESULT *phrFailureWriter,
3407        HRESULT *phrApplication,
3408        BSTR *pbstrApplicationMessage);
3409
3410    HRESULT (STDMETHODCALLTYPE *AddSnapshotToRecoverySet)(
3411        IVssBackupComponentsEx3 *This,
3412        VSS_ID snapshotId,
3413        DWORD dwFlags,
3414        VSS_PWSZ pwszDestinationVolume);
3415
3416    HRESULT (STDMETHODCALLTYPE *RecoverSet)(
3417        IVssBackupComponentsEx3 *This,
3418        DWORD dwFlags,
3419        IVssAsync **ppAsync);
3420
3421    HRESULT (STDMETHODCALLTYPE *GetSessionId)(
3422        IVssBackupComponentsEx3 *This,
3423        VSS_ID *idSession);
3424
3425    END_INTERFACE
3426} IVssBackupComponentsEx3Vtbl;
3427
3428interface IVssBackupComponentsEx3 {
3429    CONST_VTBL IVssBackupComponentsEx3Vtbl* lpVtbl;
3430};
3431
3432#ifdef COBJMACROS
3433#ifndef WIDL_C_INLINE_WRAPPERS
3434/*** IUnknown methods ***/
3435#define IVssBackupComponentsEx3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3436#define IVssBackupComponentsEx3_AddRef(This) (This)->lpVtbl->AddRef(This)
3437#define IVssBackupComponentsEx3_Release(This) (This)->lpVtbl->Release(This)
3438/*** IVssBackupComponents methods ***/
3439#define IVssBackupComponentsEx3_GetWriterComponentsCount(This,pcComponents) (This)->lpVtbl->GetWriterComponentsCount(This,pcComponents)
3440#define IVssBackupComponentsEx3_GetWriterComponents(This,iWriter,ppWriter) (This)->lpVtbl->GetWriterComponents(This,iWriter,ppWriter)
3441#define IVssBackupComponentsEx3_InitializeForBackup(This,bstrXML) (This)->lpVtbl->InitializeForBackup(This,bstrXML)
3442#define IVssBackupComponentsEx3_SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport) (This)->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport)
3443#define IVssBackupComponentsEx3_InitializeForRestore(This,bstrXML) (This)->lpVtbl->InitializeForRestore(This,bstrXML)
3444#define IVssBackupComponentsEx3_SetRestoreState(This,restoreType) (This)->lpVtbl->SetRestoreState(This,restoreType)
3445#define IVssBackupComponentsEx3_GatherWriterMetadata(This,pAsync) (This)->lpVtbl->GatherWriterMetadata(This,pAsync)
3446#define IVssBackupComponentsEx3_GetWriterMetadataCount(This,pcWriters) (This)->lpVtbl->GetWriterMetadataCount(This,pcWriters)
3447#define IVssBackupComponentsEx3_GetWriterMetadata(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata)
3448#define IVssBackupComponentsEx3_FreeWriterMetadata(This) (This)->lpVtbl->FreeWriterMetadata(This)
3449#define IVssBackupComponentsEx3_AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName) (This)->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName)
3450#define IVssBackupComponentsEx3_PrepareForBackup(This,ppAsync) (This)->lpVtbl->PrepareForBackup(This,ppAsync)
3451#define IVssBackupComponentsEx3_AbortBackup(This) (This)->lpVtbl->AbortBackup(This)
3452#define IVssBackupComponentsEx3_GatherWriterStatus(This,pAsync) (This)->lpVtbl->GatherWriterStatus(This,pAsync)
3453#define IVssBackupComponentsEx3_GetWriterStatusCount(This,pcWriters) (This)->lpVtbl->GetWriterStatusCount(This,pcWriters)
3454#define IVssBackupComponentsEx3_FreeWriterStatus(This) (This)->lpVtbl->FreeWriterStatus(This)
3455#define IVssBackupComponentsEx3_GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure) (This)->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure)
3456#define IVssBackupComponentsEx3_SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded) (This)->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded)
3457#define IVssBackupComponentsEx3_SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions) (This)->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions)
3458#define IVssBackupComponentsEx3_SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore) (This)->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore)
3459#define IVssBackupComponentsEx3_SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions) (This)->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions)
3460#define IVssBackupComponentsEx3_SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores) (This)->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores)
3461#define IVssBackupComponentsEx3_SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp) (This)->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp)
3462#define IVssBackupComponentsEx3_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
3463#define IVssBackupComponentsEx3_BackupComplete(This,ppAsync) (This)->lpVtbl->BackupComplete(This,ppAsync)
3464#define IVssBackupComponentsEx3_AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination) (This)->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination)
3465#define IVssBackupComponentsEx3_AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair) (This)->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair)
3466#define IVssBackupComponentsEx3_SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status) (This)->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status)
3467#define IVssBackupComponentsEx3_AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath) (This)->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath)
3468#define IVssBackupComponentsEx3_SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile) (This)->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile)
3469#define IVssBackupComponentsEx3_PreRestore(This,ppAsync) (This)->lpVtbl->PreRestore(This,ppAsync)
3470#define IVssBackupComponentsEx3_PostRestore(This,ppAsync) (This)->lpVtbl->PostRestore(This,ppAsync)
3471#define IVssBackupComponentsEx3_SetContext(This,lContext) (This)->lpVtbl->SetContext(This,lContext)
3472#define IVssBackupComponentsEx3_StartSnapshotSet(This,pSnapshotSetId) (This)->lpVtbl->StartSnapshotSet(This,pSnapshotSetId)
3473#define IVssBackupComponentsEx3_AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot) (This)->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot)
3474#define IVssBackupComponentsEx3_DoSnapshotSet(This,ppAsync) (This)->lpVtbl->DoSnapshotSet(This,ppAsync)
3475#define IVssBackupComponentsEx3_DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID) (This)->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID)
3476#define IVssBackupComponentsEx3_ImportSnapshots(This,ppAsync) (This)->lpVtbl->ImportSnapshots(This,ppAsync)
3477#define IVssBackupComponentsEx3_BreakSnapshotSet(This,SnapshotSetId) (This)->lpVtbl->BreakSnapshotSet(This,SnapshotSetId)
3478#define IVssBackupComponentsEx3_GetSnapshotProperties(This,SnapshotId,pProp) (This)->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp)
3479#define IVssBackupComponentsEx3_Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum) (This)->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum)
3480#define IVssBackupComponentsEx3_IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider) (This)->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider)
3481#define IVssBackupComponentsEx3_DisableWriterClasses(This,rgWriterClassId,cClassId) (This)->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId)
3482#define IVssBackupComponentsEx3_EnableWriterClasses(This,rgWriterClassId,cClassId) (This)->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId)
3483#define IVssBackupComponentsEx3_DisableWriterInstances(This,rgWriterInstanceId,cInstanceId) (This)->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId)
3484#define IVssBackupComponentsEx3_ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed) (This)->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed)
3485#define IVssBackupComponentsEx3_RevertToSnapshot(This,SnapshotId,bForceDismount) (This)->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount)
3486#define IVssBackupComponentsEx3_QueryRevertStatus(This,pwszVolume,ppAsync) (This)->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync)
3487/*** IVssBackupComponentsEx methods ***/
3488#define IVssBackupComponentsEx3_GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata)
3489#define IVssBackupComponentsEx3_SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId) (This)->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId)
3490/*** IVssBackupComponentsEx2 methods ***/
3491#define IVssBackupComponentsEx3_UnexposeSnapshot(This,snapshotId) (This)->lpVtbl->UnexposeSnapshot(This,snapshotId)
3492#define IVssBackupComponentsEx3_SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth) (This)->lpVtbl->SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth)
3493#define IVssBackupComponentsEx3_SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint) (This)->lpVtbl->SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint)
3494#define IVssBackupComponentsEx3_SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName) (This)->lpVtbl->SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName)
3495#define IVssBackupComponentsEx3_BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync) (This)->lpVtbl->BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync)
3496#define IVssBackupComponentsEx3_PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync) (This)->lpVtbl->PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync)
3497#define IVssBackupComponentsEx3_FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync) (This)->lpVtbl->FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync)
3498/*** IVssBackupComponentsEx3 methods ***/
3499#define IVssBackupComponentsEx3_GetWriterStatusEx(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phrFailureWriter,phrApplication,pbstrApplicationMessage) (This)->lpVtbl->GetWriterStatusEx(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phrFailureWriter,phrApplication,pbstrApplicationMessage)
3500#define IVssBackupComponentsEx3_AddSnapshotToRecoverySet(This,snapshotId,dwFlags,pwszDestinationVolume) (This)->lpVtbl->AddSnapshotToRecoverySet(This,snapshotId,dwFlags,pwszDestinationVolume)
3501#define IVssBackupComponentsEx3_RecoverSet(This,dwFlags,ppAsync) (This)->lpVtbl->RecoverSet(This,dwFlags,ppAsync)
3502#define IVssBackupComponentsEx3_GetSessionId(This,idSession) (This)->lpVtbl->GetSessionId(This,idSession)
3503#else
3504/*** IUnknown methods ***/
3505static inline HRESULT IVssBackupComponentsEx3_QueryInterface(IVssBackupComponentsEx3* This,REFIID riid,void **ppvObject) {
3506    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3507}
3508static inline ULONG IVssBackupComponentsEx3_AddRef(IVssBackupComponentsEx3* This) {
3509    return This->lpVtbl->AddRef(This);
3510}
3511static inline ULONG IVssBackupComponentsEx3_Release(IVssBackupComponentsEx3* This) {
3512    return This->lpVtbl->Release(This);
3513}
3514/*** IVssBackupComponents methods ***/
3515static inline HRESULT IVssBackupComponentsEx3_GetWriterComponentsCount(IVssBackupComponentsEx3* This,UINT *pcComponents) {
3516    return This->lpVtbl->GetWriterComponentsCount(This,pcComponents);
3517}
3518static inline HRESULT IVssBackupComponentsEx3_GetWriterComponents(IVssBackupComponentsEx3* This,UINT iWriter,IVssWriterComponentsExt **ppWriter) {
3519    return This->lpVtbl->GetWriterComponents(This,iWriter,ppWriter);
3520}
3521static inline HRESULT IVssBackupComponentsEx3_InitializeForBackup(IVssBackupComponentsEx3* This,BSTR bstrXML) {
3522    return This->lpVtbl->InitializeForBackup(This,bstrXML);
3523}
3524static inline HRESULT IVssBackupComponentsEx3_SetBackupState(IVssBackupComponentsEx3* This,boolean bSelectComponents,boolean bBackupBootableSystemState,VSS_BACKUP_TYPE backupType,boolean bPartialFileSupport) {
3525    return This->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport);
3526}
3527static inline HRESULT IVssBackupComponentsEx3_InitializeForRestore(IVssBackupComponentsEx3* This,BSTR bstrXML) {
3528    return This->lpVtbl->InitializeForRestore(This,bstrXML);
3529}
3530static inline HRESULT IVssBackupComponentsEx3_SetRestoreState(IVssBackupComponentsEx3* This,VSS_RESTORE_TYPE restoreType) {
3531    return This->lpVtbl->SetRestoreState(This,restoreType);
3532}
3533static inline HRESULT IVssBackupComponentsEx3_GatherWriterMetadata(IVssBackupComponentsEx3* This,IVssAsync **pAsync) {
3534    return This->lpVtbl->GatherWriterMetadata(This,pAsync);
3535}
3536static inline HRESULT IVssBackupComponentsEx3_GetWriterMetadataCount(IVssBackupComponentsEx3* This,UINT *pcWriters) {
3537    return This->lpVtbl->GetWriterMetadataCount(This,pcWriters);
3538}
3539static inline HRESULT IVssBackupComponentsEx3_GetWriterMetadata(IVssBackupComponentsEx3* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadata **ppMetadata) {
3540    return This->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata);
3541}
3542static inline HRESULT IVssBackupComponentsEx3_FreeWriterMetadata(IVssBackupComponentsEx3* This) {
3543    return This->lpVtbl->FreeWriterMetadata(This);
3544}
3545static inline HRESULT IVssBackupComponentsEx3_AddComponent(IVssBackupComponentsEx3* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName) {
3546    return This->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName);
3547}
3548static inline HRESULT IVssBackupComponentsEx3_PrepareForBackup(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
3549    return This->lpVtbl->PrepareForBackup(This,ppAsync);
3550}
3551static inline HRESULT IVssBackupComponentsEx3_AbortBackup(IVssBackupComponentsEx3* This) {
3552    return This->lpVtbl->AbortBackup(This);
3553}
3554static inline HRESULT IVssBackupComponentsEx3_GatherWriterStatus(IVssBackupComponentsEx3* This,IVssAsync **pAsync) {
3555    return This->lpVtbl->GatherWriterStatus(This,pAsync);
3556}
3557static inline HRESULT IVssBackupComponentsEx3_GetWriterStatusCount(IVssBackupComponentsEx3* This,UINT *pcWriters) {
3558    return This->lpVtbl->GetWriterStatusCount(This,pcWriters);
3559}
3560static inline HRESULT IVssBackupComponentsEx3_FreeWriterStatus(IVssBackupComponentsEx3* This) {
3561    return This->lpVtbl->FreeWriterStatus(This);
3562}
3563static inline HRESULT IVssBackupComponentsEx3_GetWriterStatus(IVssBackupComponentsEx3* This,UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pnStatus,HRESULT *phResultFailure) {
3564    return This->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure);
3565}
3566static inline HRESULT IVssBackupComponentsEx3_SetBackupSucceeded(IVssBackupComponentsEx3* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSucceded) {
3567    return This->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded);
3568}
3569static inline HRESULT IVssBackupComponentsEx3_SetBackupOptions(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszBackupOptions) {
3570    return This->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions);
3571}
3572static inline HRESULT IVssBackupComponentsEx3_SetSelectedForRestore(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore) {
3573    return This->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore);
3574}
3575static inline HRESULT IVssBackupComponentsEx3_SetRestoreOptions(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreOptions) {
3576    return This->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions);
3577}
3578static inline HRESULT IVssBackupComponentsEx3_SetAdditionalRestores(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAdditionalRestores) {
3579    return This->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores);
3580}
3581static inline HRESULT IVssBackupComponentsEx3_SetPreviousBackupStamp(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPreviousBackupStamp) {
3582    return This->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp);
3583}
3584static inline HRESULT IVssBackupComponentsEx3_SaveAsXML(IVssBackupComponentsEx3* This,BSTR *pbstrXML) {
3585    return This->lpVtbl->SaveAsXML(This,pbstrXML);
3586}
3587static inline HRESULT IVssBackupComponentsEx3_BackupComplete(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
3588    return This->lpVtbl->BackupComplete(This,ppAsync);
3589}
3590static inline HRESULT IVssBackupComponentsEx3_AddAlternativeLocationMapping(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszDestination) {
3591    return This->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination);
3592}
3593static inline HRESULT IVssBackupComponentsEx3_AddRestoreSubcomponent(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszSubComponentLogicalPath,LPCWSTR wszSubComponentName,boolean bRepair) {
3594    return This->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair);
3595}
3596static inline HRESULT IVssBackupComponentsEx3_SetFileRestoreStatus(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_FILE_RESTORE_STATUS status) {
3597    return This->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status);
3598}
3599static inline HRESULT IVssBackupComponentsEx3_AddNewTarget(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFileName,boolean bRecursive,LPCWSTR wszAlternatePath) {
3600    return This->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath);
3601}
3602static inline HRESULT IVssBackupComponentsEx3_SetRangesFilePath(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,UINT iPartialFile,LPCWSTR wszRangesFile) {
3603    return This->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile);
3604}
3605static inline HRESULT IVssBackupComponentsEx3_PreRestore(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
3606    return This->lpVtbl->PreRestore(This,ppAsync);
3607}
3608static inline HRESULT IVssBackupComponentsEx3_PostRestore(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
3609    return This->lpVtbl->PostRestore(This,ppAsync);
3610}
3611static inline HRESULT IVssBackupComponentsEx3_SetContext(IVssBackupComponentsEx3* This,LONG lContext) {
3612    return This->lpVtbl->SetContext(This,lContext);
3613}
3614static inline HRESULT IVssBackupComponentsEx3_StartSnapshotSet(IVssBackupComponentsEx3* This,VSS_ID *pSnapshotSetId) {
3615    return This->lpVtbl->StartSnapshotSet(This,pSnapshotSetId);
3616}
3617static inline HRESULT IVssBackupComponentsEx3_AddToSnapshotSet(IVssBackupComponentsEx3* This,VSS_PWSZ pwszVolumeName,VSS_ID ProviderId,VSS_ID *pidSnapshot) {
3618    return This->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot);
3619}
3620static inline HRESULT IVssBackupComponentsEx3_DoSnapshotSet(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
3621    return This->lpVtbl->DoSnapshotSet(This,ppAsync);
3622}
3623static inline HRESULT IVssBackupComponentsEx3_DeleteSnapshots(IVssBackupComponentsEx3* This,VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,WINBOOL bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) {
3624    return This->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID);
3625}
3626static inline HRESULT IVssBackupComponentsEx3_ImportSnapshots(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
3627    return This->lpVtbl->ImportSnapshots(This,ppAsync);
3628}
3629static inline HRESULT IVssBackupComponentsEx3_BreakSnapshotSet(IVssBackupComponentsEx3* This,VSS_ID SnapshotSetId) {
3630    return This->lpVtbl->BreakSnapshotSet(This,SnapshotSetId);
3631}
3632static inline HRESULT IVssBackupComponentsEx3_GetSnapshotProperties(IVssBackupComponentsEx3* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
3633    return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
3634}
3635static inline HRESULT IVssBackupComponentsEx3_Query(IVssBackupComponentsEx3* This,VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) {
3636    return This->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum);
3637}
3638static inline HRESULT IVssBackupComponentsEx3_IsVolumeSupported(IVssBackupComponentsEx3* This,VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
3639    return This->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider);
3640}
3641static inline HRESULT IVssBackupComponentsEx3_DisableWriterClasses(IVssBackupComponentsEx3* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
3642    return This->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId);
3643}
3644static inline HRESULT IVssBackupComponentsEx3_EnableWriterClasses(IVssBackupComponentsEx3* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
3645    return This->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId);
3646}
3647static inline HRESULT IVssBackupComponentsEx3_DisableWriterInstances(IVssBackupComponentsEx3* This,const VSS_ID *rgWriterInstanceId,UINT cInstanceId) {
3648    return This->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId);
3649}
3650static inline HRESULT IVssBackupComponentsEx3_ExposeSnapshot(IVssBackupComponentsEx3* This,VSS_ID SnapshotId,VSS_PWSZ wszPathFromRoot,LONG lAttributes,VSS_PWSZ wszExpose,VSS_PWSZ *pwszExposed) {
3651    return This->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed);
3652}
3653static inline HRESULT IVssBackupComponentsEx3_RevertToSnapshot(IVssBackupComponentsEx3* This,VSS_ID SnapshotId,WINBOOL bForceDismount) {
3654    return This->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount);
3655}
3656static inline HRESULT IVssBackupComponentsEx3_QueryRevertStatus(IVssBackupComponentsEx3* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
3657    return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
3658}
3659/*** IVssBackupComponentsEx methods ***/
3660static inline HRESULT IVssBackupComponentsEx3_GetWriterMetadataEx(IVssBackupComponentsEx3* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadataEx **ppMetadata) {
3661    return This->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata);
3662}
3663static inline HRESULT IVssBackupComponentsEx3_SetSelectedForRestoreEx(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore,VSS_ID instanceId) {
3664    return This->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId);
3665}
3666/*** IVssBackupComponentsEx2 methods ***/
3667static inline HRESULT IVssBackupComponentsEx3_UnexposeSnapshot(IVssBackupComponentsEx3* This,VSS_ID snapshotId) {
3668    return This->lpVtbl->UnexposeSnapshot(This,snapshotId);
3669}
3670static inline HRESULT IVssBackupComponentsEx3_SetAuthoritativeRestore(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAuth) {
3671    return This->lpVtbl->SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth);
3672}
3673static inline HRESULT IVssBackupComponentsEx3_SetRollForward(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_ROLLFORWARD_TYPE rollType,LPCWSTR wszRollForwardPoint) {
3674    return This->lpVtbl->SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint);
3675}
3676static inline HRESULT IVssBackupComponentsEx3_SetRestoreName(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreName) {
3677    return This->lpVtbl->SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName);
3678}
3679static inline HRESULT IVssBackupComponentsEx3_BreakSnapshotSetEx(IVssBackupComponentsEx3* This,VSS_ID SnapshotSetID,DWORD dwBreakFlags,IVssAsync **ppAsync) {
3680    return This->lpVtbl->BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync);
3681}
3682static inline HRESULT IVssBackupComponentsEx3_PreFastRecovery(IVssBackupComponentsEx3* This,VSS_ID SnapshotSetID,DWORD dwPreFastRecoveryFlags,IVssAsync **ppAsync) {
3683    return This->lpVtbl->PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync);
3684}
3685static inline HRESULT IVssBackupComponentsEx3_FastRecovery(IVssBackupComponentsEx3* This,VSS_ID SnapshotSetID,DWORD dwFastRecoveryFlags,IVssAsync **ppAsync) {
3686    return This->lpVtbl->FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync);
3687}
3688/*** IVssBackupComponentsEx3 methods ***/
3689static inline HRESULT IVssBackupComponentsEx3_GetWriterStatusEx(IVssBackupComponentsEx3* This,UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pnStatus,HRESULT *phrFailureWriter,HRESULT *phrApplication,BSTR *pbstrApplicationMessage) {
3690    return This->lpVtbl->GetWriterStatusEx(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phrFailureWriter,phrApplication,pbstrApplicationMessage);
3691}
3692static inline HRESULT IVssBackupComponentsEx3_AddSnapshotToRecoverySet(IVssBackupComponentsEx3* This,VSS_ID snapshotId,DWORD dwFlags,VSS_PWSZ pwszDestinationVolume) {
3693    return This->lpVtbl->AddSnapshotToRecoverySet(This,snapshotId,dwFlags,pwszDestinationVolume);
3694}
3695static inline HRESULT IVssBackupComponentsEx3_RecoverSet(IVssBackupComponentsEx3* This,DWORD dwFlags,IVssAsync **ppAsync) {
3696    return This->lpVtbl->RecoverSet(This,dwFlags,ppAsync);
3697}
3698static inline HRESULT IVssBackupComponentsEx3_GetSessionId(IVssBackupComponentsEx3* This,VSS_ID *idSession) {
3699    return This->lpVtbl->GetSessionId(This,idSession);
3700}
3701#endif
3702#endif
3703
3704#endif
3705
3706
3707#endif  /* __IVssBackupComponentsEx3_INTERFACE_DEFINED__ */
3708
3709/*****************************************************************************
3710 * IVssBackupComponentsEx4 interface
3711 */
3712#ifndef __IVssBackupComponentsEx4_INTERFACE_DEFINED__
3713#define __IVssBackupComponentsEx4_INTERFACE_DEFINED__
3714
3715DEFINE_GUID(IID_IVssBackupComponentsEx4, 0xf434c2fd, 0xb553, 0x4961, 0xa9,0xf9, 0xa8,0xe9,0x0b,0x67,0x3e,0x53);
3716#if defined(__cplusplus) && !defined(CINTERFACE)
3717MIDL_INTERFACE("f434c2fd-b553-4961-a9f9-a8e90b673e53")
3718IVssBackupComponentsEx4 : public IVssBackupComponentsEx3
3719{
3720    virtual HRESULT STDMETHODCALLTYPE GetRootAndLogicalPrefixPaths(
3721        VSS_PWSZ pwszFilePath,
3722        VSS_PWSZ *ppwszRootPath,
3723        VSS_PWSZ *ppwszLogicalPrefix,
3724        WINBOOL bNormalizeFQDNforRootPath = FALSE) = 0;
3725
3726};
3727#ifdef __CRT_UUID_DECL
3728__CRT_UUID_DECL(IVssBackupComponentsEx4, 0xf434c2fd, 0xb553, 0x4961, 0xa9,0xf9, 0xa8,0xe9,0x0b,0x67,0x3e,0x53)
3729#endif
3730#else
3731typedef struct IVssBackupComponentsEx4Vtbl {
3732    BEGIN_INTERFACE
3733
3734    /*** IUnknown methods ***/
3735    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3736        IVssBackupComponentsEx4 *This,
3737        REFIID riid,
3738        void **ppvObject);
3739
3740    ULONG (STDMETHODCALLTYPE *AddRef)(
3741        IVssBackupComponentsEx4 *This);
3742
3743    ULONG (STDMETHODCALLTYPE *Release)(
3744        IVssBackupComponentsEx4 *This);
3745
3746    /*** IVssBackupComponents methods ***/
3747    HRESULT (STDMETHODCALLTYPE *GetWriterComponentsCount)(
3748        IVssBackupComponentsEx4 *This,
3749        UINT *pcComponents);
3750
3751    HRESULT (STDMETHODCALLTYPE *GetWriterComponents)(
3752        IVssBackupComponentsEx4 *This,
3753        UINT iWriter,
3754        IVssWriterComponentsExt **ppWriter);
3755
3756    HRESULT (STDMETHODCALLTYPE *InitializeForBackup)(
3757        IVssBackupComponentsEx4 *This,
3758        BSTR bstrXML);
3759
3760    HRESULT (STDMETHODCALLTYPE *SetBackupState)(
3761        IVssBackupComponentsEx4 *This,
3762        boolean bSelectComponents,
3763        boolean bBackupBootableSystemState,
3764        VSS_BACKUP_TYPE backupType,
3765        boolean bPartialFileSupport);
3766
3767    HRESULT (STDMETHODCALLTYPE *InitializeForRestore)(
3768        IVssBackupComponentsEx4 *This,
3769        BSTR bstrXML);
3770
3771    HRESULT (STDMETHODCALLTYPE *SetRestoreState)(
3772        IVssBackupComponentsEx4 *This,
3773        VSS_RESTORE_TYPE restoreType);
3774
3775    HRESULT (STDMETHODCALLTYPE *GatherWriterMetadata)(
3776        IVssBackupComponentsEx4 *This,
3777        IVssAsync **pAsync);
3778
3779    HRESULT (STDMETHODCALLTYPE *GetWriterMetadataCount)(
3780        IVssBackupComponentsEx4 *This,
3781        UINT *pcWriters);
3782
3783    HRESULT (STDMETHODCALLTYPE *GetWriterMetadata)(
3784        IVssBackupComponentsEx4 *This,
3785        UINT iWriter,
3786        VSS_ID *pidInstance,
3787        IVssExamineWriterMetadata **ppMetadata);
3788
3789    HRESULT (STDMETHODCALLTYPE *FreeWriterMetadata)(
3790        IVssBackupComponentsEx4 *This);
3791
3792    HRESULT (STDMETHODCALLTYPE *AddComponent)(
3793        IVssBackupComponentsEx4 *This,
3794        VSS_ID instanceId,
3795        VSS_ID writerId,
3796        VSS_COMPONENT_TYPE ct,
3797        LPCWSTR wszLogicalPath,
3798        LPCWSTR wszComponentName);
3799
3800    HRESULT (STDMETHODCALLTYPE *PrepareForBackup)(
3801        IVssBackupComponentsEx4 *This,
3802        IVssAsync **ppAsync);
3803
3804    HRESULT (STDMETHODCALLTYPE *AbortBackup)(
3805        IVssBackupComponentsEx4 *This);
3806
3807    HRESULT (STDMETHODCALLTYPE *GatherWriterStatus)(
3808        IVssBackupComponentsEx4 *This,
3809        IVssAsync **pAsync);
3810
3811    HRESULT (STDMETHODCALLTYPE *GetWriterStatusCount)(
3812        IVssBackupComponentsEx4 *This,
3813        UINT *pcWriters);
3814
3815    HRESULT (STDMETHODCALLTYPE *FreeWriterStatus)(
3816        IVssBackupComponentsEx4 *This);
3817
3818    HRESULT (STDMETHODCALLTYPE *GetWriterStatus)(
3819        IVssBackupComponentsEx4 *This,
3820        UINT iWriter,
3821        VSS_ID *pidInstance,
3822        VSS_ID *pidWriter,
3823        BSTR *pbstrWriter,
3824        VSS_WRITER_STATE *pnStatus,
3825        HRESULT *phResultFailure);
3826
3827    HRESULT (STDMETHODCALLTYPE *SetBackupSucceeded)(
3828        IVssBackupComponentsEx4 *This,
3829        VSS_ID instanceId,
3830        VSS_ID writerId,
3831        VSS_COMPONENT_TYPE ct,
3832        LPCWSTR wszLogicalPath,
3833        LPCWSTR wszComponentName,
3834        boolean bSucceded);
3835
3836    HRESULT (STDMETHODCALLTYPE *SetBackupOptions)(
3837        IVssBackupComponentsEx4 *This,
3838        VSS_ID writerId,
3839        VSS_COMPONENT_TYPE ct,
3840        LPCWSTR wszLogicalPath,
3841        LPCWSTR wszComponentName,
3842        LPCWSTR wszBackupOptions);
3843
3844    HRESULT (STDMETHODCALLTYPE *SetSelectedForRestore)(
3845        IVssBackupComponentsEx4 *This,
3846        VSS_ID writerId,
3847        VSS_COMPONENT_TYPE ct,
3848        LPCWSTR wszLogicalPath,
3849        LPCWSTR wszComponentName,
3850        boolean bSelectedForRestore);
3851
3852    HRESULT (STDMETHODCALLTYPE *SetRestoreOptions)(
3853        IVssBackupComponentsEx4 *This,
3854        VSS_ID writerId,
3855        VSS_COMPONENT_TYPE ct,
3856        LPCWSTR wszLogicalPath,
3857        LPCWSTR wszComponentName,
3858        LPCWSTR wszRestoreOptions);
3859
3860    HRESULT (STDMETHODCALLTYPE *SetAdditionalRestores)(
3861        IVssBackupComponentsEx4 *This,
3862        VSS_ID writerId,
3863        VSS_COMPONENT_TYPE ct,
3864        LPCWSTR wszLogicalPath,
3865        LPCWSTR wszComponentName,
3866        boolean bAdditionalRestores);
3867
3868    HRESULT (STDMETHODCALLTYPE *SetPreviousBackupStamp)(
3869        IVssBackupComponentsEx4 *This,
3870        VSS_ID writerId,
3871        VSS_COMPONENT_TYPE ct,
3872        LPCWSTR wszLogicalPath,
3873        LPCWSTR wszComponentName,
3874        LPCWSTR wszPreviousBackupStamp);
3875
3876    HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
3877        IVssBackupComponentsEx4 *This,
3878        BSTR *pbstrXML);
3879
3880    HRESULT (STDMETHODCALLTYPE *BackupComplete)(
3881        IVssBackupComponentsEx4 *This,
3882        IVssAsync **ppAsync);
3883
3884    HRESULT (STDMETHODCALLTYPE *AddAlternativeLocationMapping)(
3885        IVssBackupComponentsEx4 *This,
3886        VSS_ID writerId,
3887        VSS_COMPONENT_TYPE componentType,
3888        LPCWSTR wszLogicalPath,
3889        LPCWSTR wszComponentName,
3890        LPCWSTR wszPath,
3891        LPCWSTR wszFilespec,
3892        boolean bRecursive,
3893        LPCWSTR wszDestination);
3894
3895    HRESULT (STDMETHODCALLTYPE *AddRestoreSubcomponent)(
3896        IVssBackupComponentsEx4 *This,
3897        VSS_ID writerId,
3898        VSS_COMPONENT_TYPE componentType,
3899        LPCWSTR wszLogicalPath,
3900        LPCWSTR wszComponentName,
3901        LPCWSTR wszSubComponentLogicalPath,
3902        LPCWSTR wszSubComponentName,
3903        boolean bRepair);
3904
3905    HRESULT (STDMETHODCALLTYPE *SetFileRestoreStatus)(
3906        IVssBackupComponentsEx4 *This,
3907        VSS_ID writerId,
3908        VSS_COMPONENT_TYPE ct,
3909        LPCWSTR wszLogicalPath,
3910        LPCWSTR wszComponentName,
3911        VSS_FILE_RESTORE_STATUS status);
3912
3913    HRESULT (STDMETHODCALLTYPE *AddNewTarget)(
3914        IVssBackupComponentsEx4 *This,
3915        VSS_ID writerId,
3916        VSS_COMPONENT_TYPE ct,
3917        LPCWSTR wszLogicalPath,
3918        LPCWSTR wszComponentName,
3919        LPCWSTR wszPath,
3920        LPCWSTR wszFileName,
3921        boolean bRecursive,
3922        LPCWSTR wszAlternatePath);
3923
3924    HRESULT (STDMETHODCALLTYPE *SetRangesFilePath)(
3925        IVssBackupComponentsEx4 *This,
3926        VSS_ID writerId,
3927        VSS_COMPONENT_TYPE ct,
3928        LPCWSTR wszLogicalPath,
3929        LPCWSTR wszComponentName,
3930        UINT iPartialFile,
3931        LPCWSTR wszRangesFile);
3932
3933    HRESULT (STDMETHODCALLTYPE *PreRestore)(
3934        IVssBackupComponentsEx4 *This,
3935        IVssAsync **ppAsync);
3936
3937    HRESULT (STDMETHODCALLTYPE *PostRestore)(
3938        IVssBackupComponentsEx4 *This,
3939        IVssAsync **ppAsync);
3940
3941    HRESULT (STDMETHODCALLTYPE *SetContext)(
3942        IVssBackupComponentsEx4 *This,
3943        LONG lContext);
3944
3945    HRESULT (STDMETHODCALLTYPE *StartSnapshotSet)(
3946        IVssBackupComponentsEx4 *This,
3947        VSS_ID *pSnapshotSetId);
3948
3949    HRESULT (STDMETHODCALLTYPE *AddToSnapshotSet)(
3950        IVssBackupComponentsEx4 *This,
3951        VSS_PWSZ pwszVolumeName,
3952        VSS_ID ProviderId,
3953        VSS_ID *pidSnapshot);
3954
3955    HRESULT (STDMETHODCALLTYPE *DoSnapshotSet)(
3956        IVssBackupComponentsEx4 *This,
3957        IVssAsync **ppAsync);
3958
3959    HRESULT (STDMETHODCALLTYPE *DeleteSnapshots)(
3960        IVssBackupComponentsEx4 *This,
3961        VSS_ID SourceObjectId,
3962        VSS_OBJECT_TYPE eSourceObjectType,
3963        WINBOOL bForceDelete,
3964        LONG *plDeletedSnapshots,
3965        VSS_ID *pNondeletedSnapshotID);
3966
3967    HRESULT (STDMETHODCALLTYPE *ImportSnapshots)(
3968        IVssBackupComponentsEx4 *This,
3969        IVssAsync **ppAsync);
3970
3971    HRESULT (STDMETHODCALLTYPE *BreakSnapshotSet)(
3972        IVssBackupComponentsEx4 *This,
3973        VSS_ID SnapshotSetId);
3974
3975    HRESULT (STDMETHODCALLTYPE *GetSnapshotProperties)(
3976        IVssBackupComponentsEx4 *This,
3977        VSS_ID SnapshotId,
3978        VSS_SNAPSHOT_PROP *pProp);
3979
3980    HRESULT (STDMETHODCALLTYPE *Query)(
3981        IVssBackupComponentsEx4 *This,
3982        VSS_ID QueriedObjectId,
3983        VSS_OBJECT_TYPE eQueriedObjectType,
3984        VSS_OBJECT_TYPE eReturnedObjectsType,
3985        IVssEnumObject **ppEnum);
3986
3987    HRESULT (STDMETHODCALLTYPE *IsVolumeSupported)(
3988        IVssBackupComponentsEx4 *This,
3989        VSS_ID ProviderId,
3990        VSS_PWSZ pwszVolumeName,
3991        WINBOOL *pbSupportedByThisProvider);
3992
3993    HRESULT (STDMETHODCALLTYPE *DisableWriterClasses)(
3994        IVssBackupComponentsEx4 *This,
3995        const VSS_ID *rgWriterClassId,
3996        UINT cClassId);
3997
3998    HRESULT (STDMETHODCALLTYPE *EnableWriterClasses)(
3999        IVssBackupComponentsEx4 *This,
4000        const VSS_ID *rgWriterClassId,
4001        UINT cClassId);
4002
4003    HRESULT (STDMETHODCALLTYPE *DisableWriterInstances)(
4004        IVssBackupComponentsEx4 *This,
4005        const VSS_ID *rgWriterInstanceId,
4006        UINT cInstanceId);
4007
4008    HRESULT (STDMETHODCALLTYPE *ExposeSnapshot)(
4009        IVssBackupComponentsEx4 *This,
4010        VSS_ID SnapshotId,
4011        VSS_PWSZ wszPathFromRoot,
4012        LONG lAttributes,
4013        VSS_PWSZ wszExpose,
4014        VSS_PWSZ *pwszExposed);
4015
4016    HRESULT (STDMETHODCALLTYPE *RevertToSnapshot)(
4017        IVssBackupComponentsEx4 *This,
4018        VSS_ID SnapshotId,
4019        WINBOOL bForceDismount);
4020
4021    HRESULT (STDMETHODCALLTYPE *QueryRevertStatus)(
4022        IVssBackupComponentsEx4 *This,
4023        VSS_PWSZ pwszVolume,
4024        IVssAsync **ppAsync);
4025
4026    /*** IVssBackupComponentsEx methods ***/
4027    HRESULT (STDMETHODCALLTYPE *GetWriterMetadataEx)(
4028        IVssBackupComponentsEx4 *This,
4029        UINT iWriter,
4030        VSS_ID *pidInstance,
4031        IVssExamineWriterMetadataEx **ppMetadata);
4032
4033    HRESULT (STDMETHODCALLTYPE *SetSelectedForRestoreEx)(
4034        IVssBackupComponentsEx4 *This,
4035        VSS_ID writerId,
4036        VSS_COMPONENT_TYPE ct,
4037        LPCWSTR wszLogicalPath,
4038        LPCWSTR wszComponentName,
4039        boolean bSelectedForRestore,
4040        VSS_ID instanceId);
4041
4042    /*** IVssBackupComponentsEx2 methods ***/
4043    HRESULT (STDMETHODCALLTYPE *UnexposeSnapshot)(
4044        IVssBackupComponentsEx4 *This,
4045        VSS_ID snapshotId);
4046
4047    HRESULT (STDMETHODCALLTYPE *SetAuthoritativeRestore)(
4048        IVssBackupComponentsEx4 *This,
4049        VSS_ID writerId,
4050        VSS_COMPONENT_TYPE ct,
4051        LPCWSTR wszLogicalPath,
4052        LPCWSTR wszComponentName,
4053        boolean bAuth);
4054
4055    HRESULT (STDMETHODCALLTYPE *SetRollForward)(
4056        IVssBackupComponentsEx4 *This,
4057        VSS_ID writerId,
4058        VSS_COMPONENT_TYPE ct,
4059        LPCWSTR wszLogicalPath,
4060        LPCWSTR wszComponentName,
4061        VSS_ROLLFORWARD_TYPE rollType,
4062        LPCWSTR wszRollForwardPoint);
4063
4064    HRESULT (STDMETHODCALLTYPE *SetRestoreName)(
4065        IVssBackupComponentsEx4 *This,
4066        VSS_ID writerId,
4067        VSS_COMPONENT_TYPE ct,
4068        LPCWSTR wszLogicalPath,
4069        LPCWSTR wszComponentName,
4070        LPCWSTR wszRestoreName);
4071
4072    HRESULT (STDMETHODCALLTYPE *BreakSnapshotSetEx)(
4073        IVssBackupComponentsEx4 *This,
4074        VSS_ID SnapshotSetID,
4075        DWORD dwBreakFlags,
4076        IVssAsync **ppAsync);
4077
4078    HRESULT (STDMETHODCALLTYPE *PreFastRecovery)(
4079        IVssBackupComponentsEx4 *This,
4080        VSS_ID SnapshotSetID,
4081        DWORD dwPreFastRecoveryFlags,
4082        IVssAsync **ppAsync);
4083
4084    HRESULT (STDMETHODCALLTYPE *FastRecovery)(
4085        IVssBackupComponentsEx4 *This,
4086        VSS_ID SnapshotSetID,
4087        DWORD dwFastRecoveryFlags,
4088        IVssAsync **ppAsync);
4089
4090    /*** IVssBackupComponentsEx3 methods ***/
4091    HRESULT (STDMETHODCALLTYPE *GetWriterStatusEx)(
4092        IVssBackupComponentsEx4 *This,
4093        UINT iWriter,
4094        VSS_ID *pidInstance,
4095        VSS_ID *pidWriter,
4096        BSTR *pbstrWriter,
4097        VSS_WRITER_STATE *pnStatus,
4098        HRESULT *phrFailureWriter,
4099        HRESULT *phrApplication,
4100        BSTR *pbstrApplicationMessage);
4101
4102    HRESULT (STDMETHODCALLTYPE *AddSnapshotToRecoverySet)(
4103        IVssBackupComponentsEx4 *This,
4104        VSS_ID snapshotId,
4105        DWORD dwFlags,
4106        VSS_PWSZ pwszDestinationVolume);
4107
4108    HRESULT (STDMETHODCALLTYPE *RecoverSet)(
4109        IVssBackupComponentsEx4 *This,
4110        DWORD dwFlags,
4111        IVssAsync **ppAsync);
4112
4113    HRESULT (STDMETHODCALLTYPE *GetSessionId)(
4114        IVssBackupComponentsEx4 *This,
4115        VSS_ID *idSession);
4116
4117    /*** IVssBackupComponentsEx4 methods ***/
4118    HRESULT (STDMETHODCALLTYPE *GetRootAndLogicalPrefixPaths)(
4119        IVssBackupComponentsEx4 *This,
4120        VSS_PWSZ pwszFilePath,
4121        VSS_PWSZ *ppwszRootPath,
4122        VSS_PWSZ *ppwszLogicalPrefix,
4123        WINBOOL bNormalizeFQDNforRootPath);
4124
4125    END_INTERFACE
4126} IVssBackupComponentsEx4Vtbl;
4127
4128interface IVssBackupComponentsEx4 {
4129    CONST_VTBL IVssBackupComponentsEx4Vtbl* lpVtbl;
4130};
4131
4132#ifdef COBJMACROS
4133#ifndef WIDL_C_INLINE_WRAPPERS
4134/*** IUnknown methods ***/
4135#define IVssBackupComponentsEx4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4136#define IVssBackupComponentsEx4_AddRef(This) (This)->lpVtbl->AddRef(This)
4137#define IVssBackupComponentsEx4_Release(This) (This)->lpVtbl->Release(This)
4138/*** IVssBackupComponents methods ***/
4139#define IVssBackupComponentsEx4_GetWriterComponentsCount(This,pcComponents) (This)->lpVtbl->GetWriterComponentsCount(This,pcComponents)
4140#define IVssBackupComponentsEx4_GetWriterComponents(This,iWriter,ppWriter) (This)->lpVtbl->GetWriterComponents(This,iWriter,ppWriter)
4141#define IVssBackupComponentsEx4_InitializeForBackup(This,bstrXML) (This)->lpVtbl->InitializeForBackup(This,bstrXML)
4142#define IVssBackupComponentsEx4_SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport) (This)->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport)
4143#define IVssBackupComponentsEx4_InitializeForRestore(This,bstrXML) (This)->lpVtbl->InitializeForRestore(This,bstrXML)
4144#define IVssBackupComponentsEx4_SetRestoreState(This,restoreType) (This)->lpVtbl->SetRestoreState(This,restoreType)
4145#define IVssBackupComponentsEx4_GatherWriterMetadata(This,pAsync) (This)->lpVtbl->GatherWriterMetadata(This,pAsync)
4146#define IVssBackupComponentsEx4_GetWriterMetadataCount(This,pcWriters) (This)->lpVtbl->GetWriterMetadataCount(This,pcWriters)
4147#define IVssBackupComponentsEx4_GetWriterMetadata(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata)
4148#define IVssBackupComponentsEx4_FreeWriterMetadata(This) (This)->lpVtbl->FreeWriterMetadata(This)
4149#define IVssBackupComponentsEx4_AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName) (This)->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName)
4150#define IVssBackupComponentsEx4_PrepareForBackup(This,ppAsync) (This)->lpVtbl->PrepareForBackup(This,ppAsync)
4151#define IVssBackupComponentsEx4_AbortBackup(This) (This)->lpVtbl->AbortBackup(This)
4152#define IVssBackupComponentsEx4_GatherWriterStatus(This,pAsync) (This)->lpVtbl->GatherWriterStatus(This,pAsync)
4153#define IVssBackupComponentsEx4_GetWriterStatusCount(This,pcWriters) (This)->lpVtbl->GetWriterStatusCount(This,pcWriters)
4154#define IVssBackupComponentsEx4_FreeWriterStatus(This) (This)->lpVtbl->FreeWriterStatus(This)
4155#define IVssBackupComponentsEx4_GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure) (This)->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure)
4156#define IVssBackupComponentsEx4_SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded) (This)->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded)
4157#define IVssBackupComponentsEx4_SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions) (This)->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions)
4158#define IVssBackupComponentsEx4_SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore) (This)->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore)
4159#define IVssBackupComponentsEx4_SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions) (This)->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions)
4160#define IVssBackupComponentsEx4_SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores) (This)->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores)
4161#define IVssBackupComponentsEx4_SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp) (This)->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp)
4162#define IVssBackupComponentsEx4_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
4163#define IVssBackupComponentsEx4_BackupComplete(This,ppAsync) (This)->lpVtbl->BackupComplete(This,ppAsync)
4164#define IVssBackupComponentsEx4_AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination) (This)->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination)
4165#define IVssBackupComponentsEx4_AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair) (This)->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair)
4166#define IVssBackupComponentsEx4_SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status) (This)->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status)
4167#define IVssBackupComponentsEx4_AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath) (This)->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath)
4168#define IVssBackupComponentsEx4_SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile) (This)->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile)
4169#define IVssBackupComponentsEx4_PreRestore(This,ppAsync) (This)->lpVtbl->PreRestore(This,ppAsync)
4170#define IVssBackupComponentsEx4_PostRestore(This,ppAsync) (This)->lpVtbl->PostRestore(This,ppAsync)
4171#define IVssBackupComponentsEx4_SetContext(This,lContext) (This)->lpVtbl->SetContext(This,lContext)
4172#define IVssBackupComponentsEx4_StartSnapshotSet(This,pSnapshotSetId) (This)->lpVtbl->StartSnapshotSet(This,pSnapshotSetId)
4173#define IVssBackupComponentsEx4_AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot) (This)->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot)
4174#define IVssBackupComponentsEx4_DoSnapshotSet(This,ppAsync) (This)->lpVtbl->DoSnapshotSet(This,ppAsync)
4175#define IVssBackupComponentsEx4_DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID) (This)->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID)
4176#define IVssBackupComponentsEx4_ImportSnapshots(This,ppAsync) (This)->lpVtbl->ImportSnapshots(This,ppAsync)
4177#define IVssBackupComponentsEx4_BreakSnapshotSet(This,SnapshotSetId) (This)->lpVtbl->BreakSnapshotSet(This,SnapshotSetId)
4178#define IVssBackupComponentsEx4_GetSnapshotProperties(This,SnapshotId,pProp) (This)->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp)
4179#define IVssBackupComponentsEx4_Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum) (This)->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum)
4180#define IVssBackupComponentsEx4_IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider) (This)->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider)
4181#define IVssBackupComponentsEx4_DisableWriterClasses(This,rgWriterClassId,cClassId) (This)->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId)
4182#define IVssBackupComponentsEx4_EnableWriterClasses(This,rgWriterClassId,cClassId) (This)->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId)
4183#define IVssBackupComponentsEx4_DisableWriterInstances(This,rgWriterInstanceId,cInstanceId) (This)->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId)
4184#define IVssBackupComponentsEx4_ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed) (This)->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed)
4185#define IVssBackupComponentsEx4_RevertToSnapshot(This,SnapshotId,bForceDismount) (This)->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount)
4186#define IVssBackupComponentsEx4_QueryRevertStatus(This,pwszVolume,ppAsync) (This)->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync)
4187/*** IVssBackupComponentsEx methods ***/
4188#define IVssBackupComponentsEx4_GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata)
4189#define IVssBackupComponentsEx4_SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId) (This)->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId)
4190/*** IVssBackupComponentsEx2 methods ***/
4191#define IVssBackupComponentsEx4_UnexposeSnapshot(This,snapshotId) (This)->lpVtbl->UnexposeSnapshot(This,snapshotId)
4192#define IVssBackupComponentsEx4_SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth) (This)->lpVtbl->SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth)
4193#define IVssBackupComponentsEx4_SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint) (This)->lpVtbl->SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint)
4194#define IVssBackupComponentsEx4_SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName) (This)->lpVtbl->SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName)
4195#define IVssBackupComponentsEx4_BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync) (This)->lpVtbl->BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync)
4196#define IVssBackupComponentsEx4_PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync) (This)->lpVtbl->PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync)
4197#define IVssBackupComponentsEx4_FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync) (This)->lpVtbl->FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync)
4198/*** IVssBackupComponentsEx3 methods ***/
4199#define IVssBackupComponentsEx4_GetWriterStatusEx(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phrFailureWriter,phrApplication,pbstrApplicationMessage) (This)->lpVtbl->GetWriterStatusEx(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phrFailureWriter,phrApplication,pbstrApplicationMessage)
4200#define IVssBackupComponentsEx4_AddSnapshotToRecoverySet(This,snapshotId,dwFlags,pwszDestinationVolume) (This)->lpVtbl->AddSnapshotToRecoverySet(This,snapshotId,dwFlags,pwszDestinationVolume)
4201#define IVssBackupComponentsEx4_RecoverSet(This,dwFlags,ppAsync) (This)->lpVtbl->RecoverSet(This,dwFlags,ppAsync)
4202#define IVssBackupComponentsEx4_GetSessionId(This,idSession) (This)->lpVtbl->GetSessionId(This,idSession)
4203/*** IVssBackupComponentsEx4 methods ***/
4204#define IVssBackupComponentsEx4_GetRootAndLogicalPrefixPaths(This,pwszFilePath,ppwszRootPath,ppwszLogicalPrefix,bNormalizeFQDNforRootPath) (This)->lpVtbl->GetRootAndLogicalPrefixPaths(This,pwszFilePath,ppwszRootPath,ppwszLogicalPrefix,bNormalizeFQDNforRootPath)
4205#else
4206/*** IUnknown methods ***/
4207static inline HRESULT IVssBackupComponentsEx4_QueryInterface(IVssBackupComponentsEx4* This,REFIID riid,void **ppvObject) {
4208    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4209}
4210static inline ULONG IVssBackupComponentsEx4_AddRef(IVssBackupComponentsEx4* This) {
4211    return This->lpVtbl->AddRef(This);
4212}
4213static inline ULONG IVssBackupComponentsEx4_Release(IVssBackupComponentsEx4* This) {
4214    return This->lpVtbl->Release(This);
4215}
4216/*** IVssBackupComponents methods ***/
4217static inline HRESULT IVssBackupComponentsEx4_GetWriterComponentsCount(IVssBackupComponentsEx4* This,UINT *pcComponents) {
4218    return This->lpVtbl->GetWriterComponentsCount(This,pcComponents);
4219}
4220static inline HRESULT IVssBackupComponentsEx4_GetWriterComponents(IVssBackupComponentsEx4* This,UINT iWriter,IVssWriterComponentsExt **ppWriter) {
4221    return This->lpVtbl->GetWriterComponents(This,iWriter,ppWriter);
4222}
4223static inline HRESULT IVssBackupComponentsEx4_InitializeForBackup(IVssBackupComponentsEx4* This,BSTR bstrXML) {
4224    return This->lpVtbl->InitializeForBackup(This,bstrXML);
4225}
4226static inline HRESULT IVssBackupComponentsEx4_SetBackupState(IVssBackupComponentsEx4* This,boolean bSelectComponents,boolean bBackupBootableSystemState,VSS_BACKUP_TYPE backupType,boolean bPartialFileSupport) {
4227    return This->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport);
4228}
4229static inline HRESULT IVssBackupComponentsEx4_InitializeForRestore(IVssBackupComponentsEx4* This,BSTR bstrXML) {
4230    return This->lpVtbl->InitializeForRestore(This,bstrXML);
4231}
4232static inline HRESULT IVssBackupComponentsEx4_SetRestoreState(IVssBackupComponentsEx4* This,VSS_RESTORE_TYPE restoreType) {
4233    return This->lpVtbl->SetRestoreState(This,restoreType);
4234}
4235static inline HRESULT IVssBackupComponentsEx4_GatherWriterMetadata(IVssBackupComponentsEx4* This,IVssAsync **pAsync) {
4236    return This->lpVtbl->GatherWriterMetadata(This,pAsync);
4237}
4238static inline HRESULT IVssBackupComponentsEx4_GetWriterMetadataCount(IVssBackupComponentsEx4* This,UINT *pcWriters) {
4239    return This->lpVtbl->GetWriterMetadataCount(This,pcWriters);
4240}
4241static inline HRESULT IVssBackupComponentsEx4_GetWriterMetadata(IVssBackupComponentsEx4* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadata **ppMetadata) {
4242    return This->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata);
4243}
4244static inline HRESULT IVssBackupComponentsEx4_FreeWriterMetadata(IVssBackupComponentsEx4* This) {
4245    return This->lpVtbl->FreeWriterMetadata(This);
4246}
4247static inline HRESULT IVssBackupComponentsEx4_AddComponent(IVssBackupComponentsEx4* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName) {
4248    return This->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName);
4249}
4250static inline HRESULT IVssBackupComponentsEx4_PrepareForBackup(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
4251    return This->lpVtbl->PrepareForBackup(This,ppAsync);
4252}
4253static inline HRESULT IVssBackupComponentsEx4_AbortBackup(IVssBackupComponentsEx4* This) {
4254    return This->lpVtbl->AbortBackup(This);
4255}
4256static inline HRESULT IVssBackupComponentsEx4_GatherWriterStatus(IVssBackupComponentsEx4* This,IVssAsync **pAsync) {
4257    return This->lpVtbl->GatherWriterStatus(This,pAsync);
4258}
4259static inline HRESULT IVssBackupComponentsEx4_GetWriterStatusCount(IVssBackupComponentsEx4* This,UINT *pcWriters) {
4260    return This->lpVtbl->GetWriterStatusCount(This,pcWriters);
4261}
4262static inline HRESULT IVssBackupComponentsEx4_FreeWriterStatus(IVssBackupComponentsEx4* This) {
4263    return This->lpVtbl->FreeWriterStatus(This);
4264}
4265static inline HRESULT IVssBackupComponentsEx4_GetWriterStatus(IVssBackupComponentsEx4* This,UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pnStatus,HRESULT *phResultFailure) {
4266    return This->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure);
4267}
4268static inline HRESULT IVssBackupComponentsEx4_SetBackupSucceeded(IVssBackupComponentsEx4* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSucceded) {
4269    return This->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded);
4270}
4271static inline HRESULT IVssBackupComponentsEx4_SetBackupOptions(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszBackupOptions) {
4272    return This->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions);
4273}
4274static inline HRESULT IVssBackupComponentsEx4_SetSelectedForRestore(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore) {
4275    return This->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore);
4276}
4277static inline HRESULT IVssBackupComponentsEx4_SetRestoreOptions(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreOptions) {
4278    return This->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions);
4279}
4280static inline HRESULT IVssBackupComponentsEx4_SetAdditionalRestores(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAdditionalRestores) {
4281    return This->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores);
4282}
4283static inline HRESULT IVssBackupComponentsEx4_SetPreviousBackupStamp(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPreviousBackupStamp) {
4284    return This->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp);
4285}
4286static inline HRESULT IVssBackupComponentsEx4_SaveAsXML(IVssBackupComponentsEx4* This,BSTR *pbstrXML) {
4287    return This->lpVtbl->SaveAsXML(This,pbstrXML);
4288}
4289static inline HRESULT IVssBackupComponentsEx4_BackupComplete(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
4290    return This->lpVtbl->BackupComplete(This,ppAsync);
4291}
4292static inline HRESULT IVssBackupComponentsEx4_AddAlternativeLocationMapping(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszDestination) {
4293    return This->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination);
4294}
4295static inline HRESULT IVssBackupComponentsEx4_AddRestoreSubcomponent(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszSubComponentLogicalPath,LPCWSTR wszSubComponentName,boolean bRepair) {
4296    return This->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair);
4297}
4298static inline HRESULT IVssBackupComponentsEx4_SetFileRestoreStatus(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_FILE_RESTORE_STATUS status) {
4299    return This->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status);
4300}
4301static inline HRESULT IVssBackupComponentsEx4_AddNewTarget(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFileName,boolean bRecursive,LPCWSTR wszAlternatePath) {
4302    return This->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath);
4303}
4304static inline HRESULT IVssBackupComponentsEx4_SetRangesFilePath(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,UINT iPartialFile,LPCWSTR wszRangesFile) {
4305    return This->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile);
4306}
4307static inline HRESULT IVssBackupComponentsEx4_PreRestore(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
4308    return This->lpVtbl->PreRestore(This,ppAsync);
4309}
4310static inline HRESULT IVssBackupComponentsEx4_PostRestore(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
4311    return This->lpVtbl->PostRestore(This,ppAsync);
4312}
4313static inline HRESULT IVssBackupComponentsEx4_SetContext(IVssBackupComponentsEx4* This,LONG lContext) {
4314    return This->lpVtbl->SetContext(This,lContext);
4315}
4316static inline HRESULT IVssBackupComponentsEx4_StartSnapshotSet(IVssBackupComponentsEx4* This,VSS_ID *pSnapshotSetId) {
4317    return This->lpVtbl->StartSnapshotSet(This,pSnapshotSetId);
4318}
4319static inline HRESULT IVssBackupComponentsEx4_AddToSnapshotSet(IVssBackupComponentsEx4* This,VSS_PWSZ pwszVolumeName,VSS_ID ProviderId,VSS_ID *pidSnapshot) {
4320    return This->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot);
4321}
4322static inline HRESULT IVssBackupComponentsEx4_DoSnapshotSet(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
4323    return This->lpVtbl->DoSnapshotSet(This,ppAsync);
4324}
4325static inline HRESULT IVssBackupComponentsEx4_DeleteSnapshots(IVssBackupComponentsEx4* This,VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,WINBOOL bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) {
4326    return This->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID);
4327}
4328static inline HRESULT IVssBackupComponentsEx4_ImportSnapshots(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
4329    return This->lpVtbl->ImportSnapshots(This,ppAsync);
4330}
4331static inline HRESULT IVssBackupComponentsEx4_BreakSnapshotSet(IVssBackupComponentsEx4* This,VSS_ID SnapshotSetId) {
4332    return This->lpVtbl->BreakSnapshotSet(This,SnapshotSetId);
4333}
4334static inline HRESULT IVssBackupComponentsEx4_GetSnapshotProperties(IVssBackupComponentsEx4* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
4335    return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
4336}
4337static inline HRESULT IVssBackupComponentsEx4_Query(IVssBackupComponentsEx4* This,VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) {
4338    return This->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum);
4339}
4340static inline HRESULT IVssBackupComponentsEx4_IsVolumeSupported(IVssBackupComponentsEx4* This,VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
4341    return This->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider);
4342}
4343static inline HRESULT IVssBackupComponentsEx4_DisableWriterClasses(IVssBackupComponentsEx4* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
4344    return This->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId);
4345}
4346static inline HRESULT IVssBackupComponentsEx4_EnableWriterClasses(IVssBackupComponentsEx4* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
4347    return This->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId);
4348}
4349static inline HRESULT IVssBackupComponentsEx4_DisableWriterInstances(IVssBackupComponentsEx4* This,const VSS_ID *rgWriterInstanceId,UINT cInstanceId) {
4350    return This->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId);
4351}
4352static inline HRESULT IVssBackupComponentsEx4_ExposeSnapshot(IVssBackupComponentsEx4* This,VSS_ID SnapshotId,VSS_PWSZ wszPathFromRoot,LONG lAttributes,VSS_PWSZ wszExpose,VSS_PWSZ *pwszExposed) {
4353    return This->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed);
4354}
4355static inline HRESULT IVssBackupComponentsEx4_RevertToSnapshot(IVssBackupComponentsEx4* This,VSS_ID SnapshotId,WINBOOL bForceDismount) {
4356    return This->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount);
4357}
4358static inline HRESULT IVssBackupComponentsEx4_QueryRevertStatus(IVssBackupComponentsEx4* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
4359    return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
4360}
4361/*** IVssBackupComponentsEx methods ***/
4362static inline HRESULT IVssBackupComponentsEx4_GetWriterMetadataEx(IVssBackupComponentsEx4* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadataEx **ppMetadata) {
4363    return This->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata);
4364}
4365static inline HRESULT IVssBackupComponentsEx4_SetSelectedForRestoreEx(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore,VSS_ID instanceId) {
4366    return This->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId);
4367}
4368/*** IVssBackupComponentsEx2 methods ***/
4369static inline HRESULT IVssBackupComponentsEx4_UnexposeSnapshot(IVssBackupComponentsEx4* This,VSS_ID snapshotId) {
4370    return This->lpVtbl->UnexposeSnapshot(This,snapshotId);
4371}
4372static inline HRESULT IVssBackupComponentsEx4_SetAuthoritativeRestore(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAuth) {
4373    return This->lpVtbl->SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth);
4374}
4375static inline HRESULT IVssBackupComponentsEx4_SetRollForward(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_ROLLFORWARD_TYPE rollType,LPCWSTR wszRollForwardPoint) {
4376    return This->lpVtbl->SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint);
4377}
4378static inline HRESULT IVssBackupComponentsEx4_SetRestoreName(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreName) {
4379    return This->lpVtbl->SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName);
4380}
4381static inline HRESULT IVssBackupComponentsEx4_BreakSnapshotSetEx(IVssBackupComponentsEx4* This,VSS_ID SnapshotSetID,DWORD dwBreakFlags,IVssAsync **ppAsync) {
4382    return This->lpVtbl->BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync);
4383}
4384static inline HRESULT IVssBackupComponentsEx4_PreFastRecovery(IVssBackupComponentsEx4* This,VSS_ID SnapshotSetID,DWORD dwPreFastRecoveryFlags,IVssAsync **ppAsync) {
4385    return This->lpVtbl->PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync);
4386}
4387static inline HRESULT IVssBackupComponentsEx4_FastRecovery(IVssBackupComponentsEx4* This,VSS_ID SnapshotSetID,DWORD dwFastRecoveryFlags,IVssAsync **ppAsync) {
4388    return This->lpVtbl->FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync);
4389}
4390/*** IVssBackupComponentsEx3 methods ***/
4391static inline HRESULT IVssBackupComponentsEx4_GetWriterStatusEx(IVssBackupComponentsEx4* This,UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pnStatus,HRESULT *phrFailureWriter,HRESULT *phrApplication,BSTR *pbstrApplicationMessage) {
4392    return This->lpVtbl->GetWriterStatusEx(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phrFailureWriter,phrApplication,pbstrApplicationMessage);
4393}
4394static inline HRESULT IVssBackupComponentsEx4_AddSnapshotToRecoverySet(IVssBackupComponentsEx4* This,VSS_ID snapshotId,DWORD dwFlags,VSS_PWSZ pwszDestinationVolume) {
4395    return This->lpVtbl->AddSnapshotToRecoverySet(This,snapshotId,dwFlags,pwszDestinationVolume);
4396}
4397static inline HRESULT IVssBackupComponentsEx4_RecoverSet(IVssBackupComponentsEx4* This,DWORD dwFlags,IVssAsync **ppAsync) {
4398    return This->lpVtbl->RecoverSet(This,dwFlags,ppAsync);
4399}
4400static inline HRESULT IVssBackupComponentsEx4_GetSessionId(IVssBackupComponentsEx4* This,VSS_ID *idSession) {
4401    return This->lpVtbl->GetSessionId(This,idSession);
4402}
4403/*** IVssBackupComponentsEx4 methods ***/
4404static inline HRESULT IVssBackupComponentsEx4_GetRootAndLogicalPrefixPaths(IVssBackupComponentsEx4* This,VSS_PWSZ pwszFilePath,VSS_PWSZ *ppwszRootPath,VSS_PWSZ *ppwszLogicalPrefix,WINBOOL bNormalizeFQDNforRootPath) {
4405    return This->lpVtbl->GetRootAndLogicalPrefixPaths(This,pwszFilePath,ppwszRootPath,ppwszLogicalPrefix,bNormalizeFQDNforRootPath);
4406}
4407#endif
4408#endif
4409
4410#endif
4411
4412
4413#endif  /* __IVssBackupComponentsEx4_INTERFACE_DEFINED__ */
4414
4415#define VSS_SW_BOOTABLE_STATE (1 << 0)
4416HRESULT STDAPICALLTYPE CreateVssBackupComponentsInternal(IVssBackupComponents **ppBackup);
4417HRESULT STDAPICALLTYPE CreateVssExamineWriterMetadataInternal(BSTR bstrXML, IVssExamineWriterMetadata **ppMetadata);
4418HRESULT APIENTRY IsVolumeSnapshottedInternal(VSS_PWSZ pwszVolumeName, WINBOOL *pbSnapshotsPresent, LONG *plSnapshotCapability);
4419void APIENTRY VssFreeSnapshotPropertiesInternal(VSS_SNAPSHOT_PROP *pProp);
4420HRESULT APIENTRY GetProviderMgmtInterfaceInternal(VSS_ID ProviderId, IID InterfaceId, IUnknown **ppItf);
4421HRESULT APIENTRY ShouldBlockRevertInternal(LPCWSTR wszVolumeName, boolean *pbBlock);
4422static __inline HRESULT CreateVssBackupComponents(IVssBackupComponents **ppBackup) { return CreateVssBackupComponentsInternal(ppBackup); }
4423static __inline HRESULT CreateVssExamineWriterMetadata(BSTR bstrXML, IVssExamineWriterMetadata **ppMetadata) { return CreateVssExamineWriterMetadataInternal(bstrXML, ppMetadata); }
4424static __inline HRESULT IsVolumeSnapshotted(VSS_PWSZ pwszVolumeName, WINBOOL *pbSnapshotsPresent, LONG *plSnapshotCapability) { return IsVolumeSnapshottedInternal(pwszVolumeName, pbSnapshotsPresent, plSnapshotCapability); }
4425static __inline void VssFreeSnapshotProperties(VSS_SNAPSHOT_PROP *pProp) { return VssFreeSnapshotPropertiesInternal(pProp); }
4426static __inline HRESULT GetProviderMgmtInterface(VSS_ID ProviderId, IID InterfaceId, IUnknown **ppItf) { return GetProviderMgmtInterfaceInternal(ProviderId, InterfaceId, ppItf); }
4427static __inline HRESULT ShouldBlockRevert(LPCWSTR wszVolumeName, boolean *pbBlock) { return ShouldBlockRevertInternal(wszVolumeName, pbBlock); }
4428#endif /* WINAPI_PARTITION_DESKTOP */
4429/* Begin additional prototypes for all interfaces */
4430
4431ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
4432unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
4433unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
4434void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
4435
4436/* End additional prototypes */
4437
4438#ifdef __cplusplus
4439}
4440#endif
4441
4442#endif /* __vsbackup_h__ */