zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

vsbackup.h (233428B) - Raw


      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__
     23 typedef interface IVssWMComponent IVssWMComponent;
     24 #ifdef __cplusplus
     25 interface IVssWMComponent;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IVssExamineWriterMetadata_FWD_DEFINED__
     30 #define __IVssExamineWriterMetadata_FWD_DEFINED__
     31 typedef interface IVssExamineWriterMetadata IVssExamineWriterMetadata;
     32 #ifdef __cplusplus
     33 interface IVssExamineWriterMetadata;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IVssExamineWriterMetadataEx_FWD_DEFINED__
     38 #define __IVssExamineWriterMetadataEx_FWD_DEFINED__
     39 typedef interface IVssExamineWriterMetadataEx IVssExamineWriterMetadataEx;
     40 #ifdef __cplusplus
     41 interface IVssExamineWriterMetadataEx;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 #ifndef __IVssExamineWriterMetadataEx2_FWD_DEFINED__
     46 #define __IVssExamineWriterMetadataEx2_FWD_DEFINED__
     47 typedef interface IVssExamineWriterMetadataEx2 IVssExamineWriterMetadataEx2;
     48 #ifdef __cplusplus
     49 interface IVssExamineWriterMetadataEx2;
     50 #endif /* __cplusplus */
     51 #endif
     52 
     53 #ifndef __IVssWriterComponentsExt_FWD_DEFINED__
     54 #define __IVssWriterComponentsExt_FWD_DEFINED__
     55 typedef interface IVssWriterComponentsExt IVssWriterComponentsExt;
     56 #ifdef __cplusplus
     57 interface IVssWriterComponentsExt;
     58 #endif /* __cplusplus */
     59 #endif
     60 
     61 #ifndef __IVssBackupComponents_FWD_DEFINED__
     62 #define __IVssBackupComponents_FWD_DEFINED__
     63 typedef interface IVssBackupComponents IVssBackupComponents;
     64 #ifdef __cplusplus
     65 interface IVssBackupComponents;
     66 #endif /* __cplusplus */
     67 #endif
     68 
     69 #ifndef __IVssBackupComponentsEx_FWD_DEFINED__
     70 #define __IVssBackupComponentsEx_FWD_DEFINED__
     71 typedef interface IVssBackupComponentsEx IVssBackupComponentsEx;
     72 #ifdef __cplusplus
     73 interface IVssBackupComponentsEx;
     74 #endif /* __cplusplus */
     75 #endif
     76 
     77 #ifndef __IVssBackupComponentsEx2_FWD_DEFINED__
     78 #define __IVssBackupComponentsEx2_FWD_DEFINED__
     79 typedef interface IVssBackupComponentsEx2 IVssBackupComponentsEx2;
     80 #ifdef __cplusplus
     81 interface IVssBackupComponentsEx2;
     82 #endif /* __cplusplus */
     83 #endif
     84 
     85 #ifndef __IVssBackupComponentsEx3_FWD_DEFINED__
     86 #define __IVssBackupComponentsEx3_FWD_DEFINED__
     87 typedef interface IVssBackupComponentsEx3 IVssBackupComponentsEx3;
     88 #ifdef __cplusplus
     89 interface IVssBackupComponentsEx3;
     90 #endif /* __cplusplus */
     91 #endif
     92 
     93 #ifndef __IVssBackupComponentsEx4_FWD_DEFINED__
     94 #define __IVssBackupComponentsEx4_FWD_DEFINED__
     95 typedef interface IVssBackupComponentsEx4 IVssBackupComponentsEx4;
     96 #ifdef __cplusplus
     97 interface 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
    109 extern "C" {
    110 #endif
    111 
    112 #include <winapifamily.h>
    113 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    114 typedef 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;
    131 typedef const VSS_COMPONENTINFO *PVSSCOMPONENTINFO;
    132 /*****************************************************************************
    133  * IVssWMComponent interface
    134  */
    135 #ifndef __IVssWMComponent_INTERFACE_DEFINED__
    136 #define __IVssWMComponent_INTERFACE_DEFINED__
    137 
    138 DEFINE_GUID(IID_IVssWMComponent, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
    139 #if defined(__cplusplus) && !defined(CINTERFACE)
    140 MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
    141 IVssWMComponent : 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
    170 typedef 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 
    217 interface 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 ***/
    236 static inline HRESULT IVssWMComponent_QueryInterface(IVssWMComponent* This,REFIID riid,void **ppvObject) {
    237     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    238 }
    239 static inline ULONG IVssWMComponent_AddRef(IVssWMComponent* This) {
    240     return This->lpVtbl->AddRef(This);
    241 }
    242 static inline ULONG IVssWMComponent_Release(IVssWMComponent* This) {
    243     return This->lpVtbl->Release(This);
    244 }
    245 /*** IVssWMComponent methods ***/
    246 static inline HRESULT IVssWMComponent_GetComponentInfo(IVssWMComponent* This,PVSSCOMPONENTINFO *ppInfo) {
    247     return This->lpVtbl->GetComponentInfo(This,ppInfo);
    248 }
    249 static inline HRESULT IVssWMComponent_FreeComponentInfo(IVssWMComponent* This,PVSSCOMPONENTINFO pInfo) {
    250     return This->lpVtbl->FreeComponentInfo(This,pInfo);
    251 }
    252 static inline HRESULT IVssWMComponent_GetFile(IVssWMComponent* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
    253     return This->lpVtbl->GetFile(This,iFile,ppFiledesc);
    254 }
    255 static inline HRESULT IVssWMComponent_GetDatabaseFile(IVssWMComponent* This,UINT iDBFile,IVssWMFiledesc **ppFiledesc) {
    256     return This->lpVtbl->GetDatabaseFile(This,iDBFile,ppFiledesc);
    257 }
    258 static inline HRESULT IVssWMComponent_GetDatabaseLogFile(IVssWMComponent* This,UINT iDbLogFile,IVssWMFiledesc **ppFiledesc) {
    259     return This->lpVtbl->GetDatabaseLogFile(This,iDbLogFile,ppFiledesc);
    260 }
    261 static 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 
    278 DEFINE_GUID(IID_IVssExamineWriterMetadata, 0x902fcf7f, 0xb7fd, 0x42f8, 0x81,0xf1, 0xb2,0xe4,0x00,0xb1,0xe5,0xbd);
    279 #if defined(__cplusplus) && !defined(CINTERFACE)
    280 MIDL_INTERFACE("902fcf7f-b7fd-42f8-81f1-b2e400b1e5bd")
    281 IVssExamineWriterMetadata : 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
    336 typedef 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 
    414 interface 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 ***/
    438 static inline HRESULT IVssExamineWriterMetadata_QueryInterface(IVssExamineWriterMetadata* This,REFIID riid,void **ppvObject) {
    439     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    440 }
    441 static inline ULONG IVssExamineWriterMetadata_AddRef(IVssExamineWriterMetadata* This) {
    442     return This->lpVtbl->AddRef(This);
    443 }
    444 static inline ULONG IVssExamineWriterMetadata_Release(IVssExamineWriterMetadata* This) {
    445     return This->lpVtbl->Release(This);
    446 }
    447 /*** IVssExamineWriterMetadata methods ***/
    448 static 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 }
    451 static inline HRESULT IVssExamineWriterMetadata_GetFileCounts(IVssExamineWriterMetadata* This,UINT *pcIncludeFiles,UINT *pcExcludeFiles,UINT *pcComponents) {
    452     return This->lpVtbl->GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents);
    453 }
    454 static inline HRESULT IVssExamineWriterMetadata_GetIncludeFile(IVssExamineWriterMetadata* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
    455     return This->lpVtbl->GetIncludeFile(This,iFile,ppFiledesc);
    456 }
    457 static inline HRESULT IVssExamineWriterMetadata_GetExcludeFile(IVssExamineWriterMetadata* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
    458     return This->lpVtbl->GetExcludeFile(This,iFile,ppFiledesc);
    459 }
    460 static inline HRESULT IVssExamineWriterMetadata_GetComponent(IVssExamineWriterMetadata* This,UINT iComponent,IVssWMComponent **ppComponent) {
    461     return This->lpVtbl->GetComponent(This,iComponent,ppComponent);
    462 }
    463 static 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 }
    466 static inline HRESULT IVssExamineWriterMetadata_GetAlternateLocationMapping(IVssExamineWriterMetadata* This,UINT iMapping,IVssWMFiledesc **ppFiledesc) {
    467     return This->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc);
    468 }
    469 static inline HRESULT IVssExamineWriterMetadata_GetBackupSchema(IVssExamineWriterMetadata* This,DWORD *pdwSchemaMask) {
    470     return This->lpVtbl->GetBackupSchema(This,pdwSchemaMask);
    471 }
    472 static inline HRESULT IVssExamineWriterMetadata_GetDocument(IVssExamineWriterMetadata* This,IXMLDOMDocument **pDoc) {
    473     return This->lpVtbl->GetDocument(This,pDoc);
    474 }
    475 static inline HRESULT IVssExamineWriterMetadata_SaveAsXML(IVssExamineWriterMetadata* This,BSTR *pbstrXML) {
    476     return This->lpVtbl->SaveAsXML(This,pbstrXML);
    477 }
    478 static 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 
    495 DEFINE_GUID(IID_IVssExamineWriterMetadataEx, 0x0c0e5ec0, 0xca44, 0x472b, 0xb7,0x02, 0xe6,0x52,0xdb,0x1c,0x04,0x51);
    496 #if defined(__cplusplus) && !defined(CINTERFACE)
    497 MIDL_INTERFACE("0c0e5ec0-ca44-472b-b702-e652db1c0451")
    498 IVssExamineWriterMetadataEx : 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
    513 typedef 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 
    601 interface 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 ***/
    627 static inline HRESULT IVssExamineWriterMetadataEx_QueryInterface(IVssExamineWriterMetadataEx* This,REFIID riid,void **ppvObject) {
    628     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    629 }
    630 static inline ULONG IVssExamineWriterMetadataEx_AddRef(IVssExamineWriterMetadataEx* This) {
    631     return This->lpVtbl->AddRef(This);
    632 }
    633 static inline ULONG IVssExamineWriterMetadataEx_Release(IVssExamineWriterMetadataEx* This) {
    634     return This->lpVtbl->Release(This);
    635 }
    636 /*** IVssExamineWriterMetadata methods ***/
    637 static 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 }
    640 static inline HRESULT IVssExamineWriterMetadataEx_GetFileCounts(IVssExamineWriterMetadataEx* This,UINT *pcIncludeFiles,UINT *pcExcludeFiles,UINT *pcComponents) {
    641     return This->lpVtbl->GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents);
    642 }
    643 static inline HRESULT IVssExamineWriterMetadataEx_GetIncludeFile(IVssExamineWriterMetadataEx* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
    644     return This->lpVtbl->GetIncludeFile(This,iFile,ppFiledesc);
    645 }
    646 static inline HRESULT IVssExamineWriterMetadataEx_GetExcludeFile(IVssExamineWriterMetadataEx* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
    647     return This->lpVtbl->GetExcludeFile(This,iFile,ppFiledesc);
    648 }
    649 static inline HRESULT IVssExamineWriterMetadataEx_GetComponent(IVssExamineWriterMetadataEx* This,UINT iComponent,IVssWMComponent **ppComponent) {
    650     return This->lpVtbl->GetComponent(This,iComponent,ppComponent);
    651 }
    652 static 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 }
    655 static inline HRESULT IVssExamineWriterMetadataEx_GetAlternateLocationMapping(IVssExamineWriterMetadataEx* This,UINT iMapping,IVssWMFiledesc **ppFiledesc) {
    656     return This->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc);
    657 }
    658 static inline HRESULT IVssExamineWriterMetadataEx_GetBackupSchema(IVssExamineWriterMetadataEx* This,DWORD *pdwSchemaMask) {
    659     return This->lpVtbl->GetBackupSchema(This,pdwSchemaMask);
    660 }
    661 static inline HRESULT IVssExamineWriterMetadataEx_GetDocument(IVssExamineWriterMetadataEx* This,IXMLDOMDocument **pDoc) {
    662     return This->lpVtbl->GetDocument(This,pDoc);
    663 }
    664 static inline HRESULT IVssExamineWriterMetadataEx_SaveAsXML(IVssExamineWriterMetadataEx* This,BSTR *pbstrXML) {
    665     return This->lpVtbl->SaveAsXML(This,pbstrXML);
    666 }
    667 static inline HRESULT IVssExamineWriterMetadataEx_LoadFromXML(IVssExamineWriterMetadataEx* This,BSTR bstrXML) {
    668     return This->lpVtbl->LoadFromXML(This,bstrXML);
    669 }
    670 /*** IVssExamineWriterMetadataEx methods ***/
    671 static 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 
    688 DEFINE_GUID(IID_IVssExamineWriterMetadataEx2, 0xce115780, 0xa611, 0x431b, 0xb5,0x7f, 0xc3,0x83,0x03,0xab,0x6a,0xee);
    689 #if defined(__cplusplus) && !defined(CINTERFACE)
    690 MIDL_INTERFACE("ce115780-a611-431b-b57f-c38303ab6aee")
    691 IVssExamineWriterMetadataEx2 : 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
    709 typedef 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 
    812 interface 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 ***/
    842 static inline HRESULT IVssExamineWriterMetadataEx2_QueryInterface(IVssExamineWriterMetadataEx2* This,REFIID riid,void **ppvObject) {
    843     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    844 }
    845 static inline ULONG IVssExamineWriterMetadataEx2_AddRef(IVssExamineWriterMetadataEx2* This) {
    846     return This->lpVtbl->AddRef(This);
    847 }
    848 static inline ULONG IVssExamineWriterMetadataEx2_Release(IVssExamineWriterMetadataEx2* This) {
    849     return This->lpVtbl->Release(This);
    850 }
    851 /*** IVssExamineWriterMetadata methods ***/
    852 static 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 }
    855 static inline HRESULT IVssExamineWriterMetadataEx2_GetFileCounts(IVssExamineWriterMetadataEx2* This,UINT *pcIncludeFiles,UINT *pcExcludeFiles,UINT *pcComponents) {
    856     return This->lpVtbl->GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents);
    857 }
    858 static inline HRESULT IVssExamineWriterMetadataEx2_GetIncludeFile(IVssExamineWriterMetadataEx2* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
    859     return This->lpVtbl->GetIncludeFile(This,iFile,ppFiledesc);
    860 }
    861 static inline HRESULT IVssExamineWriterMetadataEx2_GetExcludeFile(IVssExamineWriterMetadataEx2* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
    862     return This->lpVtbl->GetExcludeFile(This,iFile,ppFiledesc);
    863 }
    864 static inline HRESULT IVssExamineWriterMetadataEx2_GetComponent(IVssExamineWriterMetadataEx2* This,UINT iComponent,IVssWMComponent **ppComponent) {
    865     return This->lpVtbl->GetComponent(This,iComponent,ppComponent);
    866 }
    867 static 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 }
    870 static inline HRESULT IVssExamineWriterMetadataEx2_GetAlternateLocationMapping(IVssExamineWriterMetadataEx2* This,UINT iMapping,IVssWMFiledesc **ppFiledesc) {
    871     return This->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc);
    872 }
    873 static inline HRESULT IVssExamineWriterMetadataEx2_GetBackupSchema(IVssExamineWriterMetadataEx2* This,DWORD *pdwSchemaMask) {
    874     return This->lpVtbl->GetBackupSchema(This,pdwSchemaMask);
    875 }
    876 static inline HRESULT IVssExamineWriterMetadataEx2_GetDocument(IVssExamineWriterMetadataEx2* This,IXMLDOMDocument **pDoc) {
    877     return This->lpVtbl->GetDocument(This,pDoc);
    878 }
    879 static inline HRESULT IVssExamineWriterMetadataEx2_SaveAsXML(IVssExamineWriterMetadataEx2* This,BSTR *pbstrXML) {
    880     return This->lpVtbl->SaveAsXML(This,pbstrXML);
    881 }
    882 static inline HRESULT IVssExamineWriterMetadataEx2_LoadFromXML(IVssExamineWriterMetadataEx2* This,BSTR bstrXML) {
    883     return This->lpVtbl->LoadFromXML(This,bstrXML);
    884 }
    885 /*** IVssExamineWriterMetadataEx methods ***/
    886 static 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 ***/
    890 static inline HRESULT IVssExamineWriterMetadataEx2_GetVersion(IVssExamineWriterMetadataEx2* This,DWORD *pdwMajorVersion,DWORD *pdwMinorVersion) {
    891     return This->lpVtbl->GetVersion(This,pdwMajorVersion,pdwMinorVersion);
    892 }
    893 static inline HRESULT IVssExamineWriterMetadataEx2_GetExcludeFromSnapshotCount(IVssExamineWriterMetadataEx2* This,UINT *pcExcludedFromSnapshot) {
    894     return This->lpVtbl->GetExcludeFromSnapshotCount(This,pcExcludedFromSnapshot);
    895 }
    896 static 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 
    913 DEFINE_GUID(IID_IVssWriterComponentsExt, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
    914 #if defined(__cplusplus) && !defined(CINTERFACE)
    915 MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
    916 IVssWriterComponentsExt : 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
    923 typedef 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 
    944 interface 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 ***/
    956 static inline HRESULT IVssWriterComponentsExt_GetComponentCount(IVssWriterComponentsExt* This,UINT *pcComponents) {
    957     return This->lpVtbl->GetComponentCount(This,pcComponents);
    958 }
    959 static inline HRESULT IVssWriterComponentsExt_GetWriterInfo(IVssWriterComponentsExt* This,VSS_ID *pidInstance,VSS_ID *pidWriter) {
    960     return This->lpVtbl->GetWriterInfo(This,pidInstance,pidWriter);
    961 }
    962 static 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 
    979 DEFINE_GUID(IID_IVssBackupComponents, 0x665c1d5f, 0xc218, 0x414d, 0xa0,0x5d, 0x7f,0xef,0x5f,0x9d,0x5c,0x86);
    980 #if defined(__cplusplus) && !defined(CINTERFACE)
    981 MIDL_INTERFACE("665c1d5f-c218-414d-a05d-7fef5f9d5c86")
    982 IVssBackupComponents : 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
   1223 typedef 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 
   1521 interface 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 ***/
   1582 static inline HRESULT IVssBackupComponents_QueryInterface(IVssBackupComponents* This,REFIID riid,void **ppvObject) {
   1583     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1584 }
   1585 static inline ULONG IVssBackupComponents_AddRef(IVssBackupComponents* This) {
   1586     return This->lpVtbl->AddRef(This);
   1587 }
   1588 static inline ULONG IVssBackupComponents_Release(IVssBackupComponents* This) {
   1589     return This->lpVtbl->Release(This);
   1590 }
   1591 /*** IVssBackupComponents methods ***/
   1592 static inline HRESULT IVssBackupComponents_GetWriterComponentsCount(IVssBackupComponents* This,UINT *pcComponents) {
   1593     return This->lpVtbl->GetWriterComponentsCount(This,pcComponents);
   1594 }
   1595 static inline HRESULT IVssBackupComponents_GetWriterComponents(IVssBackupComponents* This,UINT iWriter,IVssWriterComponentsExt **ppWriter) {
   1596     return This->lpVtbl->GetWriterComponents(This,iWriter,ppWriter);
   1597 }
   1598 static inline HRESULT IVssBackupComponents_InitializeForBackup(IVssBackupComponents* This,BSTR bstrXML) {
   1599     return This->lpVtbl->InitializeForBackup(This,bstrXML);
   1600 }
   1601 static 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 }
   1604 static inline HRESULT IVssBackupComponents_InitializeForRestore(IVssBackupComponents* This,BSTR bstrXML) {
   1605     return This->lpVtbl->InitializeForRestore(This,bstrXML);
   1606 }
   1607 static inline HRESULT IVssBackupComponents_SetRestoreState(IVssBackupComponents* This,VSS_RESTORE_TYPE restoreType) {
   1608     return This->lpVtbl->SetRestoreState(This,restoreType);
   1609 }
   1610 static inline HRESULT IVssBackupComponents_GatherWriterMetadata(IVssBackupComponents* This,IVssAsync **pAsync) {
   1611     return This->lpVtbl->GatherWriterMetadata(This,pAsync);
   1612 }
   1613 static inline HRESULT IVssBackupComponents_GetWriterMetadataCount(IVssBackupComponents* This,UINT *pcWriters) {
   1614     return This->lpVtbl->GetWriterMetadataCount(This,pcWriters);
   1615 }
   1616 static inline HRESULT IVssBackupComponents_GetWriterMetadata(IVssBackupComponents* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadata **ppMetadata) {
   1617     return This->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata);
   1618 }
   1619 static inline HRESULT IVssBackupComponents_FreeWriterMetadata(IVssBackupComponents* This) {
   1620     return This->lpVtbl->FreeWriterMetadata(This);
   1621 }
   1622 static 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 }
   1625 static inline HRESULT IVssBackupComponents_PrepareForBackup(IVssBackupComponents* This,IVssAsync **ppAsync) {
   1626     return This->lpVtbl->PrepareForBackup(This,ppAsync);
   1627 }
   1628 static inline HRESULT IVssBackupComponents_AbortBackup(IVssBackupComponents* This) {
   1629     return This->lpVtbl->AbortBackup(This);
   1630 }
   1631 static inline HRESULT IVssBackupComponents_GatherWriterStatus(IVssBackupComponents* This,IVssAsync **pAsync) {
   1632     return This->lpVtbl->GatherWriterStatus(This,pAsync);
   1633 }
   1634 static inline HRESULT IVssBackupComponents_GetWriterStatusCount(IVssBackupComponents* This,UINT *pcWriters) {
   1635     return This->lpVtbl->GetWriterStatusCount(This,pcWriters);
   1636 }
   1637 static inline HRESULT IVssBackupComponents_FreeWriterStatus(IVssBackupComponents* This) {
   1638     return This->lpVtbl->FreeWriterStatus(This);
   1639 }
   1640 static 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 }
   1643 static 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 }
   1646 static 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 }
   1649 static 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 }
   1652 static 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 }
   1655 static 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 }
   1658 static 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 }
   1661 static inline HRESULT IVssBackupComponents_SaveAsXML(IVssBackupComponents* This,BSTR *pbstrXML) {
   1662     return This->lpVtbl->SaveAsXML(This,pbstrXML);
   1663 }
   1664 static inline HRESULT IVssBackupComponents_BackupComplete(IVssBackupComponents* This,IVssAsync **ppAsync) {
   1665     return This->lpVtbl->BackupComplete(This,ppAsync);
   1666 }
   1667 static 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 }
   1670 static 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 }
   1673 static 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 }
   1676 static 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 }
   1679 static 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 }
   1682 static inline HRESULT IVssBackupComponents_PreRestore(IVssBackupComponents* This,IVssAsync **ppAsync) {
   1683     return This->lpVtbl->PreRestore(This,ppAsync);
   1684 }
   1685 static inline HRESULT IVssBackupComponents_PostRestore(IVssBackupComponents* This,IVssAsync **ppAsync) {
   1686     return This->lpVtbl->PostRestore(This,ppAsync);
   1687 }
   1688 static inline HRESULT IVssBackupComponents_SetContext(IVssBackupComponents* This,LONG lContext) {
   1689     return This->lpVtbl->SetContext(This,lContext);
   1690 }
   1691 static inline HRESULT IVssBackupComponents_StartSnapshotSet(IVssBackupComponents* This,VSS_ID *pSnapshotSetId) {
   1692     return This->lpVtbl->StartSnapshotSet(This,pSnapshotSetId);
   1693 }
   1694 static 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 }
   1697 static inline HRESULT IVssBackupComponents_DoSnapshotSet(IVssBackupComponents* This,IVssAsync **ppAsync) {
   1698     return This->lpVtbl->DoSnapshotSet(This,ppAsync);
   1699 }
   1700 static 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 }
   1703 static inline HRESULT IVssBackupComponents_ImportSnapshots(IVssBackupComponents* This,IVssAsync **ppAsync) {
   1704     return This->lpVtbl->ImportSnapshots(This,ppAsync);
   1705 }
   1706 static inline HRESULT IVssBackupComponents_BreakSnapshotSet(IVssBackupComponents* This,VSS_ID SnapshotSetId) {
   1707     return This->lpVtbl->BreakSnapshotSet(This,SnapshotSetId);
   1708 }
   1709 static inline HRESULT IVssBackupComponents_GetSnapshotProperties(IVssBackupComponents* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
   1710     return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
   1711 }
   1712 static 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 }
   1715 static inline HRESULT IVssBackupComponents_IsVolumeSupported(IVssBackupComponents* This,VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
   1716     return This->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider);
   1717 }
   1718 static inline HRESULT IVssBackupComponents_DisableWriterClasses(IVssBackupComponents* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
   1719     return This->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId);
   1720 }
   1721 static inline HRESULT IVssBackupComponents_EnableWriterClasses(IVssBackupComponents* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
   1722     return This->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId);
   1723 }
   1724 static inline HRESULT IVssBackupComponents_DisableWriterInstances(IVssBackupComponents* This,const VSS_ID *rgWriterInstanceId,UINT cInstanceId) {
   1725     return This->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId);
   1726 }
   1727 static 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 }
   1730 static inline HRESULT IVssBackupComponents_RevertToSnapshot(IVssBackupComponents* This,VSS_ID SnapshotId,WINBOOL bForceDismount) {
   1731     return This->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount);
   1732 }
   1733 static 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 
   1750 DEFINE_GUID(IID_IVssBackupComponentsEx, 0x963f03ad, 0x9e4c, 0x4a34, 0xac,0x15, 0xe4,0xb6,0x17,0x4e,0x50,0x36);
   1751 #if defined(__cplusplus) && !defined(CINTERFACE)
   1752 MIDL_INTERFACE("963f03ad-9e4c-4a34-ac15-e4b6174e5036")
   1753 IVssBackupComponentsEx : 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
   1773 typedef 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 
   2087 interface 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 ***/
   2151 static inline HRESULT IVssBackupComponentsEx_QueryInterface(IVssBackupComponentsEx* This,REFIID riid,void **ppvObject) {
   2152     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2153 }
   2154 static inline ULONG IVssBackupComponentsEx_AddRef(IVssBackupComponentsEx* This) {
   2155     return This->lpVtbl->AddRef(This);
   2156 }
   2157 static inline ULONG IVssBackupComponentsEx_Release(IVssBackupComponentsEx* This) {
   2158     return This->lpVtbl->Release(This);
   2159 }
   2160 /*** IVssBackupComponents methods ***/
   2161 static inline HRESULT IVssBackupComponentsEx_GetWriterComponentsCount(IVssBackupComponentsEx* This,UINT *pcComponents) {
   2162     return This->lpVtbl->GetWriterComponentsCount(This,pcComponents);
   2163 }
   2164 static inline HRESULT IVssBackupComponentsEx_GetWriterComponents(IVssBackupComponentsEx* This,UINT iWriter,IVssWriterComponentsExt **ppWriter) {
   2165     return This->lpVtbl->GetWriterComponents(This,iWriter,ppWriter);
   2166 }
   2167 static inline HRESULT IVssBackupComponentsEx_InitializeForBackup(IVssBackupComponentsEx* This,BSTR bstrXML) {
   2168     return This->lpVtbl->InitializeForBackup(This,bstrXML);
   2169 }
   2170 static 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 }
   2173 static inline HRESULT IVssBackupComponentsEx_InitializeForRestore(IVssBackupComponentsEx* This,BSTR bstrXML) {
   2174     return This->lpVtbl->InitializeForRestore(This,bstrXML);
   2175 }
   2176 static inline HRESULT IVssBackupComponentsEx_SetRestoreState(IVssBackupComponentsEx* This,VSS_RESTORE_TYPE restoreType) {
   2177     return This->lpVtbl->SetRestoreState(This,restoreType);
   2178 }
   2179 static inline HRESULT IVssBackupComponentsEx_GatherWriterMetadata(IVssBackupComponentsEx* This,IVssAsync **pAsync) {
   2180     return This->lpVtbl->GatherWriterMetadata(This,pAsync);
   2181 }
   2182 static inline HRESULT IVssBackupComponentsEx_GetWriterMetadataCount(IVssBackupComponentsEx* This,UINT *pcWriters) {
   2183     return This->lpVtbl->GetWriterMetadataCount(This,pcWriters);
   2184 }
   2185 static inline HRESULT IVssBackupComponentsEx_GetWriterMetadata(IVssBackupComponentsEx* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadata **ppMetadata) {
   2186     return This->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata);
   2187 }
   2188 static inline HRESULT IVssBackupComponentsEx_FreeWriterMetadata(IVssBackupComponentsEx* This) {
   2189     return This->lpVtbl->FreeWriterMetadata(This);
   2190 }
   2191 static 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 }
   2194 static inline HRESULT IVssBackupComponentsEx_PrepareForBackup(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
   2195     return This->lpVtbl->PrepareForBackup(This,ppAsync);
   2196 }
   2197 static inline HRESULT IVssBackupComponentsEx_AbortBackup(IVssBackupComponentsEx* This) {
   2198     return This->lpVtbl->AbortBackup(This);
   2199 }
   2200 static inline HRESULT IVssBackupComponentsEx_GatherWriterStatus(IVssBackupComponentsEx* This,IVssAsync **pAsync) {
   2201     return This->lpVtbl->GatherWriterStatus(This,pAsync);
   2202 }
   2203 static inline HRESULT IVssBackupComponentsEx_GetWriterStatusCount(IVssBackupComponentsEx* This,UINT *pcWriters) {
   2204     return This->lpVtbl->GetWriterStatusCount(This,pcWriters);
   2205 }
   2206 static inline HRESULT IVssBackupComponentsEx_FreeWriterStatus(IVssBackupComponentsEx* This) {
   2207     return This->lpVtbl->FreeWriterStatus(This);
   2208 }
   2209 static 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 }
   2212 static 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 }
   2215 static 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 }
   2218 static 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 }
   2221 static 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 }
   2224 static 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 }
   2227 static 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 }
   2230 static inline HRESULT IVssBackupComponentsEx_SaveAsXML(IVssBackupComponentsEx* This,BSTR *pbstrXML) {
   2231     return This->lpVtbl->SaveAsXML(This,pbstrXML);
   2232 }
   2233 static inline HRESULT IVssBackupComponentsEx_BackupComplete(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
   2234     return This->lpVtbl->BackupComplete(This,ppAsync);
   2235 }
   2236 static 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 }
   2239 static 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 }
   2242 static 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 }
   2245 static 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 }
   2248 static 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 }
   2251 static inline HRESULT IVssBackupComponentsEx_PreRestore(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
   2252     return This->lpVtbl->PreRestore(This,ppAsync);
   2253 }
   2254 static inline HRESULT IVssBackupComponentsEx_PostRestore(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
   2255     return This->lpVtbl->PostRestore(This,ppAsync);
   2256 }
   2257 static inline HRESULT IVssBackupComponentsEx_SetContext(IVssBackupComponentsEx* This,LONG lContext) {
   2258     return This->lpVtbl->SetContext(This,lContext);
   2259 }
   2260 static inline HRESULT IVssBackupComponentsEx_StartSnapshotSet(IVssBackupComponentsEx* This,VSS_ID *pSnapshotSetId) {
   2261     return This->lpVtbl->StartSnapshotSet(This,pSnapshotSetId);
   2262 }
   2263 static 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 }
   2266 static inline HRESULT IVssBackupComponentsEx_DoSnapshotSet(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
   2267     return This->lpVtbl->DoSnapshotSet(This,ppAsync);
   2268 }
   2269 static 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 }
   2272 static inline HRESULT IVssBackupComponentsEx_ImportSnapshots(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
   2273     return This->lpVtbl->ImportSnapshots(This,ppAsync);
   2274 }
   2275 static inline HRESULT IVssBackupComponentsEx_BreakSnapshotSet(IVssBackupComponentsEx* This,VSS_ID SnapshotSetId) {
   2276     return This->lpVtbl->BreakSnapshotSet(This,SnapshotSetId);
   2277 }
   2278 static inline HRESULT IVssBackupComponentsEx_GetSnapshotProperties(IVssBackupComponentsEx* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
   2279     return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
   2280 }
   2281 static 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 }
   2284 static inline HRESULT IVssBackupComponentsEx_IsVolumeSupported(IVssBackupComponentsEx* This,VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
   2285     return This->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider);
   2286 }
   2287 static inline HRESULT IVssBackupComponentsEx_DisableWriterClasses(IVssBackupComponentsEx* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
   2288     return This->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId);
   2289 }
   2290 static inline HRESULT IVssBackupComponentsEx_EnableWriterClasses(IVssBackupComponentsEx* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
   2291     return This->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId);
   2292 }
   2293 static inline HRESULT IVssBackupComponentsEx_DisableWriterInstances(IVssBackupComponentsEx* This,const VSS_ID *rgWriterInstanceId,UINT cInstanceId) {
   2294     return This->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId);
   2295 }
   2296 static 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 }
   2299 static inline HRESULT IVssBackupComponentsEx_RevertToSnapshot(IVssBackupComponentsEx* This,VSS_ID SnapshotId,WINBOOL bForceDismount) {
   2300     return This->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount);
   2301 }
   2302 static inline HRESULT IVssBackupComponentsEx_QueryRevertStatus(IVssBackupComponentsEx* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
   2303     return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
   2304 }
   2305 /*** IVssBackupComponentsEx methods ***/
   2306 static inline HRESULT IVssBackupComponentsEx_GetWriterMetadataEx(IVssBackupComponentsEx* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadataEx **ppMetadata) {
   2307     return This->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata);
   2308 }
   2309 static 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 
   2326 DEFINE_GUID(IID_IVssBackupComponentsEx2, 0xacfe2b3a, 0x22c9, 0x4ef8, 0xbd,0x03, 0x2f,0x9c,0xa2,0x30,0x08,0x4e);
   2327 #if defined(__cplusplus) && !defined(CINTERFACE)
   2328 MIDL_INTERFACE("acfe2b3a-22c9-4ef8-bd03-2f9ca230084e")
   2329 IVssBackupComponentsEx2 : 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
   2376 typedef 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 
   2738 interface 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 ***/
   2810 static inline HRESULT IVssBackupComponentsEx2_QueryInterface(IVssBackupComponentsEx2* This,REFIID riid,void **ppvObject) {
   2811     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2812 }
   2813 static inline ULONG IVssBackupComponentsEx2_AddRef(IVssBackupComponentsEx2* This) {
   2814     return This->lpVtbl->AddRef(This);
   2815 }
   2816 static inline ULONG IVssBackupComponentsEx2_Release(IVssBackupComponentsEx2* This) {
   2817     return This->lpVtbl->Release(This);
   2818 }
   2819 /*** IVssBackupComponents methods ***/
   2820 static inline HRESULT IVssBackupComponentsEx2_GetWriterComponentsCount(IVssBackupComponentsEx2* This,UINT *pcComponents) {
   2821     return This->lpVtbl->GetWriterComponentsCount(This,pcComponents);
   2822 }
   2823 static inline HRESULT IVssBackupComponentsEx2_GetWriterComponents(IVssBackupComponentsEx2* This,UINT iWriter,IVssWriterComponentsExt **ppWriter) {
   2824     return This->lpVtbl->GetWriterComponents(This,iWriter,ppWriter);
   2825 }
   2826 static inline HRESULT IVssBackupComponentsEx2_InitializeForBackup(IVssBackupComponentsEx2* This,BSTR bstrXML) {
   2827     return This->lpVtbl->InitializeForBackup(This,bstrXML);
   2828 }
   2829 static 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 }
   2832 static inline HRESULT IVssBackupComponentsEx2_InitializeForRestore(IVssBackupComponentsEx2* This,BSTR bstrXML) {
   2833     return This->lpVtbl->InitializeForRestore(This,bstrXML);
   2834 }
   2835 static inline HRESULT IVssBackupComponentsEx2_SetRestoreState(IVssBackupComponentsEx2* This,VSS_RESTORE_TYPE restoreType) {
   2836     return This->lpVtbl->SetRestoreState(This,restoreType);
   2837 }
   2838 static inline HRESULT IVssBackupComponentsEx2_GatherWriterMetadata(IVssBackupComponentsEx2* This,IVssAsync **pAsync) {
   2839     return This->lpVtbl->GatherWriterMetadata(This,pAsync);
   2840 }
   2841 static inline HRESULT IVssBackupComponentsEx2_GetWriterMetadataCount(IVssBackupComponentsEx2* This,UINT *pcWriters) {
   2842     return This->lpVtbl->GetWriterMetadataCount(This,pcWriters);
   2843 }
   2844 static inline HRESULT IVssBackupComponentsEx2_GetWriterMetadata(IVssBackupComponentsEx2* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadata **ppMetadata) {
   2845     return This->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata);
   2846 }
   2847 static inline HRESULT IVssBackupComponentsEx2_FreeWriterMetadata(IVssBackupComponentsEx2* This) {
   2848     return This->lpVtbl->FreeWriterMetadata(This);
   2849 }
   2850 static 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 }
   2853 static inline HRESULT IVssBackupComponentsEx2_PrepareForBackup(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
   2854     return This->lpVtbl->PrepareForBackup(This,ppAsync);
   2855 }
   2856 static inline HRESULT IVssBackupComponentsEx2_AbortBackup(IVssBackupComponentsEx2* This) {
   2857     return This->lpVtbl->AbortBackup(This);
   2858 }
   2859 static inline HRESULT IVssBackupComponentsEx2_GatherWriterStatus(IVssBackupComponentsEx2* This,IVssAsync **pAsync) {
   2860     return This->lpVtbl->GatherWriterStatus(This,pAsync);
   2861 }
   2862 static inline HRESULT IVssBackupComponentsEx2_GetWriterStatusCount(IVssBackupComponentsEx2* This,UINT *pcWriters) {
   2863     return This->lpVtbl->GetWriterStatusCount(This,pcWriters);
   2864 }
   2865 static inline HRESULT IVssBackupComponentsEx2_FreeWriterStatus(IVssBackupComponentsEx2* This) {
   2866     return This->lpVtbl->FreeWriterStatus(This);
   2867 }
   2868 static 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 }
   2871 static 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 }
   2874 static 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 }
   2877 static 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 }
   2880 static 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 }
   2883 static 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 }
   2886 static 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 }
   2889 static inline HRESULT IVssBackupComponentsEx2_SaveAsXML(IVssBackupComponentsEx2* This,BSTR *pbstrXML) {
   2890     return This->lpVtbl->SaveAsXML(This,pbstrXML);
   2891 }
   2892 static inline HRESULT IVssBackupComponentsEx2_BackupComplete(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
   2893     return This->lpVtbl->BackupComplete(This,ppAsync);
   2894 }
   2895 static 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 }
   2898 static 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 }
   2901 static 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 }
   2904 static 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 }
   2907 static 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 }
   2910 static inline HRESULT IVssBackupComponentsEx2_PreRestore(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
   2911     return This->lpVtbl->PreRestore(This,ppAsync);
   2912 }
   2913 static inline HRESULT IVssBackupComponentsEx2_PostRestore(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
   2914     return This->lpVtbl->PostRestore(This,ppAsync);
   2915 }
   2916 static inline HRESULT IVssBackupComponentsEx2_SetContext(IVssBackupComponentsEx2* This,LONG lContext) {
   2917     return This->lpVtbl->SetContext(This,lContext);
   2918 }
   2919 static inline HRESULT IVssBackupComponentsEx2_StartSnapshotSet(IVssBackupComponentsEx2* This,VSS_ID *pSnapshotSetId) {
   2920     return This->lpVtbl->StartSnapshotSet(This,pSnapshotSetId);
   2921 }
   2922 static 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 }
   2925 static inline HRESULT IVssBackupComponentsEx2_DoSnapshotSet(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
   2926     return This->lpVtbl->DoSnapshotSet(This,ppAsync);
   2927 }
   2928 static 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 }
   2931 static inline HRESULT IVssBackupComponentsEx2_ImportSnapshots(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
   2932     return This->lpVtbl->ImportSnapshots(This,ppAsync);
   2933 }
   2934 static inline HRESULT IVssBackupComponentsEx2_BreakSnapshotSet(IVssBackupComponentsEx2* This,VSS_ID SnapshotSetId) {
   2935     return This->lpVtbl->BreakSnapshotSet(This,SnapshotSetId);
   2936 }
   2937 static inline HRESULT IVssBackupComponentsEx2_GetSnapshotProperties(IVssBackupComponentsEx2* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
   2938     return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
   2939 }
   2940 static 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 }
   2943 static inline HRESULT IVssBackupComponentsEx2_IsVolumeSupported(IVssBackupComponentsEx2* This,VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
   2944     return This->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider);
   2945 }
   2946 static inline HRESULT IVssBackupComponentsEx2_DisableWriterClasses(IVssBackupComponentsEx2* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
   2947     return This->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId);
   2948 }
   2949 static inline HRESULT IVssBackupComponentsEx2_EnableWriterClasses(IVssBackupComponentsEx2* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
   2950     return This->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId);
   2951 }
   2952 static inline HRESULT IVssBackupComponentsEx2_DisableWriterInstances(IVssBackupComponentsEx2* This,const VSS_ID *rgWriterInstanceId,UINT cInstanceId) {
   2953     return This->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId);
   2954 }
   2955 static 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 }
   2958 static inline HRESULT IVssBackupComponentsEx2_RevertToSnapshot(IVssBackupComponentsEx2* This,VSS_ID SnapshotId,WINBOOL bForceDismount) {
   2959     return This->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount);
   2960 }
   2961 static inline HRESULT IVssBackupComponentsEx2_QueryRevertStatus(IVssBackupComponentsEx2* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
   2962     return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
   2963 }
   2964 /*** IVssBackupComponentsEx methods ***/
   2965 static inline HRESULT IVssBackupComponentsEx2_GetWriterMetadataEx(IVssBackupComponentsEx2* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadataEx **ppMetadata) {
   2966     return This->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata);
   2967 }
   2968 static 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 ***/
   2972 static inline HRESULT IVssBackupComponentsEx2_UnexposeSnapshot(IVssBackupComponentsEx2* This,VSS_ID snapshotId) {
   2973     return This->lpVtbl->UnexposeSnapshot(This,snapshotId);
   2974 }
   2975 static 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 }
   2978 static 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 }
   2981 static 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 }
   2984 static inline HRESULT IVssBackupComponentsEx2_BreakSnapshotSetEx(IVssBackupComponentsEx2* This,VSS_ID SnapshotSetID,DWORD dwBreakFlags,IVssAsync **ppAsync) {
   2985     return This->lpVtbl->BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync);
   2986 }
   2987 static inline HRESULT IVssBackupComponentsEx2_PreFastRecovery(IVssBackupComponentsEx2* This,VSS_ID SnapshotSetID,DWORD dwPreFastRecoveryFlags,IVssAsync **ppAsync) {
   2988     return This->lpVtbl->PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync);
   2989 }
   2990 static 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 
   3007 DEFINE_GUID(IID_IVssBackupComponentsEx3, 0xc191bfbc, 0xb602, 0x4675, 0x8b,0xd1, 0x67,0xd6,0x42,0xf5,0x29,0xd5);
   3008 #if defined(__cplusplus) && !defined(CINTERFACE)
   3009 MIDL_INTERFACE("c191bfbc-b602-4675-8bd1-67d642f529d5")
   3010 IVssBackupComponentsEx3 : 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
   3039 typedef 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 
   3428 interface 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 ***/
   3505 static inline HRESULT IVssBackupComponentsEx3_QueryInterface(IVssBackupComponentsEx3* This,REFIID riid,void **ppvObject) {
   3506     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3507 }
   3508 static inline ULONG IVssBackupComponentsEx3_AddRef(IVssBackupComponentsEx3* This) {
   3509     return This->lpVtbl->AddRef(This);
   3510 }
   3511 static inline ULONG IVssBackupComponentsEx3_Release(IVssBackupComponentsEx3* This) {
   3512     return This->lpVtbl->Release(This);
   3513 }
   3514 /*** IVssBackupComponents methods ***/
   3515 static inline HRESULT IVssBackupComponentsEx3_GetWriterComponentsCount(IVssBackupComponentsEx3* This,UINT *pcComponents) {
   3516     return This->lpVtbl->GetWriterComponentsCount(This,pcComponents);
   3517 }
   3518 static inline HRESULT IVssBackupComponentsEx3_GetWriterComponents(IVssBackupComponentsEx3* This,UINT iWriter,IVssWriterComponentsExt **ppWriter) {
   3519     return This->lpVtbl->GetWriterComponents(This,iWriter,ppWriter);
   3520 }
   3521 static inline HRESULT IVssBackupComponentsEx3_InitializeForBackup(IVssBackupComponentsEx3* This,BSTR bstrXML) {
   3522     return This->lpVtbl->InitializeForBackup(This,bstrXML);
   3523 }
   3524 static 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 }
   3527 static inline HRESULT IVssBackupComponentsEx3_InitializeForRestore(IVssBackupComponentsEx3* This,BSTR bstrXML) {
   3528     return This->lpVtbl->InitializeForRestore(This,bstrXML);
   3529 }
   3530 static inline HRESULT IVssBackupComponentsEx3_SetRestoreState(IVssBackupComponentsEx3* This,VSS_RESTORE_TYPE restoreType) {
   3531     return This->lpVtbl->SetRestoreState(This,restoreType);
   3532 }
   3533 static inline HRESULT IVssBackupComponentsEx3_GatherWriterMetadata(IVssBackupComponentsEx3* This,IVssAsync **pAsync) {
   3534     return This->lpVtbl->GatherWriterMetadata(This,pAsync);
   3535 }
   3536 static inline HRESULT IVssBackupComponentsEx3_GetWriterMetadataCount(IVssBackupComponentsEx3* This,UINT *pcWriters) {
   3537     return This->lpVtbl->GetWriterMetadataCount(This,pcWriters);
   3538 }
   3539 static inline HRESULT IVssBackupComponentsEx3_GetWriterMetadata(IVssBackupComponentsEx3* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadata **ppMetadata) {
   3540     return This->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata);
   3541 }
   3542 static inline HRESULT IVssBackupComponentsEx3_FreeWriterMetadata(IVssBackupComponentsEx3* This) {
   3543     return This->lpVtbl->FreeWriterMetadata(This);
   3544 }
   3545 static 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 }
   3548 static inline HRESULT IVssBackupComponentsEx3_PrepareForBackup(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
   3549     return This->lpVtbl->PrepareForBackup(This,ppAsync);
   3550 }
   3551 static inline HRESULT IVssBackupComponentsEx3_AbortBackup(IVssBackupComponentsEx3* This) {
   3552     return This->lpVtbl->AbortBackup(This);
   3553 }
   3554 static inline HRESULT IVssBackupComponentsEx3_GatherWriterStatus(IVssBackupComponentsEx3* This,IVssAsync **pAsync) {
   3555     return This->lpVtbl->GatherWriterStatus(This,pAsync);
   3556 }
   3557 static inline HRESULT IVssBackupComponentsEx3_GetWriterStatusCount(IVssBackupComponentsEx3* This,UINT *pcWriters) {
   3558     return This->lpVtbl->GetWriterStatusCount(This,pcWriters);
   3559 }
   3560 static inline HRESULT IVssBackupComponentsEx3_FreeWriterStatus(IVssBackupComponentsEx3* This) {
   3561     return This->lpVtbl->FreeWriterStatus(This);
   3562 }
   3563 static 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 }
   3566 static 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 }
   3569 static 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 }
   3572 static 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 }
   3575 static 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 }
   3578 static 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 }
   3581 static 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 }
   3584 static inline HRESULT IVssBackupComponentsEx3_SaveAsXML(IVssBackupComponentsEx3* This,BSTR *pbstrXML) {
   3585     return This->lpVtbl->SaveAsXML(This,pbstrXML);
   3586 }
   3587 static inline HRESULT IVssBackupComponentsEx3_BackupComplete(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
   3588     return This->lpVtbl->BackupComplete(This,ppAsync);
   3589 }
   3590 static 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 }
   3593 static 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 }
   3596 static 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 }
   3599 static 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 }
   3602 static 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 }
   3605 static inline HRESULT IVssBackupComponentsEx3_PreRestore(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
   3606     return This->lpVtbl->PreRestore(This,ppAsync);
   3607 }
   3608 static inline HRESULT IVssBackupComponentsEx3_PostRestore(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
   3609     return This->lpVtbl->PostRestore(This,ppAsync);
   3610 }
   3611 static inline HRESULT IVssBackupComponentsEx3_SetContext(IVssBackupComponentsEx3* This,LONG lContext) {
   3612     return This->lpVtbl->SetContext(This,lContext);
   3613 }
   3614 static inline HRESULT IVssBackupComponentsEx3_StartSnapshotSet(IVssBackupComponentsEx3* This,VSS_ID *pSnapshotSetId) {
   3615     return This->lpVtbl->StartSnapshotSet(This,pSnapshotSetId);
   3616 }
   3617 static 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 }
   3620 static inline HRESULT IVssBackupComponentsEx3_DoSnapshotSet(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
   3621     return This->lpVtbl->DoSnapshotSet(This,ppAsync);
   3622 }
   3623 static 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 }
   3626 static inline HRESULT IVssBackupComponentsEx3_ImportSnapshots(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
   3627     return This->lpVtbl->ImportSnapshots(This,ppAsync);
   3628 }
   3629 static inline HRESULT IVssBackupComponentsEx3_BreakSnapshotSet(IVssBackupComponentsEx3* This,VSS_ID SnapshotSetId) {
   3630     return This->lpVtbl->BreakSnapshotSet(This,SnapshotSetId);
   3631 }
   3632 static inline HRESULT IVssBackupComponentsEx3_GetSnapshotProperties(IVssBackupComponentsEx3* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
   3633     return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
   3634 }
   3635 static 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 }
   3638 static inline HRESULT IVssBackupComponentsEx3_IsVolumeSupported(IVssBackupComponentsEx3* This,VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
   3639     return This->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider);
   3640 }
   3641 static inline HRESULT IVssBackupComponentsEx3_DisableWriterClasses(IVssBackupComponentsEx3* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
   3642     return This->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId);
   3643 }
   3644 static inline HRESULT IVssBackupComponentsEx3_EnableWriterClasses(IVssBackupComponentsEx3* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
   3645     return This->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId);
   3646 }
   3647 static inline HRESULT IVssBackupComponentsEx3_DisableWriterInstances(IVssBackupComponentsEx3* This,const VSS_ID *rgWriterInstanceId,UINT cInstanceId) {
   3648     return This->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId);
   3649 }
   3650 static 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 }
   3653 static inline HRESULT IVssBackupComponentsEx3_RevertToSnapshot(IVssBackupComponentsEx3* This,VSS_ID SnapshotId,WINBOOL bForceDismount) {
   3654     return This->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount);
   3655 }
   3656 static inline HRESULT IVssBackupComponentsEx3_QueryRevertStatus(IVssBackupComponentsEx3* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
   3657     return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
   3658 }
   3659 /*** IVssBackupComponentsEx methods ***/
   3660 static inline HRESULT IVssBackupComponentsEx3_GetWriterMetadataEx(IVssBackupComponentsEx3* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadataEx **ppMetadata) {
   3661     return This->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata);
   3662 }
   3663 static 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 ***/
   3667 static inline HRESULT IVssBackupComponentsEx3_UnexposeSnapshot(IVssBackupComponentsEx3* This,VSS_ID snapshotId) {
   3668     return This->lpVtbl->UnexposeSnapshot(This,snapshotId);
   3669 }
   3670 static 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 }
   3673 static 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 }
   3676 static 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 }
   3679 static inline HRESULT IVssBackupComponentsEx3_BreakSnapshotSetEx(IVssBackupComponentsEx3* This,VSS_ID SnapshotSetID,DWORD dwBreakFlags,IVssAsync **ppAsync) {
   3680     return This->lpVtbl->BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync);
   3681 }
   3682 static inline HRESULT IVssBackupComponentsEx3_PreFastRecovery(IVssBackupComponentsEx3* This,VSS_ID SnapshotSetID,DWORD dwPreFastRecoveryFlags,IVssAsync **ppAsync) {
   3683     return This->lpVtbl->PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync);
   3684 }
   3685 static 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 ***/
   3689 static 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 }
   3692 static inline HRESULT IVssBackupComponentsEx3_AddSnapshotToRecoverySet(IVssBackupComponentsEx3* This,VSS_ID snapshotId,DWORD dwFlags,VSS_PWSZ pwszDestinationVolume) {
   3693     return This->lpVtbl->AddSnapshotToRecoverySet(This,snapshotId,dwFlags,pwszDestinationVolume);
   3694 }
   3695 static inline HRESULT IVssBackupComponentsEx3_RecoverSet(IVssBackupComponentsEx3* This,DWORD dwFlags,IVssAsync **ppAsync) {
   3696     return This->lpVtbl->RecoverSet(This,dwFlags,ppAsync);
   3697 }
   3698 static 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 
   3715 DEFINE_GUID(IID_IVssBackupComponentsEx4, 0xf434c2fd, 0xb553, 0x4961, 0xa9,0xf9, 0xa8,0xe9,0x0b,0x67,0x3e,0x53);
   3716 #if defined(__cplusplus) && !defined(CINTERFACE)
   3717 MIDL_INTERFACE("f434c2fd-b553-4961-a9f9-a8e90b673e53")
   3718 IVssBackupComponentsEx4 : 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
   3731 typedef 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 
   4128 interface 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 ***/
   4207 static inline HRESULT IVssBackupComponentsEx4_QueryInterface(IVssBackupComponentsEx4* This,REFIID riid,void **ppvObject) {
   4208     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4209 }
   4210 static inline ULONG IVssBackupComponentsEx4_AddRef(IVssBackupComponentsEx4* This) {
   4211     return This->lpVtbl->AddRef(This);
   4212 }
   4213 static inline ULONG IVssBackupComponentsEx4_Release(IVssBackupComponentsEx4* This) {
   4214     return This->lpVtbl->Release(This);
   4215 }
   4216 /*** IVssBackupComponents methods ***/
   4217 static inline HRESULT IVssBackupComponentsEx4_GetWriterComponentsCount(IVssBackupComponentsEx4* This,UINT *pcComponents) {
   4218     return This->lpVtbl->GetWriterComponentsCount(This,pcComponents);
   4219 }
   4220 static inline HRESULT IVssBackupComponentsEx4_GetWriterComponents(IVssBackupComponentsEx4* This,UINT iWriter,IVssWriterComponentsExt **ppWriter) {
   4221     return This->lpVtbl->GetWriterComponents(This,iWriter,ppWriter);
   4222 }
   4223 static inline HRESULT IVssBackupComponentsEx4_InitializeForBackup(IVssBackupComponentsEx4* This,BSTR bstrXML) {
   4224     return This->lpVtbl->InitializeForBackup(This,bstrXML);
   4225 }
   4226 static 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 }
   4229 static inline HRESULT IVssBackupComponentsEx4_InitializeForRestore(IVssBackupComponentsEx4* This,BSTR bstrXML) {
   4230     return This->lpVtbl->InitializeForRestore(This,bstrXML);
   4231 }
   4232 static inline HRESULT IVssBackupComponentsEx4_SetRestoreState(IVssBackupComponentsEx4* This,VSS_RESTORE_TYPE restoreType) {
   4233     return This->lpVtbl->SetRestoreState(This,restoreType);
   4234 }
   4235 static inline HRESULT IVssBackupComponentsEx4_GatherWriterMetadata(IVssBackupComponentsEx4* This,IVssAsync **pAsync) {
   4236     return This->lpVtbl->GatherWriterMetadata(This,pAsync);
   4237 }
   4238 static inline HRESULT IVssBackupComponentsEx4_GetWriterMetadataCount(IVssBackupComponentsEx4* This,UINT *pcWriters) {
   4239     return This->lpVtbl->GetWriterMetadataCount(This,pcWriters);
   4240 }
   4241 static inline HRESULT IVssBackupComponentsEx4_GetWriterMetadata(IVssBackupComponentsEx4* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadata **ppMetadata) {
   4242     return This->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata);
   4243 }
   4244 static inline HRESULT IVssBackupComponentsEx4_FreeWriterMetadata(IVssBackupComponentsEx4* This) {
   4245     return This->lpVtbl->FreeWriterMetadata(This);
   4246 }
   4247 static 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 }
   4250 static inline HRESULT IVssBackupComponentsEx4_PrepareForBackup(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
   4251     return This->lpVtbl->PrepareForBackup(This,ppAsync);
   4252 }
   4253 static inline HRESULT IVssBackupComponentsEx4_AbortBackup(IVssBackupComponentsEx4* This) {
   4254     return This->lpVtbl->AbortBackup(This);
   4255 }
   4256 static inline HRESULT IVssBackupComponentsEx4_GatherWriterStatus(IVssBackupComponentsEx4* This,IVssAsync **pAsync) {
   4257     return This->lpVtbl->GatherWriterStatus(This,pAsync);
   4258 }
   4259 static inline HRESULT IVssBackupComponentsEx4_GetWriterStatusCount(IVssBackupComponentsEx4* This,UINT *pcWriters) {
   4260     return This->lpVtbl->GetWriterStatusCount(This,pcWriters);
   4261 }
   4262 static inline HRESULT IVssBackupComponentsEx4_FreeWriterStatus(IVssBackupComponentsEx4* This) {
   4263     return This->lpVtbl->FreeWriterStatus(This);
   4264 }
   4265 static 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 }
   4268 static 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 }
   4271 static 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 }
   4274 static 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 }
   4277 static 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 }
   4280 static 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 }
   4283 static 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 }
   4286 static inline HRESULT IVssBackupComponentsEx4_SaveAsXML(IVssBackupComponentsEx4* This,BSTR *pbstrXML) {
   4287     return This->lpVtbl->SaveAsXML(This,pbstrXML);
   4288 }
   4289 static inline HRESULT IVssBackupComponentsEx4_BackupComplete(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
   4290     return This->lpVtbl->BackupComplete(This,ppAsync);
   4291 }
   4292 static 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 }
   4295 static 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 }
   4298 static 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 }
   4301 static 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 }
   4304 static 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 }
   4307 static inline HRESULT IVssBackupComponentsEx4_PreRestore(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
   4308     return This->lpVtbl->PreRestore(This,ppAsync);
   4309 }
   4310 static inline HRESULT IVssBackupComponentsEx4_PostRestore(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
   4311     return This->lpVtbl->PostRestore(This,ppAsync);
   4312 }
   4313 static inline HRESULT IVssBackupComponentsEx4_SetContext(IVssBackupComponentsEx4* This,LONG lContext) {
   4314     return This->lpVtbl->SetContext(This,lContext);
   4315 }
   4316 static inline HRESULT IVssBackupComponentsEx4_StartSnapshotSet(IVssBackupComponentsEx4* This,VSS_ID *pSnapshotSetId) {
   4317     return This->lpVtbl->StartSnapshotSet(This,pSnapshotSetId);
   4318 }
   4319 static 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 }
   4322 static inline HRESULT IVssBackupComponentsEx4_DoSnapshotSet(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
   4323     return This->lpVtbl->DoSnapshotSet(This,ppAsync);
   4324 }
   4325 static 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 }
   4328 static inline HRESULT IVssBackupComponentsEx4_ImportSnapshots(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
   4329     return This->lpVtbl->ImportSnapshots(This,ppAsync);
   4330 }
   4331 static inline HRESULT IVssBackupComponentsEx4_BreakSnapshotSet(IVssBackupComponentsEx4* This,VSS_ID SnapshotSetId) {
   4332     return This->lpVtbl->BreakSnapshotSet(This,SnapshotSetId);
   4333 }
   4334 static inline HRESULT IVssBackupComponentsEx4_GetSnapshotProperties(IVssBackupComponentsEx4* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
   4335     return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
   4336 }
   4337 static 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 }
   4340 static inline HRESULT IVssBackupComponentsEx4_IsVolumeSupported(IVssBackupComponentsEx4* This,VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
   4341     return This->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider);
   4342 }
   4343 static inline HRESULT IVssBackupComponentsEx4_DisableWriterClasses(IVssBackupComponentsEx4* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
   4344     return This->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId);
   4345 }
   4346 static inline HRESULT IVssBackupComponentsEx4_EnableWriterClasses(IVssBackupComponentsEx4* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
   4347     return This->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId);
   4348 }
   4349 static inline HRESULT IVssBackupComponentsEx4_DisableWriterInstances(IVssBackupComponentsEx4* This,const VSS_ID *rgWriterInstanceId,UINT cInstanceId) {
   4350     return This->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId);
   4351 }
   4352 static 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 }
   4355 static inline HRESULT IVssBackupComponentsEx4_RevertToSnapshot(IVssBackupComponentsEx4* This,VSS_ID SnapshotId,WINBOOL bForceDismount) {
   4356     return This->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount);
   4357 }
   4358 static inline HRESULT IVssBackupComponentsEx4_QueryRevertStatus(IVssBackupComponentsEx4* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
   4359     return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
   4360 }
   4361 /*** IVssBackupComponentsEx methods ***/
   4362 static inline HRESULT IVssBackupComponentsEx4_GetWriterMetadataEx(IVssBackupComponentsEx4* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadataEx **ppMetadata) {
   4363     return This->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata);
   4364 }
   4365 static 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 ***/
   4369 static inline HRESULT IVssBackupComponentsEx4_UnexposeSnapshot(IVssBackupComponentsEx4* This,VSS_ID snapshotId) {
   4370     return This->lpVtbl->UnexposeSnapshot(This,snapshotId);
   4371 }
   4372 static 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 }
   4375 static 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 }
   4378 static 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 }
   4381 static inline HRESULT IVssBackupComponentsEx4_BreakSnapshotSetEx(IVssBackupComponentsEx4* This,VSS_ID SnapshotSetID,DWORD dwBreakFlags,IVssAsync **ppAsync) {
   4382     return This->lpVtbl->BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync);
   4383 }
   4384 static inline HRESULT IVssBackupComponentsEx4_PreFastRecovery(IVssBackupComponentsEx4* This,VSS_ID SnapshotSetID,DWORD dwPreFastRecoveryFlags,IVssAsync **ppAsync) {
   4385     return This->lpVtbl->PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync);
   4386 }
   4387 static 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 ***/
   4391 static 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 }
   4394 static inline HRESULT IVssBackupComponentsEx4_AddSnapshotToRecoverySet(IVssBackupComponentsEx4* This,VSS_ID snapshotId,DWORD dwFlags,VSS_PWSZ pwszDestinationVolume) {
   4395     return This->lpVtbl->AddSnapshotToRecoverySet(This,snapshotId,dwFlags,pwszDestinationVolume);
   4396 }
   4397 static inline HRESULT IVssBackupComponentsEx4_RecoverSet(IVssBackupComponentsEx4* This,DWORD dwFlags,IVssAsync **ppAsync) {
   4398     return This->lpVtbl->RecoverSet(This,dwFlags,ppAsync);
   4399 }
   4400 static inline HRESULT IVssBackupComponentsEx4_GetSessionId(IVssBackupComponentsEx4* This,VSS_ID *idSession) {
   4401     return This->lpVtbl->GetSessionId(This,idSession);
   4402 }
   4403 /*** IVssBackupComponentsEx4 methods ***/
   4404 static 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)
   4416 HRESULT STDAPICALLTYPE CreateVssBackupComponentsInternal(IVssBackupComponents **ppBackup);
   4417 HRESULT STDAPICALLTYPE CreateVssExamineWriterMetadataInternal(BSTR bstrXML, IVssExamineWriterMetadata **ppMetadata);
   4418 HRESULT APIENTRY IsVolumeSnapshottedInternal(VSS_PWSZ pwszVolumeName, WINBOOL *pbSnapshotsPresent, LONG *plSnapshotCapability);
   4419 void APIENTRY VssFreeSnapshotPropertiesInternal(VSS_SNAPSHOT_PROP *pProp);
   4420 HRESULT APIENTRY GetProviderMgmtInterfaceInternal(VSS_ID ProviderId, IID InterfaceId, IUnknown **ppItf);
   4421 HRESULT APIENTRY ShouldBlockRevertInternal(LPCWSTR wszVolumeName, boolean *pbBlock);
   4422 static __inline HRESULT CreateVssBackupComponents(IVssBackupComponents **ppBackup) { return CreateVssBackupComponentsInternal(ppBackup); }
   4423 static __inline HRESULT CreateVssExamineWriterMetadata(BSTR bstrXML, IVssExamineWriterMetadata **ppMetadata) { return CreateVssExamineWriterMetadataInternal(bstrXML, ppMetadata); }
   4424 static __inline HRESULT IsVolumeSnapshotted(VSS_PWSZ pwszVolumeName, WINBOOL *pbSnapshotsPresent, LONG *plSnapshotCapability) { return IsVolumeSnapshottedInternal(pwszVolumeName, pbSnapshotsPresent, plSnapshotCapability); }
   4425 static __inline void VssFreeSnapshotProperties(VSS_SNAPSHOT_PROP *pProp) { return VssFreeSnapshotPropertiesInternal(pProp); }
   4426 static __inline HRESULT GetProviderMgmtInterface(VSS_ID ProviderId, IID InterfaceId, IUnknown **ppItf) { return GetProviderMgmtInterfaceInternal(ProviderId, InterfaceId, ppItf); }
   4427 static __inline HRESULT ShouldBlockRevert(LPCWSTR wszVolumeName, boolean *pbBlock) { return ShouldBlockRevertInternal(wszVolumeName, pbBlock); }
   4428 #endif /* WINAPI_PARTITION_DESKTOP */
   4429 /* Begin additional prototypes for all interfaces */
   4430 
   4431 ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
   4432 unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
   4433 unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
   4434 void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
   4435 
   4436 /* End additional prototypes */
   4437 
   4438 #ifdef __cplusplus
   4439 }
   4440 #endif
   4441 
   4442 #endif /* __vsbackup_h__ */