master
   1/*** Autogenerated by WIDL 10.4 from include/vswriter.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 __vswriter_h__
  17#define __vswriter_h__
  18
  19/* Forward declarations */
  20
  21#ifndef __IVssWMFiledesc_FWD_DEFINED__
  22#define __IVssWMFiledesc_FWD_DEFINED__
  23typedef interface IVssWMFiledesc IVssWMFiledesc;
  24#ifdef __cplusplus
  25interface IVssWMFiledesc;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IVssWMDependency_FWD_DEFINED__
  30#define __IVssWMDependency_FWD_DEFINED__
  31typedef interface IVssWMDependency IVssWMDependency;
  32#ifdef __cplusplus
  33interface IVssWMDependency;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IVssComponent_FWD_DEFINED__
  38#define __IVssComponent_FWD_DEFINED__
  39typedef interface IVssComponent IVssComponent;
  40#ifdef __cplusplus
  41interface IVssComponent;
  42#endif /* __cplusplus */
  43#endif
  44
  45#ifndef __IVssWriterComponents_FWD_DEFINED__
  46#define __IVssWriterComponents_FWD_DEFINED__
  47typedef interface IVssWriterComponents IVssWriterComponents;
  48#ifdef __cplusplus
  49interface IVssWriterComponents;
  50#endif /* __cplusplus */
  51#endif
  52
  53#ifndef __IVssComponentEx_FWD_DEFINED__
  54#define __IVssComponentEx_FWD_DEFINED__
  55typedef interface IVssComponentEx IVssComponentEx;
  56#ifdef __cplusplus
  57interface IVssComponentEx;
  58#endif /* __cplusplus */
  59#endif
  60
  61#ifndef __IVssComponentEx2_FWD_DEFINED__
  62#define __IVssComponentEx2_FWD_DEFINED__
  63typedef interface IVssComponentEx2 IVssComponentEx2;
  64#ifdef __cplusplus
  65interface IVssComponentEx2;
  66#endif /* __cplusplus */
  67#endif
  68
  69#ifndef __IVssCreateWriterMetadata_FWD_DEFINED__
  70#define __IVssCreateWriterMetadata_FWD_DEFINED__
  71typedef interface IVssCreateWriterMetadata IVssCreateWriterMetadata;
  72#ifdef __cplusplus
  73interface IVssCreateWriterMetadata;
  74#endif /* __cplusplus */
  75#endif
  76
  77#ifndef __IVssCreateWriterMetadataEx_FWD_DEFINED__
  78#define __IVssCreateWriterMetadataEx_FWD_DEFINED__
  79typedef interface IVssCreateWriterMetadataEx IVssCreateWriterMetadataEx;
  80#ifdef __cplusplus
  81interface IVssCreateWriterMetadataEx;
  82#endif /* __cplusplus */
  83#endif
  84
  85#ifndef __IVssWriterImpl_FWD_DEFINED__
  86#define __IVssWriterImpl_FWD_DEFINED__
  87typedef interface IVssWriterImpl IVssWriterImpl;
  88#ifdef __cplusplus
  89interface IVssWriterImpl;
  90#endif /* __cplusplus */
  91#endif
  92
  93#ifndef __IVssCreateExpressWriterMetadata_FWD_DEFINED__
  94#define __IVssCreateExpressWriterMetadata_FWD_DEFINED__
  95typedef interface IVssCreateExpressWriterMetadata IVssCreateExpressWriterMetadata;
  96#ifdef __cplusplus
  97interface IVssCreateExpressWriterMetadata;
  98#endif /* __cplusplus */
  99#endif
 100
 101#ifndef __IVssExpressWriter_FWD_DEFINED__
 102#define __IVssExpressWriter_FWD_DEFINED__
 103typedef interface IVssExpressWriter IVssExpressWriter;
 104#ifdef __cplusplus
 105interface IVssExpressWriter;
 106#endif /* __cplusplus */
 107#endif
 108
 109/* Headers for imported files */
 110
 111#include <oaidl.h>
 112#include <ocidl.h>
 113#include <vss.h>
 114
 115#ifdef __cplusplus
 116extern "C" {
 117#endif
 118
 119#include <winapifamily.h>
 120#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 121#include "vsserror.h" 
 122typedef enum VSS_USAGE_TYPE {
 123    VSS_UT_UNDEFINED = 0,
 124    VSS_UT_BOOTABLESYSTEMSTATE = 1,
 125    VSS_UT_SYSTEMSERVICE = 2,
 126    VSS_UT_USERDATA = 3,
 127    VSS_UT_OTHER = 4
 128} VSS_USAGE_TYPE;
 129typedef enum VSS_SOURCE_TYPE {
 130    VSS_ST_UNDEFINED = 0,
 131    VSS_ST_TRANSACTEDDB = 1,
 132    VSS_ST_NONTRANSACTEDDB = 2,
 133    VSS_ST_OTHER = 3
 134} VSS_SOURCE_TYPE;
 135typedef enum VSS_RESTOREMETHOD_ENUM {
 136    VSS_RME_UNDEFINED = 0,
 137    VSS_RME_RESTORE_IF_NOT_THERE = 1,
 138    VSS_RME_RESTORE_IF_CAN_REPLACE = 2,
 139    VSS_RME_STOP_RESTORE_START = 3,
 140    VSS_RME_RESTORE_TO_ALTERNATE_LOCATION = 4,
 141    VSS_RME_RESTORE_AT_REBOOT = 5,
 142    VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE = 6,
 143    VSS_RME_CUSTOM = 7,
 144    VSS_RME_RESTORE_STOP_START = 8
 145} VSS_RESTOREMETHOD_ENUM;
 146typedef enum VSS_WRITERRESTORE_ENUM {
 147    VSS_WRE_UNDEFINED = 0,
 148    VSS_WRE_NEVER = 1,
 149    VSS_WRE_IF_REPLACE_FAILS = 2,
 150    VSS_WRE_ALWAYS = 3
 151} VSS_WRITERRESTORE_ENUM;
 152typedef enum VSS_COMPONENT_TYPE {
 153    VSS_CT_UNDEFINED = 0,
 154    VSS_CT_DATABASE = 1,
 155    VSS_CT_FILEGROUP = 2
 156} VSS_COMPONENT_TYPE;
 157typedef enum VSS_ALTERNATE_WRITER_STATE {
 158    VSS_AWS_UNDEFINED = 0,
 159    VSS_AWS_NO_ALTERNATE_WRITER = 1,
 160    VSS_AWS_ALTERNATE_WRITER_EXISTS = 2,
 161    VSS_AWS_THIS_IS_ALTERNATE_WRITER = 3
 162} VSS_ALTERNATE_WRITER_STATE;
 163typedef enum VSS_SUBSCRIBE_MASK {
 164    VSS_SM_POST_SNAPSHOT_FLAG = 0x1,
 165    VSS_SM_BACKUP_EVENTS_FLAG = 0x2,
 166    VSS_SM_RESTORE_EVENTS_FLAG = 0x4,
 167    VSS_SM_IO_THROTTLING_FLAG = 0x8,
 168    VSS_SM_ALL_FLAGS = 0xffffffff
 169} VSS_SUBSCRIBE_MASK;
 170typedef enum VSS_RESTORE_TARGET {
 171    VSS_RT_UNDEFINED = 0,
 172    VSS_RT_ORIGINAL = 1,
 173    VSS_RT_ALTERNATE = 2,
 174    VSS_RT_DIRECTED = 3,
 175    VSS_RT_ORIGINAL_LOCATION = 4
 176} VSS_RESTORE_TARGET;
 177typedef enum VSS_FILE_RESTORE_STATUS {
 178    VSS_RS_UNDEFINED = 0,
 179    VSS_RS_NONE = 1,
 180    VSS_RS_ALL = 2,
 181    VSS_RS_FAILED = 3
 182} VSS_FILE_RESTORE_STATUS;
 183typedef enum VSS_COMPONENT_FLAGS {
 184    VSS_CF_BACKUP_RECOVERY = 0x1,
 185    VSS_CF_APP_ROLLBACK_RECOVERY = 0x2,
 186    VSS_CF_NOT_SYSTEM_STATE = 0x4
 187} VSS_COMPONENT_FLAGS;
 188#ifndef __IVssExamineWriterMetadata_FWD_DEFINED__
 189#define __IVssExamineWriterMetadata_FWD_DEFINED__
 190typedef interface IVssExamineWriterMetadata IVssExamineWriterMetadata;
 191#ifdef __cplusplus
 192interface IVssExamineWriterMetadata;
 193#endif /* __cplusplus */
 194#endif
 195
 196/*****************************************************************************
 197 * IVssWMFiledesc interface
 198 */
 199#ifndef __IVssWMFiledesc_INTERFACE_DEFINED__
 200#define __IVssWMFiledesc_INTERFACE_DEFINED__
 201
 202DEFINE_GUID(IID_IVssWMFiledesc, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
 203#if defined(__cplusplus) && !defined(CINTERFACE)
 204MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
 205IVssWMFiledesc : public IUnknown
 206{
 207    virtual HRESULT STDMETHODCALLTYPE GetPath(
 208        BSTR *pbstrPath) = 0;
 209
 210    virtual HRESULT STDMETHODCALLTYPE GetFilespec(
 211        BSTR *pbstrFilespec) = 0;
 212
 213    virtual HRESULT STDMETHODCALLTYPE GetRecursive(
 214        boolean *pbRecursive) = 0;
 215
 216    virtual HRESULT STDMETHODCALLTYPE GetAlternateLocation(
 217        BSTR *pbstrAlternateLocation) = 0;
 218
 219    virtual HRESULT STDMETHODCALLTYPE GetBackupTypeMask(
 220        DWORD *pdwTypeMask) = 0;
 221
 222};
 223#ifdef __CRT_UUID_DECL
 224__CRT_UUID_DECL(IVssWMFiledesc, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00)
 225#endif
 226#else
 227typedef struct IVssWMFiledescVtbl {
 228    BEGIN_INTERFACE
 229
 230    /*** IUnknown methods ***/
 231    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 232        IVssWMFiledesc *This,
 233        REFIID riid,
 234        void **ppvObject);
 235
 236    ULONG (STDMETHODCALLTYPE *AddRef)(
 237        IVssWMFiledesc *This);
 238
 239    ULONG (STDMETHODCALLTYPE *Release)(
 240        IVssWMFiledesc *This);
 241
 242    /*** IVssWMFiledesc methods ***/
 243    HRESULT (STDMETHODCALLTYPE *GetPath)(
 244        IVssWMFiledesc *This,
 245        BSTR *pbstrPath);
 246
 247    HRESULT (STDMETHODCALLTYPE *GetFilespec)(
 248        IVssWMFiledesc *This,
 249        BSTR *pbstrFilespec);
 250
 251    HRESULT (STDMETHODCALLTYPE *GetRecursive)(
 252        IVssWMFiledesc *This,
 253        boolean *pbRecursive);
 254
 255    HRESULT (STDMETHODCALLTYPE *GetAlternateLocation)(
 256        IVssWMFiledesc *This,
 257        BSTR *pbstrAlternateLocation);
 258
 259    HRESULT (STDMETHODCALLTYPE *GetBackupTypeMask)(
 260        IVssWMFiledesc *This,
 261        DWORD *pdwTypeMask);
 262
 263    END_INTERFACE
 264} IVssWMFiledescVtbl;
 265
 266interface IVssWMFiledesc {
 267    CONST_VTBL IVssWMFiledescVtbl* lpVtbl;
 268};
 269
 270#ifdef COBJMACROS
 271#ifndef WIDL_C_INLINE_WRAPPERS
 272/*** IUnknown methods ***/
 273#define IVssWMFiledesc_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 274#define IVssWMFiledesc_AddRef(This) (This)->lpVtbl->AddRef(This)
 275#define IVssWMFiledesc_Release(This) (This)->lpVtbl->Release(This)
 276/*** IVssWMFiledesc methods ***/
 277#define IVssWMFiledesc_GetPath(This,pbstrPath) (This)->lpVtbl->GetPath(This,pbstrPath)
 278#define IVssWMFiledesc_GetFilespec(This,pbstrFilespec) (This)->lpVtbl->GetFilespec(This,pbstrFilespec)
 279#define IVssWMFiledesc_GetRecursive(This,pbRecursive) (This)->lpVtbl->GetRecursive(This,pbRecursive)
 280#define IVssWMFiledesc_GetAlternateLocation(This,pbstrAlternateLocation) (This)->lpVtbl->GetAlternateLocation(This,pbstrAlternateLocation)
 281#define IVssWMFiledesc_GetBackupTypeMask(This,pdwTypeMask) (This)->lpVtbl->GetBackupTypeMask(This,pdwTypeMask)
 282#else
 283/*** IUnknown methods ***/
 284static inline HRESULT IVssWMFiledesc_QueryInterface(IVssWMFiledesc* This,REFIID riid,void **ppvObject) {
 285    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 286}
 287static inline ULONG IVssWMFiledesc_AddRef(IVssWMFiledesc* This) {
 288    return This->lpVtbl->AddRef(This);
 289}
 290static inline ULONG IVssWMFiledesc_Release(IVssWMFiledesc* This) {
 291    return This->lpVtbl->Release(This);
 292}
 293/*** IVssWMFiledesc methods ***/
 294static inline HRESULT IVssWMFiledesc_GetPath(IVssWMFiledesc* This,BSTR *pbstrPath) {
 295    return This->lpVtbl->GetPath(This,pbstrPath);
 296}
 297static inline HRESULT IVssWMFiledesc_GetFilespec(IVssWMFiledesc* This,BSTR *pbstrFilespec) {
 298    return This->lpVtbl->GetFilespec(This,pbstrFilespec);
 299}
 300static inline HRESULT IVssWMFiledesc_GetRecursive(IVssWMFiledesc* This,boolean *pbRecursive) {
 301    return This->lpVtbl->GetRecursive(This,pbRecursive);
 302}
 303static inline HRESULT IVssWMFiledesc_GetAlternateLocation(IVssWMFiledesc* This,BSTR *pbstrAlternateLocation) {
 304    return This->lpVtbl->GetAlternateLocation(This,pbstrAlternateLocation);
 305}
 306static inline HRESULT IVssWMFiledesc_GetBackupTypeMask(IVssWMFiledesc* This,DWORD *pdwTypeMask) {
 307    return This->lpVtbl->GetBackupTypeMask(This,pdwTypeMask);
 308}
 309#endif
 310#endif
 311
 312#endif
 313
 314
 315#endif  /* __IVssWMFiledesc_INTERFACE_DEFINED__ */
 316
 317/*****************************************************************************
 318 * IVssWMDependency interface
 319 */
 320#ifndef __IVssWMDependency_INTERFACE_DEFINED__
 321#define __IVssWMDependency_INTERFACE_DEFINED__
 322
 323DEFINE_GUID(IID_IVssWMDependency, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
 324#if defined(__cplusplus) && !defined(CINTERFACE)
 325MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
 326IVssWMDependency : public IUnknown
 327{
 328    virtual HRESULT STDMETHODCALLTYPE GetWriterId(
 329        VSS_ID *pWriterId) = 0;
 330
 331    virtual HRESULT STDMETHODCALLTYPE GetLogicalPath(
 332        BSTR *pbstrLogicalPath) = 0;
 333
 334    virtual HRESULT STDMETHODCALLTYPE GetComponentName(
 335        BSTR *pbstrComponentName) = 0;
 336
 337};
 338#ifdef __CRT_UUID_DECL
 339__CRT_UUID_DECL(IVssWMDependency, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00)
 340#endif
 341#else
 342typedef struct IVssWMDependencyVtbl {
 343    BEGIN_INTERFACE
 344
 345    /*** IUnknown methods ***/
 346    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 347        IVssWMDependency *This,
 348        REFIID riid,
 349        void **ppvObject);
 350
 351    ULONG (STDMETHODCALLTYPE *AddRef)(
 352        IVssWMDependency *This);
 353
 354    ULONG (STDMETHODCALLTYPE *Release)(
 355        IVssWMDependency *This);
 356
 357    /*** IVssWMDependency methods ***/
 358    HRESULT (STDMETHODCALLTYPE *GetWriterId)(
 359        IVssWMDependency *This,
 360        VSS_ID *pWriterId);
 361
 362    HRESULT (STDMETHODCALLTYPE *GetLogicalPath)(
 363        IVssWMDependency *This,
 364        BSTR *pbstrLogicalPath);
 365
 366    HRESULT (STDMETHODCALLTYPE *GetComponentName)(
 367        IVssWMDependency *This,
 368        BSTR *pbstrComponentName);
 369
 370    END_INTERFACE
 371} IVssWMDependencyVtbl;
 372
 373interface IVssWMDependency {
 374    CONST_VTBL IVssWMDependencyVtbl* lpVtbl;
 375};
 376
 377#ifdef COBJMACROS
 378#ifndef WIDL_C_INLINE_WRAPPERS
 379/*** IUnknown methods ***/
 380#define IVssWMDependency_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 381#define IVssWMDependency_AddRef(This) (This)->lpVtbl->AddRef(This)
 382#define IVssWMDependency_Release(This) (This)->lpVtbl->Release(This)
 383/*** IVssWMDependency methods ***/
 384#define IVssWMDependency_GetWriterId(This,pWriterId) (This)->lpVtbl->GetWriterId(This,pWriterId)
 385#define IVssWMDependency_GetLogicalPath(This,pbstrLogicalPath) (This)->lpVtbl->GetLogicalPath(This,pbstrLogicalPath)
 386#define IVssWMDependency_GetComponentName(This,pbstrComponentName) (This)->lpVtbl->GetComponentName(This,pbstrComponentName)
 387#else
 388/*** IUnknown methods ***/
 389static inline HRESULT IVssWMDependency_QueryInterface(IVssWMDependency* This,REFIID riid,void **ppvObject) {
 390    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 391}
 392static inline ULONG IVssWMDependency_AddRef(IVssWMDependency* This) {
 393    return This->lpVtbl->AddRef(This);
 394}
 395static inline ULONG IVssWMDependency_Release(IVssWMDependency* This) {
 396    return This->lpVtbl->Release(This);
 397}
 398/*** IVssWMDependency methods ***/
 399static inline HRESULT IVssWMDependency_GetWriterId(IVssWMDependency* This,VSS_ID *pWriterId) {
 400    return This->lpVtbl->GetWriterId(This,pWriterId);
 401}
 402static inline HRESULT IVssWMDependency_GetLogicalPath(IVssWMDependency* This,BSTR *pbstrLogicalPath) {
 403    return This->lpVtbl->GetLogicalPath(This,pbstrLogicalPath);
 404}
 405static inline HRESULT IVssWMDependency_GetComponentName(IVssWMDependency* This,BSTR *pbstrComponentName) {
 406    return This->lpVtbl->GetComponentName(This,pbstrComponentName);
 407}
 408#endif
 409#endif
 410
 411#endif
 412
 413
 414#endif  /* __IVssWMDependency_INTERFACE_DEFINED__ */
 415
 416/*****************************************************************************
 417 * IVssComponent interface
 418 */
 419#ifndef __IVssComponent_INTERFACE_DEFINED__
 420#define __IVssComponent_INTERFACE_DEFINED__
 421
 422DEFINE_GUID(IID_IVssComponent, 0xd2c72c96, 0xc121, 0x4518, 0xb6,0x27, 0xe5,0xa9,0x3d,0x01,0x0e,0xad);
 423#if defined(__cplusplus) && !defined(CINTERFACE)
 424MIDL_INTERFACE("d2c72c96-c121-4518-b627-e5a93d010ead")
 425IVssComponent : public IUnknown
 426{
 427    virtual HRESULT STDMETHODCALLTYPE GetLogicalPath(
 428        BSTR *pbstrPath) = 0;
 429
 430    virtual HRESULT STDMETHODCALLTYPE GetComponentType(
 431        VSS_COMPONENT_TYPE *pct) = 0;
 432
 433    virtual HRESULT STDMETHODCALLTYPE GetComponentName(
 434        BSTR *pbstrName) = 0;
 435
 436    virtual HRESULT STDMETHODCALLTYPE GetBackupSucceeded(
 437        boolean *pbSucceeded) = 0;
 438
 439    virtual HRESULT STDMETHODCALLTYPE GetAlternateLocationMappingCount(
 440        UINT *pcMappings) = 0;
 441
 442    virtual HRESULT STDMETHODCALLTYPE GetAlternateLocationMapping(
 443        UINT iMapping,
 444        IVssWMFiledesc **ppFiledesc) = 0;
 445
 446    virtual HRESULT STDMETHODCALLTYPE SetBackupMetadata(
 447        LPCWSTR wszData) = 0;
 448
 449    virtual HRESULT STDMETHODCALLTYPE GetBackupMetadata(
 450        BSTR *pbstrData) = 0;
 451
 452    virtual HRESULT STDMETHODCALLTYPE AddPartialFile(
 453        LPCWSTR wszPath,
 454        LPCWSTR wszFilename,
 455        LPCWSTR wszRanges,
 456        LPCWSTR wszMetadata) = 0;
 457
 458    virtual HRESULT STDMETHODCALLTYPE GetPartialFileCount(
 459        UINT *pcPartialFiles) = 0;
 460
 461    virtual HRESULT STDMETHODCALLTYPE GetPartialFile(
 462        UINT iPartialFile,
 463        BSTR *pbstrPath,
 464        BSTR *pbstrFilename,
 465        BSTR *pbstrRange,
 466        BSTR *pbstrMetadata) = 0;
 467
 468    virtual HRESULT STDMETHODCALLTYPE IsSelectedForRestore(
 469        boolean *pbSelectedForRestore) = 0;
 470
 471    virtual HRESULT STDMETHODCALLTYPE GetAdditionalRestores(
 472        boolean *pbAdditionalRestores) = 0;
 473
 474    virtual HRESULT STDMETHODCALLTYPE GetNewTargetCount(
 475        UINT *pcNewTarget) = 0;
 476
 477    virtual HRESULT STDMETHODCALLTYPE GetNewTarget(
 478        UINT iNewTarget,
 479        IVssWMFiledesc **ppFiledesc) = 0;
 480
 481    virtual HRESULT STDMETHODCALLTYPE AddDirectedTarget(
 482        LPCWSTR wszSourcePath,
 483        LPCWSTR wszSourceFilename,
 484        LPCWSTR wszSourceRangeList,
 485        LPCWSTR wszDestinationPath,
 486        LPCWSTR wszDestinationFilename,
 487        LPCWSTR wszDestinationRangeList) = 0;
 488
 489    virtual HRESULT STDMETHODCALLTYPE GetDirectedTargetCount(
 490        UINT *pcDirectedTarget) = 0;
 491
 492    virtual HRESULT STDMETHODCALLTYPE GetDirectedTarget(
 493        UINT iDirectedTarget,
 494        BSTR *pbstrSourcePath,
 495        BSTR *pbstrSourceFileName,
 496        BSTR *pbstrSourceRangeList,
 497        BSTR *pbstrDestinationPath,
 498        BSTR *pbstrDestinationFilename,
 499        BSTR *pbstrDestinationRangeList) = 0;
 500
 501    virtual HRESULT STDMETHODCALLTYPE SetRestoreMetadata(
 502        LPCWSTR wszRestoreMetadata) = 0;
 503
 504    virtual HRESULT STDMETHODCALLTYPE GetRestoreMetadata(
 505        BSTR *pbstrRestoreMetadata) = 0;
 506
 507    virtual HRESULT STDMETHODCALLTYPE SetRestoreTarget(
 508        VSS_RESTORE_TARGET target) = 0;
 509
 510    virtual HRESULT STDMETHODCALLTYPE GetRestoreTarget(
 511        VSS_RESTORE_TARGET *pTarget) = 0;
 512
 513    virtual HRESULT STDMETHODCALLTYPE SetPreRestoreFailureMsg(
 514        LPCWSTR wszPreRestoreFailureMsg) = 0;
 515
 516    virtual HRESULT STDMETHODCALLTYPE GetPreRestoreFailureMsg(
 517        BSTR *pbstrPreRestoreFailureMsg) = 0;
 518
 519    virtual HRESULT STDMETHODCALLTYPE SetPostRestoreFailureMsg(
 520        LPCWSTR wszPostRestoreFailureMsg) = 0;
 521
 522    virtual HRESULT STDMETHODCALLTYPE GetPostRestoreFailureMsg(
 523        BSTR *pbstrPostRestoreFailureMsg) = 0;
 524
 525    virtual HRESULT STDMETHODCALLTYPE SetBackupStamp(
 526        LPCWSTR wszBackupStamp) = 0;
 527
 528    virtual HRESULT STDMETHODCALLTYPE GetBackupStamp(
 529        BSTR *pbstrBackupStamp) = 0;
 530
 531    virtual HRESULT STDMETHODCALLTYPE GetPreviousBackupStamp(
 532        BSTR *pbstrBackupStamp) = 0;
 533
 534    virtual HRESULT STDMETHODCALLTYPE GetBackupOptions(
 535        BSTR *pbstrBackupOptions) = 0;
 536
 537    virtual HRESULT STDMETHODCALLTYPE GetRestoreOptions(
 538        BSTR *pbstrRestoreOptions) = 0;
 539
 540    virtual HRESULT STDMETHODCALLTYPE GetRestoreSubcomponentCount(
 541        UINT *pcRestoreSubcomponent) = 0;
 542
 543    virtual HRESULT STDMETHODCALLTYPE GetRestoreSubcomponent(
 544        UINT iComponent,
 545        BSTR *pbstrLogicalPath,
 546        BSTR *pbstrComponentName,
 547        boolean *pbRepair) = 0;
 548
 549    virtual HRESULT STDMETHODCALLTYPE GetFileRestoreStatus(
 550        VSS_FILE_RESTORE_STATUS *pStatus) = 0;
 551
 552    virtual HRESULT STDMETHODCALLTYPE AddDifferencedFilesByLastModifyTime(
 553        LPCWSTR wszPath,
 554        LPCWSTR wszFilespec,
 555        WINBOOL bRecursive,
 556        FILETIME ftLastModifyTime) = 0;
 557
 558    virtual HRESULT STDMETHODCALLTYPE AddDifferencedFilesByLastModifyLSN(
 559        LPCWSTR wszPath,
 560        LPCWSTR wszFilespec,
 561        WINBOOL bRecursive,
 562        BSTR bstrLsnString) = 0;
 563
 564    virtual HRESULT STDMETHODCALLTYPE GetDifferencedFilesCount(
 565        UINT *pcDifferencedFiles) = 0;
 566
 567    virtual HRESULT STDMETHODCALLTYPE GetDifferencedFile(
 568        UINT iDifferencedFile,
 569        BSTR *pbstrPath,
 570        BSTR *pbstrFilespec,
 571        WINBOOL *pbRecursive,
 572        BSTR *pbstrLsnString,
 573        FILETIME *pftLastModifyTime) = 0;
 574
 575};
 576#ifdef __CRT_UUID_DECL
 577__CRT_UUID_DECL(IVssComponent, 0xd2c72c96, 0xc121, 0x4518, 0xb6,0x27, 0xe5,0xa9,0x3d,0x01,0x0e,0xad)
 578#endif
 579#else
 580typedef struct IVssComponentVtbl {
 581    BEGIN_INTERFACE
 582
 583    /*** IUnknown methods ***/
 584    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 585        IVssComponent *This,
 586        REFIID riid,
 587        void **ppvObject);
 588
 589    ULONG (STDMETHODCALLTYPE *AddRef)(
 590        IVssComponent *This);
 591
 592    ULONG (STDMETHODCALLTYPE *Release)(
 593        IVssComponent *This);
 594
 595    /*** IVssComponent methods ***/
 596    HRESULT (STDMETHODCALLTYPE *GetLogicalPath)(
 597        IVssComponent *This,
 598        BSTR *pbstrPath);
 599
 600    HRESULT (STDMETHODCALLTYPE *GetComponentType)(
 601        IVssComponent *This,
 602        VSS_COMPONENT_TYPE *pct);
 603
 604    HRESULT (STDMETHODCALLTYPE *GetComponentName)(
 605        IVssComponent *This,
 606        BSTR *pbstrName);
 607
 608    HRESULT (STDMETHODCALLTYPE *GetBackupSucceeded)(
 609        IVssComponent *This,
 610        boolean *pbSucceeded);
 611
 612    HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMappingCount)(
 613        IVssComponent *This,
 614        UINT *pcMappings);
 615
 616    HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMapping)(
 617        IVssComponent *This,
 618        UINT iMapping,
 619        IVssWMFiledesc **ppFiledesc);
 620
 621    HRESULT (STDMETHODCALLTYPE *SetBackupMetadata)(
 622        IVssComponent *This,
 623        LPCWSTR wszData);
 624
 625    HRESULT (STDMETHODCALLTYPE *GetBackupMetadata)(
 626        IVssComponent *This,
 627        BSTR *pbstrData);
 628
 629    HRESULT (STDMETHODCALLTYPE *AddPartialFile)(
 630        IVssComponent *This,
 631        LPCWSTR wszPath,
 632        LPCWSTR wszFilename,
 633        LPCWSTR wszRanges,
 634        LPCWSTR wszMetadata);
 635
 636    HRESULT (STDMETHODCALLTYPE *GetPartialFileCount)(
 637        IVssComponent *This,
 638        UINT *pcPartialFiles);
 639
 640    HRESULT (STDMETHODCALLTYPE *GetPartialFile)(
 641        IVssComponent *This,
 642        UINT iPartialFile,
 643        BSTR *pbstrPath,
 644        BSTR *pbstrFilename,
 645        BSTR *pbstrRange,
 646        BSTR *pbstrMetadata);
 647
 648    HRESULT (STDMETHODCALLTYPE *IsSelectedForRestore)(
 649        IVssComponent *This,
 650        boolean *pbSelectedForRestore);
 651
 652    HRESULT (STDMETHODCALLTYPE *GetAdditionalRestores)(
 653        IVssComponent *This,
 654        boolean *pbAdditionalRestores);
 655
 656    HRESULT (STDMETHODCALLTYPE *GetNewTargetCount)(
 657        IVssComponent *This,
 658        UINT *pcNewTarget);
 659
 660    HRESULT (STDMETHODCALLTYPE *GetNewTarget)(
 661        IVssComponent *This,
 662        UINT iNewTarget,
 663        IVssWMFiledesc **ppFiledesc);
 664
 665    HRESULT (STDMETHODCALLTYPE *AddDirectedTarget)(
 666        IVssComponent *This,
 667        LPCWSTR wszSourcePath,
 668        LPCWSTR wszSourceFilename,
 669        LPCWSTR wszSourceRangeList,
 670        LPCWSTR wszDestinationPath,
 671        LPCWSTR wszDestinationFilename,
 672        LPCWSTR wszDestinationRangeList);
 673
 674    HRESULT (STDMETHODCALLTYPE *GetDirectedTargetCount)(
 675        IVssComponent *This,
 676        UINT *pcDirectedTarget);
 677
 678    HRESULT (STDMETHODCALLTYPE *GetDirectedTarget)(
 679        IVssComponent *This,
 680        UINT iDirectedTarget,
 681        BSTR *pbstrSourcePath,
 682        BSTR *pbstrSourceFileName,
 683        BSTR *pbstrSourceRangeList,
 684        BSTR *pbstrDestinationPath,
 685        BSTR *pbstrDestinationFilename,
 686        BSTR *pbstrDestinationRangeList);
 687
 688    HRESULT (STDMETHODCALLTYPE *SetRestoreMetadata)(
 689        IVssComponent *This,
 690        LPCWSTR wszRestoreMetadata);
 691
 692    HRESULT (STDMETHODCALLTYPE *GetRestoreMetadata)(
 693        IVssComponent *This,
 694        BSTR *pbstrRestoreMetadata);
 695
 696    HRESULT (STDMETHODCALLTYPE *SetRestoreTarget)(
 697        IVssComponent *This,
 698        VSS_RESTORE_TARGET target);
 699
 700    HRESULT (STDMETHODCALLTYPE *GetRestoreTarget)(
 701        IVssComponent *This,
 702        VSS_RESTORE_TARGET *pTarget);
 703
 704    HRESULT (STDMETHODCALLTYPE *SetPreRestoreFailureMsg)(
 705        IVssComponent *This,
 706        LPCWSTR wszPreRestoreFailureMsg);
 707
 708    HRESULT (STDMETHODCALLTYPE *GetPreRestoreFailureMsg)(
 709        IVssComponent *This,
 710        BSTR *pbstrPreRestoreFailureMsg);
 711
 712    HRESULT (STDMETHODCALLTYPE *SetPostRestoreFailureMsg)(
 713        IVssComponent *This,
 714        LPCWSTR wszPostRestoreFailureMsg);
 715
 716    HRESULT (STDMETHODCALLTYPE *GetPostRestoreFailureMsg)(
 717        IVssComponent *This,
 718        BSTR *pbstrPostRestoreFailureMsg);
 719
 720    HRESULT (STDMETHODCALLTYPE *SetBackupStamp)(
 721        IVssComponent *This,
 722        LPCWSTR wszBackupStamp);
 723
 724    HRESULT (STDMETHODCALLTYPE *GetBackupStamp)(
 725        IVssComponent *This,
 726        BSTR *pbstrBackupStamp);
 727
 728    HRESULT (STDMETHODCALLTYPE *GetPreviousBackupStamp)(
 729        IVssComponent *This,
 730        BSTR *pbstrBackupStamp);
 731
 732    HRESULT (STDMETHODCALLTYPE *GetBackupOptions)(
 733        IVssComponent *This,
 734        BSTR *pbstrBackupOptions);
 735
 736    HRESULT (STDMETHODCALLTYPE *GetRestoreOptions)(
 737        IVssComponent *This,
 738        BSTR *pbstrRestoreOptions);
 739
 740    HRESULT (STDMETHODCALLTYPE *GetRestoreSubcomponentCount)(
 741        IVssComponent *This,
 742        UINT *pcRestoreSubcomponent);
 743
 744    HRESULT (STDMETHODCALLTYPE *GetRestoreSubcomponent)(
 745        IVssComponent *This,
 746        UINT iComponent,
 747        BSTR *pbstrLogicalPath,
 748        BSTR *pbstrComponentName,
 749        boolean *pbRepair);
 750
 751    HRESULT (STDMETHODCALLTYPE *GetFileRestoreStatus)(
 752        IVssComponent *This,
 753        VSS_FILE_RESTORE_STATUS *pStatus);
 754
 755    HRESULT (STDMETHODCALLTYPE *AddDifferencedFilesByLastModifyTime)(
 756        IVssComponent *This,
 757        LPCWSTR wszPath,
 758        LPCWSTR wszFilespec,
 759        WINBOOL bRecursive,
 760        FILETIME ftLastModifyTime);
 761
 762    HRESULT (STDMETHODCALLTYPE *AddDifferencedFilesByLastModifyLSN)(
 763        IVssComponent *This,
 764        LPCWSTR wszPath,
 765        LPCWSTR wszFilespec,
 766        WINBOOL bRecursive,
 767        BSTR bstrLsnString);
 768
 769    HRESULT (STDMETHODCALLTYPE *GetDifferencedFilesCount)(
 770        IVssComponent *This,
 771        UINT *pcDifferencedFiles);
 772
 773    HRESULT (STDMETHODCALLTYPE *GetDifferencedFile)(
 774        IVssComponent *This,
 775        UINT iDifferencedFile,
 776        BSTR *pbstrPath,
 777        BSTR *pbstrFilespec,
 778        WINBOOL *pbRecursive,
 779        BSTR *pbstrLsnString,
 780        FILETIME *pftLastModifyTime);
 781
 782    END_INTERFACE
 783} IVssComponentVtbl;
 784
 785interface IVssComponent {
 786    CONST_VTBL IVssComponentVtbl* lpVtbl;
 787};
 788
 789#ifdef COBJMACROS
 790#ifndef WIDL_C_INLINE_WRAPPERS
 791/*** IUnknown methods ***/
 792#define IVssComponent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 793#define IVssComponent_AddRef(This) (This)->lpVtbl->AddRef(This)
 794#define IVssComponent_Release(This) (This)->lpVtbl->Release(This)
 795/*** IVssComponent methods ***/
 796#define IVssComponent_GetLogicalPath(This,pbstrPath) (This)->lpVtbl->GetLogicalPath(This,pbstrPath)
 797#define IVssComponent_GetComponentType(This,pct) (This)->lpVtbl->GetComponentType(This,pct)
 798#define IVssComponent_GetComponentName(This,pbstrName) (This)->lpVtbl->GetComponentName(This,pbstrName)
 799#define IVssComponent_GetBackupSucceeded(This,pbSucceeded) (This)->lpVtbl->GetBackupSucceeded(This,pbSucceeded)
 800#define IVssComponent_GetAlternateLocationMappingCount(This,pcMappings) (This)->lpVtbl->GetAlternateLocationMappingCount(This,pcMappings)
 801#define IVssComponent_GetAlternateLocationMapping(This,iMapping,ppFiledesc) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc)
 802#define IVssComponent_SetBackupMetadata(This,wszData) (This)->lpVtbl->SetBackupMetadata(This,wszData)
 803#define IVssComponent_GetBackupMetadata(This,pbstrData) (This)->lpVtbl->GetBackupMetadata(This,pbstrData)
 804#define IVssComponent_AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata) (This)->lpVtbl->AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata)
 805#define IVssComponent_GetPartialFileCount(This,pcPartialFiles) (This)->lpVtbl->GetPartialFileCount(This,pcPartialFiles)
 806#define IVssComponent_GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata) (This)->lpVtbl->GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata)
 807#define IVssComponent_IsSelectedForRestore(This,pbSelectedForRestore) (This)->lpVtbl->IsSelectedForRestore(This,pbSelectedForRestore)
 808#define IVssComponent_GetAdditionalRestores(This,pbAdditionalRestores) (This)->lpVtbl->GetAdditionalRestores(This,pbAdditionalRestores)
 809#define IVssComponent_GetNewTargetCount(This,pcNewTarget) (This)->lpVtbl->GetNewTargetCount(This,pcNewTarget)
 810#define IVssComponent_GetNewTarget(This,iNewTarget,ppFiledesc) (This)->lpVtbl->GetNewTarget(This,iNewTarget,ppFiledesc)
 811#define IVssComponent_AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList) (This)->lpVtbl->AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList)
 812#define IVssComponent_GetDirectedTargetCount(This,pcDirectedTarget) (This)->lpVtbl->GetDirectedTargetCount(This,pcDirectedTarget)
 813#define IVssComponent_GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList) (This)->lpVtbl->GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList)
 814#define IVssComponent_SetRestoreMetadata(This,wszRestoreMetadata) (This)->lpVtbl->SetRestoreMetadata(This,wszRestoreMetadata)
 815#define IVssComponent_GetRestoreMetadata(This,pbstrRestoreMetadata) (This)->lpVtbl->GetRestoreMetadata(This,pbstrRestoreMetadata)
 816#define IVssComponent_SetRestoreTarget(This,target) (This)->lpVtbl->SetRestoreTarget(This,target)
 817#define IVssComponent_GetRestoreTarget(This,pTarget) (This)->lpVtbl->GetRestoreTarget(This,pTarget)
 818#define IVssComponent_SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg) (This)->lpVtbl->SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg)
 819#define IVssComponent_GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg) (This)->lpVtbl->GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg)
 820#define IVssComponent_SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg) (This)->lpVtbl->SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg)
 821#define IVssComponent_GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg) (This)->lpVtbl->GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg)
 822#define IVssComponent_SetBackupStamp(This,wszBackupStamp) (This)->lpVtbl->SetBackupStamp(This,wszBackupStamp)
 823#define IVssComponent_GetBackupStamp(This,pbstrBackupStamp) (This)->lpVtbl->GetBackupStamp(This,pbstrBackupStamp)
 824#define IVssComponent_GetPreviousBackupStamp(This,pbstrBackupStamp) (This)->lpVtbl->GetPreviousBackupStamp(This,pbstrBackupStamp)
 825#define IVssComponent_GetBackupOptions(This,pbstrBackupOptions) (This)->lpVtbl->GetBackupOptions(This,pbstrBackupOptions)
 826#define IVssComponent_GetRestoreOptions(This,pbstrRestoreOptions) (This)->lpVtbl->GetRestoreOptions(This,pbstrRestoreOptions)
 827#define IVssComponent_GetRestoreSubcomponentCount(This,pcRestoreSubcomponent) (This)->lpVtbl->GetRestoreSubcomponentCount(This,pcRestoreSubcomponent)
 828#define IVssComponent_GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair) (This)->lpVtbl->GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair)
 829#define IVssComponent_GetFileRestoreStatus(This,pStatus) (This)->lpVtbl->GetFileRestoreStatus(This,pStatus)
 830#define IVssComponent_AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime) (This)->lpVtbl->AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime)
 831#define IVssComponent_AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString) (This)->lpVtbl->AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString)
 832#define IVssComponent_GetDifferencedFilesCount(This,pcDifferencedFiles) (This)->lpVtbl->GetDifferencedFilesCount(This,pcDifferencedFiles)
 833#define IVssComponent_GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime) (This)->lpVtbl->GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime)
 834#else
 835/*** IUnknown methods ***/
 836static inline HRESULT IVssComponent_QueryInterface(IVssComponent* This,REFIID riid,void **ppvObject) {
 837    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 838}
 839static inline ULONG IVssComponent_AddRef(IVssComponent* This) {
 840    return This->lpVtbl->AddRef(This);
 841}
 842static inline ULONG IVssComponent_Release(IVssComponent* This) {
 843    return This->lpVtbl->Release(This);
 844}
 845/*** IVssComponent methods ***/
 846static inline HRESULT IVssComponent_GetLogicalPath(IVssComponent* This,BSTR *pbstrPath) {
 847    return This->lpVtbl->GetLogicalPath(This,pbstrPath);
 848}
 849static inline HRESULT IVssComponent_GetComponentType(IVssComponent* This,VSS_COMPONENT_TYPE *pct) {
 850    return This->lpVtbl->GetComponentType(This,pct);
 851}
 852static inline HRESULT IVssComponent_GetComponentName(IVssComponent* This,BSTR *pbstrName) {
 853    return This->lpVtbl->GetComponentName(This,pbstrName);
 854}
 855static inline HRESULT IVssComponent_GetBackupSucceeded(IVssComponent* This,boolean *pbSucceeded) {
 856    return This->lpVtbl->GetBackupSucceeded(This,pbSucceeded);
 857}
 858static inline HRESULT IVssComponent_GetAlternateLocationMappingCount(IVssComponent* This,UINT *pcMappings) {
 859    return This->lpVtbl->GetAlternateLocationMappingCount(This,pcMappings);
 860}
 861static inline HRESULT IVssComponent_GetAlternateLocationMapping(IVssComponent* This,UINT iMapping,IVssWMFiledesc **ppFiledesc) {
 862    return This->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc);
 863}
 864static inline HRESULT IVssComponent_SetBackupMetadata(IVssComponent* This,LPCWSTR wszData) {
 865    return This->lpVtbl->SetBackupMetadata(This,wszData);
 866}
 867static inline HRESULT IVssComponent_GetBackupMetadata(IVssComponent* This,BSTR *pbstrData) {
 868    return This->lpVtbl->GetBackupMetadata(This,pbstrData);
 869}
 870static inline HRESULT IVssComponent_AddPartialFile(IVssComponent* This,LPCWSTR wszPath,LPCWSTR wszFilename,LPCWSTR wszRanges,LPCWSTR wszMetadata) {
 871    return This->lpVtbl->AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata);
 872}
 873static inline HRESULT IVssComponent_GetPartialFileCount(IVssComponent* This,UINT *pcPartialFiles) {
 874    return This->lpVtbl->GetPartialFileCount(This,pcPartialFiles);
 875}
 876static inline HRESULT IVssComponent_GetPartialFile(IVssComponent* This,UINT iPartialFile,BSTR *pbstrPath,BSTR *pbstrFilename,BSTR *pbstrRange,BSTR *pbstrMetadata) {
 877    return This->lpVtbl->GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata);
 878}
 879static inline HRESULT IVssComponent_IsSelectedForRestore(IVssComponent* This,boolean *pbSelectedForRestore) {
 880    return This->lpVtbl->IsSelectedForRestore(This,pbSelectedForRestore);
 881}
 882static inline HRESULT IVssComponent_GetAdditionalRestores(IVssComponent* This,boolean *pbAdditionalRestores) {
 883    return This->lpVtbl->GetAdditionalRestores(This,pbAdditionalRestores);
 884}
 885static inline HRESULT IVssComponent_GetNewTargetCount(IVssComponent* This,UINT *pcNewTarget) {
 886    return This->lpVtbl->GetNewTargetCount(This,pcNewTarget);
 887}
 888static inline HRESULT IVssComponent_GetNewTarget(IVssComponent* This,UINT iNewTarget,IVssWMFiledesc **ppFiledesc) {
 889    return This->lpVtbl->GetNewTarget(This,iNewTarget,ppFiledesc);
 890}
 891static inline HRESULT IVssComponent_AddDirectedTarget(IVssComponent* This,LPCWSTR wszSourcePath,LPCWSTR wszSourceFilename,LPCWSTR wszSourceRangeList,LPCWSTR wszDestinationPath,LPCWSTR wszDestinationFilename,LPCWSTR wszDestinationRangeList) {
 892    return This->lpVtbl->AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList);
 893}
 894static inline HRESULT IVssComponent_GetDirectedTargetCount(IVssComponent* This,UINT *pcDirectedTarget) {
 895    return This->lpVtbl->GetDirectedTargetCount(This,pcDirectedTarget);
 896}
 897static inline HRESULT IVssComponent_GetDirectedTarget(IVssComponent* This,UINT iDirectedTarget,BSTR *pbstrSourcePath,BSTR *pbstrSourceFileName,BSTR *pbstrSourceRangeList,BSTR *pbstrDestinationPath,BSTR *pbstrDestinationFilename,BSTR *pbstrDestinationRangeList) {
 898    return This->lpVtbl->GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList);
 899}
 900static inline HRESULT IVssComponent_SetRestoreMetadata(IVssComponent* This,LPCWSTR wszRestoreMetadata) {
 901    return This->lpVtbl->SetRestoreMetadata(This,wszRestoreMetadata);
 902}
 903static inline HRESULT IVssComponent_GetRestoreMetadata(IVssComponent* This,BSTR *pbstrRestoreMetadata) {
 904    return This->lpVtbl->GetRestoreMetadata(This,pbstrRestoreMetadata);
 905}
 906static inline HRESULT IVssComponent_SetRestoreTarget(IVssComponent* This,VSS_RESTORE_TARGET target) {
 907    return This->lpVtbl->SetRestoreTarget(This,target);
 908}
 909static inline HRESULT IVssComponent_GetRestoreTarget(IVssComponent* This,VSS_RESTORE_TARGET *pTarget) {
 910    return This->lpVtbl->GetRestoreTarget(This,pTarget);
 911}
 912static inline HRESULT IVssComponent_SetPreRestoreFailureMsg(IVssComponent* This,LPCWSTR wszPreRestoreFailureMsg) {
 913    return This->lpVtbl->SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg);
 914}
 915static inline HRESULT IVssComponent_GetPreRestoreFailureMsg(IVssComponent* This,BSTR *pbstrPreRestoreFailureMsg) {
 916    return This->lpVtbl->GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg);
 917}
 918static inline HRESULT IVssComponent_SetPostRestoreFailureMsg(IVssComponent* This,LPCWSTR wszPostRestoreFailureMsg) {
 919    return This->lpVtbl->SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg);
 920}
 921static inline HRESULT IVssComponent_GetPostRestoreFailureMsg(IVssComponent* This,BSTR *pbstrPostRestoreFailureMsg) {
 922    return This->lpVtbl->GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg);
 923}
 924static inline HRESULT IVssComponent_SetBackupStamp(IVssComponent* This,LPCWSTR wszBackupStamp) {
 925    return This->lpVtbl->SetBackupStamp(This,wszBackupStamp);
 926}
 927static inline HRESULT IVssComponent_GetBackupStamp(IVssComponent* This,BSTR *pbstrBackupStamp) {
 928    return This->lpVtbl->GetBackupStamp(This,pbstrBackupStamp);
 929}
 930static inline HRESULT IVssComponent_GetPreviousBackupStamp(IVssComponent* This,BSTR *pbstrBackupStamp) {
 931    return This->lpVtbl->GetPreviousBackupStamp(This,pbstrBackupStamp);
 932}
 933static inline HRESULT IVssComponent_GetBackupOptions(IVssComponent* This,BSTR *pbstrBackupOptions) {
 934    return This->lpVtbl->GetBackupOptions(This,pbstrBackupOptions);
 935}
 936static inline HRESULT IVssComponent_GetRestoreOptions(IVssComponent* This,BSTR *pbstrRestoreOptions) {
 937    return This->lpVtbl->GetRestoreOptions(This,pbstrRestoreOptions);
 938}
 939static inline HRESULT IVssComponent_GetRestoreSubcomponentCount(IVssComponent* This,UINT *pcRestoreSubcomponent) {
 940    return This->lpVtbl->GetRestoreSubcomponentCount(This,pcRestoreSubcomponent);
 941}
 942static inline HRESULT IVssComponent_GetRestoreSubcomponent(IVssComponent* This,UINT iComponent,BSTR *pbstrLogicalPath,BSTR *pbstrComponentName,boolean *pbRepair) {
 943    return This->lpVtbl->GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair);
 944}
 945static inline HRESULT IVssComponent_GetFileRestoreStatus(IVssComponent* This,VSS_FILE_RESTORE_STATUS *pStatus) {
 946    return This->lpVtbl->GetFileRestoreStatus(This,pStatus);
 947}
 948static inline HRESULT IVssComponent_AddDifferencedFilesByLastModifyTime(IVssComponent* This,LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,FILETIME ftLastModifyTime) {
 949    return This->lpVtbl->AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime);
 950}
 951static inline HRESULT IVssComponent_AddDifferencedFilesByLastModifyLSN(IVssComponent* This,LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,BSTR bstrLsnString) {
 952    return This->lpVtbl->AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString);
 953}
 954static inline HRESULT IVssComponent_GetDifferencedFilesCount(IVssComponent* This,UINT *pcDifferencedFiles) {
 955    return This->lpVtbl->GetDifferencedFilesCount(This,pcDifferencedFiles);
 956}
 957static inline HRESULT IVssComponent_GetDifferencedFile(IVssComponent* This,UINT iDifferencedFile,BSTR *pbstrPath,BSTR *pbstrFilespec,WINBOOL *pbRecursive,BSTR *pbstrLsnString,FILETIME *pftLastModifyTime) {
 958    return This->lpVtbl->GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime);
 959}
 960#endif
 961#endif
 962
 963#endif
 964
 965
 966#endif  /* __IVssComponent_INTERFACE_DEFINED__ */
 967
 968/*****************************************************************************
 969 * IVssWriterComponents interface
 970 */
 971#ifndef __IVssWriterComponents_INTERFACE_DEFINED__
 972#define __IVssWriterComponents_INTERFACE_DEFINED__
 973
 974DEFINE_GUID(IID_IVssWriterComponents, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
 975#if defined(__cplusplus) && !defined(CINTERFACE)
 976MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
 977IVssWriterComponents
 978{
 979
 980    BEGIN_INTERFACE
 981
 982    virtual HRESULT STDMETHODCALLTYPE GetComponentCount(
 983        UINT *pcComponents) = 0;
 984
 985    virtual HRESULT STDMETHODCALLTYPE GetWriterInfo(
 986        VSS_ID *pidInstance,
 987        VSS_ID *pidWriter) = 0;
 988
 989    virtual HRESULT STDMETHODCALLTYPE GetComponent(
 990        UINT iComponent,
 991        IVssComponent **ppComponent) = 0;
 992
 993    END_INTERFACE
 994
 995};
 996#ifdef __CRT_UUID_DECL
 997__CRT_UUID_DECL(IVssWriterComponents, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00)
 998#endif
 999#else
1000typedef struct IVssWriterComponentsVtbl {
1001    BEGIN_INTERFACE
1002
1003    /*** IVssWriterComponents methods ***/
1004    HRESULT (STDMETHODCALLTYPE *GetComponentCount)(
1005        IVssWriterComponents *This,
1006        UINT *pcComponents);
1007
1008    HRESULT (STDMETHODCALLTYPE *GetWriterInfo)(
1009        IVssWriterComponents *This,
1010        VSS_ID *pidInstance,
1011        VSS_ID *pidWriter);
1012
1013    HRESULT (STDMETHODCALLTYPE *GetComponent)(
1014        IVssWriterComponents *This,
1015        UINT iComponent,
1016        IVssComponent **ppComponent);
1017
1018    END_INTERFACE
1019} IVssWriterComponentsVtbl;
1020
1021interface IVssWriterComponents {
1022    CONST_VTBL IVssWriterComponentsVtbl* lpVtbl;
1023};
1024
1025#ifdef COBJMACROS
1026#ifndef WIDL_C_INLINE_WRAPPERS
1027/*** IVssWriterComponents methods ***/
1028#define IVssWriterComponents_GetComponentCount(This,pcComponents) (This)->lpVtbl->GetComponentCount(This,pcComponents)
1029#define IVssWriterComponents_GetWriterInfo(This,pidInstance,pidWriter) (This)->lpVtbl->GetWriterInfo(This,pidInstance,pidWriter)
1030#define IVssWriterComponents_GetComponent(This,iComponent,ppComponent) (This)->lpVtbl->GetComponent(This,iComponent,ppComponent)
1031#else
1032/*** IVssWriterComponents methods ***/
1033static inline HRESULT IVssWriterComponents_GetComponentCount(IVssWriterComponents* This,UINT *pcComponents) {
1034    return This->lpVtbl->GetComponentCount(This,pcComponents);
1035}
1036static inline HRESULT IVssWriterComponents_GetWriterInfo(IVssWriterComponents* This,VSS_ID *pidInstance,VSS_ID *pidWriter) {
1037    return This->lpVtbl->GetWriterInfo(This,pidInstance,pidWriter);
1038}
1039static inline HRESULT IVssWriterComponents_GetComponent(IVssWriterComponents* This,UINT iComponent,IVssComponent **ppComponent) {
1040    return This->lpVtbl->GetComponent(This,iComponent,ppComponent);
1041}
1042#endif
1043#endif
1044
1045#endif
1046
1047
1048#endif  /* __IVssWriterComponents_INTERFACE_DEFINED__ */
1049
1050/*****************************************************************************
1051 * IVssComponentEx interface
1052 */
1053#ifndef __IVssComponentEx_INTERFACE_DEFINED__
1054#define __IVssComponentEx_INTERFACE_DEFINED__
1055
1056DEFINE_GUID(IID_IVssComponentEx, 0x156c8b5e, 0xf131, 0x4bd7, 0x9c,0x97, 0xd1,0x92,0x3b,0xe7,0xe1,0xfa);
1057#if defined(__cplusplus) && !defined(CINTERFACE)
1058MIDL_INTERFACE("156c8b5e-f131-4bd7-9c97-d1923be7e1fa")
1059IVssComponentEx : public IVssComponent
1060{
1061    virtual HRESULT STDMETHODCALLTYPE SetPrepareForBackupFailureMsg(
1062        LPCWSTR wszFailureMsg) = 0;
1063
1064    virtual HRESULT STDMETHODCALLTYPE SetPostSnapshotFailureMsg(
1065        LPCWSTR wszFailureMsg) = 0;
1066
1067    virtual HRESULT STDMETHODCALLTYPE GetPrepareForBackupFailureMsg(
1068        BSTR *pbstrFailureMsg) = 0;
1069
1070    virtual HRESULT STDMETHODCALLTYPE GetPostSnapshotFailureMsg(
1071        BSTR *pbstrFailureMsg) = 0;
1072
1073    virtual HRESULT STDMETHODCALLTYPE GetAuthoritativeRestore(
1074        boolean *pbAuth) = 0;
1075
1076    virtual HRESULT STDMETHODCALLTYPE GetRollForward(
1077        VSS_ROLLFORWARD_TYPE *pRollType,
1078        BSTR *pbstrPoint) = 0;
1079
1080    virtual HRESULT STDMETHODCALLTYPE GetRestoreName(
1081        BSTR *pbstrName) = 0;
1082
1083};
1084#ifdef __CRT_UUID_DECL
1085__CRT_UUID_DECL(IVssComponentEx, 0x156c8b5e, 0xf131, 0x4bd7, 0x9c,0x97, 0xd1,0x92,0x3b,0xe7,0xe1,0xfa)
1086#endif
1087#else
1088typedef struct IVssComponentExVtbl {
1089    BEGIN_INTERFACE
1090
1091    /*** IUnknown methods ***/
1092    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1093        IVssComponentEx *This,
1094        REFIID riid,
1095        void **ppvObject);
1096
1097    ULONG (STDMETHODCALLTYPE *AddRef)(
1098        IVssComponentEx *This);
1099
1100    ULONG (STDMETHODCALLTYPE *Release)(
1101        IVssComponentEx *This);
1102
1103    /*** IVssComponent methods ***/
1104    HRESULT (STDMETHODCALLTYPE *GetLogicalPath)(
1105        IVssComponentEx *This,
1106        BSTR *pbstrPath);
1107
1108    HRESULT (STDMETHODCALLTYPE *GetComponentType)(
1109        IVssComponentEx *This,
1110        VSS_COMPONENT_TYPE *pct);
1111
1112    HRESULT (STDMETHODCALLTYPE *GetComponentName)(
1113        IVssComponentEx *This,
1114        BSTR *pbstrName);
1115
1116    HRESULT (STDMETHODCALLTYPE *GetBackupSucceeded)(
1117        IVssComponentEx *This,
1118        boolean *pbSucceeded);
1119
1120    HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMappingCount)(
1121        IVssComponentEx *This,
1122        UINT *pcMappings);
1123
1124    HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMapping)(
1125        IVssComponentEx *This,
1126        UINT iMapping,
1127        IVssWMFiledesc **ppFiledesc);
1128
1129    HRESULT (STDMETHODCALLTYPE *SetBackupMetadata)(
1130        IVssComponentEx *This,
1131        LPCWSTR wszData);
1132
1133    HRESULT (STDMETHODCALLTYPE *GetBackupMetadata)(
1134        IVssComponentEx *This,
1135        BSTR *pbstrData);
1136
1137    HRESULT (STDMETHODCALLTYPE *AddPartialFile)(
1138        IVssComponentEx *This,
1139        LPCWSTR wszPath,
1140        LPCWSTR wszFilename,
1141        LPCWSTR wszRanges,
1142        LPCWSTR wszMetadata);
1143
1144    HRESULT (STDMETHODCALLTYPE *GetPartialFileCount)(
1145        IVssComponentEx *This,
1146        UINT *pcPartialFiles);
1147
1148    HRESULT (STDMETHODCALLTYPE *GetPartialFile)(
1149        IVssComponentEx *This,
1150        UINT iPartialFile,
1151        BSTR *pbstrPath,
1152        BSTR *pbstrFilename,
1153        BSTR *pbstrRange,
1154        BSTR *pbstrMetadata);
1155
1156    HRESULT (STDMETHODCALLTYPE *IsSelectedForRestore)(
1157        IVssComponentEx *This,
1158        boolean *pbSelectedForRestore);
1159
1160    HRESULT (STDMETHODCALLTYPE *GetAdditionalRestores)(
1161        IVssComponentEx *This,
1162        boolean *pbAdditionalRestores);
1163
1164    HRESULT (STDMETHODCALLTYPE *GetNewTargetCount)(
1165        IVssComponentEx *This,
1166        UINT *pcNewTarget);
1167
1168    HRESULT (STDMETHODCALLTYPE *GetNewTarget)(
1169        IVssComponentEx *This,
1170        UINT iNewTarget,
1171        IVssWMFiledesc **ppFiledesc);
1172
1173    HRESULT (STDMETHODCALLTYPE *AddDirectedTarget)(
1174        IVssComponentEx *This,
1175        LPCWSTR wszSourcePath,
1176        LPCWSTR wszSourceFilename,
1177        LPCWSTR wszSourceRangeList,
1178        LPCWSTR wszDestinationPath,
1179        LPCWSTR wszDestinationFilename,
1180        LPCWSTR wszDestinationRangeList);
1181
1182    HRESULT (STDMETHODCALLTYPE *GetDirectedTargetCount)(
1183        IVssComponentEx *This,
1184        UINT *pcDirectedTarget);
1185
1186    HRESULT (STDMETHODCALLTYPE *GetDirectedTarget)(
1187        IVssComponentEx *This,
1188        UINT iDirectedTarget,
1189        BSTR *pbstrSourcePath,
1190        BSTR *pbstrSourceFileName,
1191        BSTR *pbstrSourceRangeList,
1192        BSTR *pbstrDestinationPath,
1193        BSTR *pbstrDestinationFilename,
1194        BSTR *pbstrDestinationRangeList);
1195
1196    HRESULT (STDMETHODCALLTYPE *SetRestoreMetadata)(
1197        IVssComponentEx *This,
1198        LPCWSTR wszRestoreMetadata);
1199
1200    HRESULT (STDMETHODCALLTYPE *GetRestoreMetadata)(
1201        IVssComponentEx *This,
1202        BSTR *pbstrRestoreMetadata);
1203
1204    HRESULT (STDMETHODCALLTYPE *SetRestoreTarget)(
1205        IVssComponentEx *This,
1206        VSS_RESTORE_TARGET target);
1207
1208    HRESULT (STDMETHODCALLTYPE *GetRestoreTarget)(
1209        IVssComponentEx *This,
1210        VSS_RESTORE_TARGET *pTarget);
1211
1212    HRESULT (STDMETHODCALLTYPE *SetPreRestoreFailureMsg)(
1213        IVssComponentEx *This,
1214        LPCWSTR wszPreRestoreFailureMsg);
1215
1216    HRESULT (STDMETHODCALLTYPE *GetPreRestoreFailureMsg)(
1217        IVssComponentEx *This,
1218        BSTR *pbstrPreRestoreFailureMsg);
1219
1220    HRESULT (STDMETHODCALLTYPE *SetPostRestoreFailureMsg)(
1221        IVssComponentEx *This,
1222        LPCWSTR wszPostRestoreFailureMsg);
1223
1224    HRESULT (STDMETHODCALLTYPE *GetPostRestoreFailureMsg)(
1225        IVssComponentEx *This,
1226        BSTR *pbstrPostRestoreFailureMsg);
1227
1228    HRESULT (STDMETHODCALLTYPE *SetBackupStamp)(
1229        IVssComponentEx *This,
1230        LPCWSTR wszBackupStamp);
1231
1232    HRESULT (STDMETHODCALLTYPE *GetBackupStamp)(
1233        IVssComponentEx *This,
1234        BSTR *pbstrBackupStamp);
1235
1236    HRESULT (STDMETHODCALLTYPE *GetPreviousBackupStamp)(
1237        IVssComponentEx *This,
1238        BSTR *pbstrBackupStamp);
1239
1240    HRESULT (STDMETHODCALLTYPE *GetBackupOptions)(
1241        IVssComponentEx *This,
1242        BSTR *pbstrBackupOptions);
1243
1244    HRESULT (STDMETHODCALLTYPE *GetRestoreOptions)(
1245        IVssComponentEx *This,
1246        BSTR *pbstrRestoreOptions);
1247
1248    HRESULT (STDMETHODCALLTYPE *GetRestoreSubcomponentCount)(
1249        IVssComponentEx *This,
1250        UINT *pcRestoreSubcomponent);
1251
1252    HRESULT (STDMETHODCALLTYPE *GetRestoreSubcomponent)(
1253        IVssComponentEx *This,
1254        UINT iComponent,
1255        BSTR *pbstrLogicalPath,
1256        BSTR *pbstrComponentName,
1257        boolean *pbRepair);
1258
1259    HRESULT (STDMETHODCALLTYPE *GetFileRestoreStatus)(
1260        IVssComponentEx *This,
1261        VSS_FILE_RESTORE_STATUS *pStatus);
1262
1263    HRESULT (STDMETHODCALLTYPE *AddDifferencedFilesByLastModifyTime)(
1264        IVssComponentEx *This,
1265        LPCWSTR wszPath,
1266        LPCWSTR wszFilespec,
1267        WINBOOL bRecursive,
1268        FILETIME ftLastModifyTime);
1269
1270    HRESULT (STDMETHODCALLTYPE *AddDifferencedFilesByLastModifyLSN)(
1271        IVssComponentEx *This,
1272        LPCWSTR wszPath,
1273        LPCWSTR wszFilespec,
1274        WINBOOL bRecursive,
1275        BSTR bstrLsnString);
1276
1277    HRESULT (STDMETHODCALLTYPE *GetDifferencedFilesCount)(
1278        IVssComponentEx *This,
1279        UINT *pcDifferencedFiles);
1280
1281    HRESULT (STDMETHODCALLTYPE *GetDifferencedFile)(
1282        IVssComponentEx *This,
1283        UINT iDifferencedFile,
1284        BSTR *pbstrPath,
1285        BSTR *pbstrFilespec,
1286        WINBOOL *pbRecursive,
1287        BSTR *pbstrLsnString,
1288        FILETIME *pftLastModifyTime);
1289
1290    /*** IVssComponentEx methods ***/
1291    HRESULT (STDMETHODCALLTYPE *SetPrepareForBackupFailureMsg)(
1292        IVssComponentEx *This,
1293        LPCWSTR wszFailureMsg);
1294
1295    HRESULT (STDMETHODCALLTYPE *SetPostSnapshotFailureMsg)(
1296        IVssComponentEx *This,
1297        LPCWSTR wszFailureMsg);
1298
1299    HRESULT (STDMETHODCALLTYPE *GetPrepareForBackupFailureMsg)(
1300        IVssComponentEx *This,
1301        BSTR *pbstrFailureMsg);
1302
1303    HRESULT (STDMETHODCALLTYPE *GetPostSnapshotFailureMsg)(
1304        IVssComponentEx *This,
1305        BSTR *pbstrFailureMsg);
1306
1307    HRESULT (STDMETHODCALLTYPE *GetAuthoritativeRestore)(
1308        IVssComponentEx *This,
1309        boolean *pbAuth);
1310
1311    HRESULT (STDMETHODCALLTYPE *GetRollForward)(
1312        IVssComponentEx *This,
1313        VSS_ROLLFORWARD_TYPE *pRollType,
1314        BSTR *pbstrPoint);
1315
1316    HRESULT (STDMETHODCALLTYPE *GetRestoreName)(
1317        IVssComponentEx *This,
1318        BSTR *pbstrName);
1319
1320    END_INTERFACE
1321} IVssComponentExVtbl;
1322
1323interface IVssComponentEx {
1324    CONST_VTBL IVssComponentExVtbl* lpVtbl;
1325};
1326
1327#ifdef COBJMACROS
1328#ifndef WIDL_C_INLINE_WRAPPERS
1329/*** IUnknown methods ***/
1330#define IVssComponentEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1331#define IVssComponentEx_AddRef(This) (This)->lpVtbl->AddRef(This)
1332#define IVssComponentEx_Release(This) (This)->lpVtbl->Release(This)
1333/*** IVssComponent methods ***/
1334#define IVssComponentEx_GetLogicalPath(This,pbstrPath) (This)->lpVtbl->GetLogicalPath(This,pbstrPath)
1335#define IVssComponentEx_GetComponentType(This,pct) (This)->lpVtbl->GetComponentType(This,pct)
1336#define IVssComponentEx_GetComponentName(This,pbstrName) (This)->lpVtbl->GetComponentName(This,pbstrName)
1337#define IVssComponentEx_GetBackupSucceeded(This,pbSucceeded) (This)->lpVtbl->GetBackupSucceeded(This,pbSucceeded)
1338#define IVssComponentEx_GetAlternateLocationMappingCount(This,pcMappings) (This)->lpVtbl->GetAlternateLocationMappingCount(This,pcMappings)
1339#define IVssComponentEx_GetAlternateLocationMapping(This,iMapping,ppFiledesc) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc)
1340#define IVssComponentEx_SetBackupMetadata(This,wszData) (This)->lpVtbl->SetBackupMetadata(This,wszData)
1341#define IVssComponentEx_GetBackupMetadata(This,pbstrData) (This)->lpVtbl->GetBackupMetadata(This,pbstrData)
1342#define IVssComponentEx_AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata) (This)->lpVtbl->AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata)
1343#define IVssComponentEx_GetPartialFileCount(This,pcPartialFiles) (This)->lpVtbl->GetPartialFileCount(This,pcPartialFiles)
1344#define IVssComponentEx_GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata) (This)->lpVtbl->GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata)
1345#define IVssComponentEx_IsSelectedForRestore(This,pbSelectedForRestore) (This)->lpVtbl->IsSelectedForRestore(This,pbSelectedForRestore)
1346#define IVssComponentEx_GetAdditionalRestores(This,pbAdditionalRestores) (This)->lpVtbl->GetAdditionalRestores(This,pbAdditionalRestores)
1347#define IVssComponentEx_GetNewTargetCount(This,pcNewTarget) (This)->lpVtbl->GetNewTargetCount(This,pcNewTarget)
1348#define IVssComponentEx_GetNewTarget(This,iNewTarget,ppFiledesc) (This)->lpVtbl->GetNewTarget(This,iNewTarget,ppFiledesc)
1349#define IVssComponentEx_AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList) (This)->lpVtbl->AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList)
1350#define IVssComponentEx_GetDirectedTargetCount(This,pcDirectedTarget) (This)->lpVtbl->GetDirectedTargetCount(This,pcDirectedTarget)
1351#define IVssComponentEx_GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList) (This)->lpVtbl->GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList)
1352#define IVssComponentEx_SetRestoreMetadata(This,wszRestoreMetadata) (This)->lpVtbl->SetRestoreMetadata(This,wszRestoreMetadata)
1353#define IVssComponentEx_GetRestoreMetadata(This,pbstrRestoreMetadata) (This)->lpVtbl->GetRestoreMetadata(This,pbstrRestoreMetadata)
1354#define IVssComponentEx_SetRestoreTarget(This,target) (This)->lpVtbl->SetRestoreTarget(This,target)
1355#define IVssComponentEx_GetRestoreTarget(This,pTarget) (This)->lpVtbl->GetRestoreTarget(This,pTarget)
1356#define IVssComponentEx_SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg) (This)->lpVtbl->SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg)
1357#define IVssComponentEx_GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg) (This)->lpVtbl->GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg)
1358#define IVssComponentEx_SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg) (This)->lpVtbl->SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg)
1359#define IVssComponentEx_GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg) (This)->lpVtbl->GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg)
1360#define IVssComponentEx_SetBackupStamp(This,wszBackupStamp) (This)->lpVtbl->SetBackupStamp(This,wszBackupStamp)
1361#define IVssComponentEx_GetBackupStamp(This,pbstrBackupStamp) (This)->lpVtbl->GetBackupStamp(This,pbstrBackupStamp)
1362#define IVssComponentEx_GetPreviousBackupStamp(This,pbstrBackupStamp) (This)->lpVtbl->GetPreviousBackupStamp(This,pbstrBackupStamp)
1363#define IVssComponentEx_GetBackupOptions(This,pbstrBackupOptions) (This)->lpVtbl->GetBackupOptions(This,pbstrBackupOptions)
1364#define IVssComponentEx_GetRestoreOptions(This,pbstrRestoreOptions) (This)->lpVtbl->GetRestoreOptions(This,pbstrRestoreOptions)
1365#define IVssComponentEx_GetRestoreSubcomponentCount(This,pcRestoreSubcomponent) (This)->lpVtbl->GetRestoreSubcomponentCount(This,pcRestoreSubcomponent)
1366#define IVssComponentEx_GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair) (This)->lpVtbl->GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair)
1367#define IVssComponentEx_GetFileRestoreStatus(This,pStatus) (This)->lpVtbl->GetFileRestoreStatus(This,pStatus)
1368#define IVssComponentEx_AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime) (This)->lpVtbl->AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime)
1369#define IVssComponentEx_AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString) (This)->lpVtbl->AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString)
1370#define IVssComponentEx_GetDifferencedFilesCount(This,pcDifferencedFiles) (This)->lpVtbl->GetDifferencedFilesCount(This,pcDifferencedFiles)
1371#define IVssComponentEx_GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime) (This)->lpVtbl->GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime)
1372/*** IVssComponentEx methods ***/
1373#define IVssComponentEx_SetPrepareForBackupFailureMsg(This,wszFailureMsg) (This)->lpVtbl->SetPrepareForBackupFailureMsg(This,wszFailureMsg)
1374#define IVssComponentEx_SetPostSnapshotFailureMsg(This,wszFailureMsg) (This)->lpVtbl->SetPostSnapshotFailureMsg(This,wszFailureMsg)
1375#define IVssComponentEx_GetPrepareForBackupFailureMsg(This,pbstrFailureMsg) (This)->lpVtbl->GetPrepareForBackupFailureMsg(This,pbstrFailureMsg)
1376#define IVssComponentEx_GetPostSnapshotFailureMsg(This,pbstrFailureMsg) (This)->lpVtbl->GetPostSnapshotFailureMsg(This,pbstrFailureMsg)
1377#define IVssComponentEx_GetAuthoritativeRestore(This,pbAuth) (This)->lpVtbl->GetAuthoritativeRestore(This,pbAuth)
1378#define IVssComponentEx_GetRollForward(This,pRollType,pbstrPoint) (This)->lpVtbl->GetRollForward(This,pRollType,pbstrPoint)
1379#define IVssComponentEx_GetRestoreName(This,pbstrName) (This)->lpVtbl->GetRestoreName(This,pbstrName)
1380#else
1381/*** IUnknown methods ***/
1382static inline HRESULT IVssComponentEx_QueryInterface(IVssComponentEx* This,REFIID riid,void **ppvObject) {
1383    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1384}
1385static inline ULONG IVssComponentEx_AddRef(IVssComponentEx* This) {
1386    return This->lpVtbl->AddRef(This);
1387}
1388static inline ULONG IVssComponentEx_Release(IVssComponentEx* This) {
1389    return This->lpVtbl->Release(This);
1390}
1391/*** IVssComponent methods ***/
1392static inline HRESULT IVssComponentEx_GetLogicalPath(IVssComponentEx* This,BSTR *pbstrPath) {
1393    return This->lpVtbl->GetLogicalPath(This,pbstrPath);
1394}
1395static inline HRESULT IVssComponentEx_GetComponentType(IVssComponentEx* This,VSS_COMPONENT_TYPE *pct) {
1396    return This->lpVtbl->GetComponentType(This,pct);
1397}
1398static inline HRESULT IVssComponentEx_GetComponentName(IVssComponentEx* This,BSTR *pbstrName) {
1399    return This->lpVtbl->GetComponentName(This,pbstrName);
1400}
1401static inline HRESULT IVssComponentEx_GetBackupSucceeded(IVssComponentEx* This,boolean *pbSucceeded) {
1402    return This->lpVtbl->GetBackupSucceeded(This,pbSucceeded);
1403}
1404static inline HRESULT IVssComponentEx_GetAlternateLocationMappingCount(IVssComponentEx* This,UINT *pcMappings) {
1405    return This->lpVtbl->GetAlternateLocationMappingCount(This,pcMappings);
1406}
1407static inline HRESULT IVssComponentEx_GetAlternateLocationMapping(IVssComponentEx* This,UINT iMapping,IVssWMFiledesc **ppFiledesc) {
1408    return This->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc);
1409}
1410static inline HRESULT IVssComponentEx_SetBackupMetadata(IVssComponentEx* This,LPCWSTR wszData) {
1411    return This->lpVtbl->SetBackupMetadata(This,wszData);
1412}
1413static inline HRESULT IVssComponentEx_GetBackupMetadata(IVssComponentEx* This,BSTR *pbstrData) {
1414    return This->lpVtbl->GetBackupMetadata(This,pbstrData);
1415}
1416static inline HRESULT IVssComponentEx_AddPartialFile(IVssComponentEx* This,LPCWSTR wszPath,LPCWSTR wszFilename,LPCWSTR wszRanges,LPCWSTR wszMetadata) {
1417    return This->lpVtbl->AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata);
1418}
1419static inline HRESULT IVssComponentEx_GetPartialFileCount(IVssComponentEx* This,UINT *pcPartialFiles) {
1420    return This->lpVtbl->GetPartialFileCount(This,pcPartialFiles);
1421}
1422static inline HRESULT IVssComponentEx_GetPartialFile(IVssComponentEx* This,UINT iPartialFile,BSTR *pbstrPath,BSTR *pbstrFilename,BSTR *pbstrRange,BSTR *pbstrMetadata) {
1423    return This->lpVtbl->GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata);
1424}
1425static inline HRESULT IVssComponentEx_IsSelectedForRestore(IVssComponentEx* This,boolean *pbSelectedForRestore) {
1426    return This->lpVtbl->IsSelectedForRestore(This,pbSelectedForRestore);
1427}
1428static inline HRESULT IVssComponentEx_GetAdditionalRestores(IVssComponentEx* This,boolean *pbAdditionalRestores) {
1429    return This->lpVtbl->GetAdditionalRestores(This,pbAdditionalRestores);
1430}
1431static inline HRESULT IVssComponentEx_GetNewTargetCount(IVssComponentEx* This,UINT *pcNewTarget) {
1432    return This->lpVtbl->GetNewTargetCount(This,pcNewTarget);
1433}
1434static inline HRESULT IVssComponentEx_GetNewTarget(IVssComponentEx* This,UINT iNewTarget,IVssWMFiledesc **ppFiledesc) {
1435    return This->lpVtbl->GetNewTarget(This,iNewTarget,ppFiledesc);
1436}
1437static inline HRESULT IVssComponentEx_AddDirectedTarget(IVssComponentEx* This,LPCWSTR wszSourcePath,LPCWSTR wszSourceFilename,LPCWSTR wszSourceRangeList,LPCWSTR wszDestinationPath,LPCWSTR wszDestinationFilename,LPCWSTR wszDestinationRangeList) {
1438    return This->lpVtbl->AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList);
1439}
1440static inline HRESULT IVssComponentEx_GetDirectedTargetCount(IVssComponentEx* This,UINT *pcDirectedTarget) {
1441    return This->lpVtbl->GetDirectedTargetCount(This,pcDirectedTarget);
1442}
1443static inline HRESULT IVssComponentEx_GetDirectedTarget(IVssComponentEx* This,UINT iDirectedTarget,BSTR *pbstrSourcePath,BSTR *pbstrSourceFileName,BSTR *pbstrSourceRangeList,BSTR *pbstrDestinationPath,BSTR *pbstrDestinationFilename,BSTR *pbstrDestinationRangeList) {
1444    return This->lpVtbl->GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList);
1445}
1446static inline HRESULT IVssComponentEx_SetRestoreMetadata(IVssComponentEx* This,LPCWSTR wszRestoreMetadata) {
1447    return This->lpVtbl->SetRestoreMetadata(This,wszRestoreMetadata);
1448}
1449static inline HRESULT IVssComponentEx_GetRestoreMetadata(IVssComponentEx* This,BSTR *pbstrRestoreMetadata) {
1450    return This->lpVtbl->GetRestoreMetadata(This,pbstrRestoreMetadata);
1451}
1452static inline HRESULT IVssComponentEx_SetRestoreTarget(IVssComponentEx* This,VSS_RESTORE_TARGET target) {
1453    return This->lpVtbl->SetRestoreTarget(This,target);
1454}
1455static inline HRESULT IVssComponentEx_GetRestoreTarget(IVssComponentEx* This,VSS_RESTORE_TARGET *pTarget) {
1456    return This->lpVtbl->GetRestoreTarget(This,pTarget);
1457}
1458static inline HRESULT IVssComponentEx_SetPreRestoreFailureMsg(IVssComponentEx* This,LPCWSTR wszPreRestoreFailureMsg) {
1459    return This->lpVtbl->SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg);
1460}
1461static inline HRESULT IVssComponentEx_GetPreRestoreFailureMsg(IVssComponentEx* This,BSTR *pbstrPreRestoreFailureMsg) {
1462    return This->lpVtbl->GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg);
1463}
1464static inline HRESULT IVssComponentEx_SetPostRestoreFailureMsg(IVssComponentEx* This,LPCWSTR wszPostRestoreFailureMsg) {
1465    return This->lpVtbl->SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg);
1466}
1467static inline HRESULT IVssComponentEx_GetPostRestoreFailureMsg(IVssComponentEx* This,BSTR *pbstrPostRestoreFailureMsg) {
1468    return This->lpVtbl->GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg);
1469}
1470static inline HRESULT IVssComponentEx_SetBackupStamp(IVssComponentEx* This,LPCWSTR wszBackupStamp) {
1471    return This->lpVtbl->SetBackupStamp(This,wszBackupStamp);
1472}
1473static inline HRESULT IVssComponentEx_GetBackupStamp(IVssComponentEx* This,BSTR *pbstrBackupStamp) {
1474    return This->lpVtbl->GetBackupStamp(This,pbstrBackupStamp);
1475}
1476static inline HRESULT IVssComponentEx_GetPreviousBackupStamp(IVssComponentEx* This,BSTR *pbstrBackupStamp) {
1477    return This->lpVtbl->GetPreviousBackupStamp(This,pbstrBackupStamp);
1478}
1479static inline HRESULT IVssComponentEx_GetBackupOptions(IVssComponentEx* This,BSTR *pbstrBackupOptions) {
1480    return This->lpVtbl->GetBackupOptions(This,pbstrBackupOptions);
1481}
1482static inline HRESULT IVssComponentEx_GetRestoreOptions(IVssComponentEx* This,BSTR *pbstrRestoreOptions) {
1483    return This->lpVtbl->GetRestoreOptions(This,pbstrRestoreOptions);
1484}
1485static inline HRESULT IVssComponentEx_GetRestoreSubcomponentCount(IVssComponentEx* This,UINT *pcRestoreSubcomponent) {
1486    return This->lpVtbl->GetRestoreSubcomponentCount(This,pcRestoreSubcomponent);
1487}
1488static inline HRESULT IVssComponentEx_GetRestoreSubcomponent(IVssComponentEx* This,UINT iComponent,BSTR *pbstrLogicalPath,BSTR *pbstrComponentName,boolean *pbRepair) {
1489    return This->lpVtbl->GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair);
1490}
1491static inline HRESULT IVssComponentEx_GetFileRestoreStatus(IVssComponentEx* This,VSS_FILE_RESTORE_STATUS *pStatus) {
1492    return This->lpVtbl->GetFileRestoreStatus(This,pStatus);
1493}
1494static inline HRESULT IVssComponentEx_AddDifferencedFilesByLastModifyTime(IVssComponentEx* This,LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,FILETIME ftLastModifyTime) {
1495    return This->lpVtbl->AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime);
1496}
1497static inline HRESULT IVssComponentEx_AddDifferencedFilesByLastModifyLSN(IVssComponentEx* This,LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,BSTR bstrLsnString) {
1498    return This->lpVtbl->AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString);
1499}
1500static inline HRESULT IVssComponentEx_GetDifferencedFilesCount(IVssComponentEx* This,UINT *pcDifferencedFiles) {
1501    return This->lpVtbl->GetDifferencedFilesCount(This,pcDifferencedFiles);
1502}
1503static inline HRESULT IVssComponentEx_GetDifferencedFile(IVssComponentEx* This,UINT iDifferencedFile,BSTR *pbstrPath,BSTR *pbstrFilespec,WINBOOL *pbRecursive,BSTR *pbstrLsnString,FILETIME *pftLastModifyTime) {
1504    return This->lpVtbl->GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime);
1505}
1506/*** IVssComponentEx methods ***/
1507static inline HRESULT IVssComponentEx_SetPrepareForBackupFailureMsg(IVssComponentEx* This,LPCWSTR wszFailureMsg) {
1508    return This->lpVtbl->SetPrepareForBackupFailureMsg(This,wszFailureMsg);
1509}
1510static inline HRESULT IVssComponentEx_SetPostSnapshotFailureMsg(IVssComponentEx* This,LPCWSTR wszFailureMsg) {
1511    return This->lpVtbl->SetPostSnapshotFailureMsg(This,wszFailureMsg);
1512}
1513static inline HRESULT IVssComponentEx_GetPrepareForBackupFailureMsg(IVssComponentEx* This,BSTR *pbstrFailureMsg) {
1514    return This->lpVtbl->GetPrepareForBackupFailureMsg(This,pbstrFailureMsg);
1515}
1516static inline HRESULT IVssComponentEx_GetPostSnapshotFailureMsg(IVssComponentEx* This,BSTR *pbstrFailureMsg) {
1517    return This->lpVtbl->GetPostSnapshotFailureMsg(This,pbstrFailureMsg);
1518}
1519static inline HRESULT IVssComponentEx_GetAuthoritativeRestore(IVssComponentEx* This,boolean *pbAuth) {
1520    return This->lpVtbl->GetAuthoritativeRestore(This,pbAuth);
1521}
1522static inline HRESULT IVssComponentEx_GetRollForward(IVssComponentEx* This,VSS_ROLLFORWARD_TYPE *pRollType,BSTR *pbstrPoint) {
1523    return This->lpVtbl->GetRollForward(This,pRollType,pbstrPoint);
1524}
1525static inline HRESULT IVssComponentEx_GetRestoreName(IVssComponentEx* This,BSTR *pbstrName) {
1526    return This->lpVtbl->GetRestoreName(This,pbstrName);
1527}
1528#endif
1529#endif
1530
1531#endif
1532
1533
1534#endif  /* __IVssComponentEx_INTERFACE_DEFINED__ */
1535
1536/*****************************************************************************
1537 * IVssComponentEx2 interface
1538 */
1539#ifndef __IVssComponentEx2_INTERFACE_DEFINED__
1540#define __IVssComponentEx2_INTERFACE_DEFINED__
1541
1542DEFINE_GUID(IID_IVssComponentEx2, 0x3b5be0f2, 0x07a9, 0x4e4b, 0xbd,0xd3, 0xcf,0xdc,0x8e,0x2c,0x0d,0x2d);
1543#if defined(__cplusplus) && !defined(CINTERFACE)
1544MIDL_INTERFACE("3b5be0f2-07a9-4e4b-bdd3-cfdc8e2c0d2d")
1545IVssComponentEx2 : public IVssComponentEx
1546{
1547    virtual HRESULT STDMETHODCALLTYPE SetFailure(
1548        HRESULT hr,
1549        HRESULT hrApplication,
1550        LPCWSTR wszApplicationMessage,
1551        DWORD dwReserved) = 0;
1552
1553    virtual HRESULT STDMETHODCALLTYPE GetFailure(
1554        HRESULT *phr,
1555        HRESULT *phrApplication,
1556        BSTR *pbstrApplicationMessage,
1557        DWORD *pdwReserved) = 0;
1558
1559};
1560#ifdef __CRT_UUID_DECL
1561__CRT_UUID_DECL(IVssComponentEx2, 0x3b5be0f2, 0x07a9, 0x4e4b, 0xbd,0xd3, 0xcf,0xdc,0x8e,0x2c,0x0d,0x2d)
1562#endif
1563#else
1564typedef struct IVssComponentEx2Vtbl {
1565    BEGIN_INTERFACE
1566
1567    /*** IUnknown methods ***/
1568    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1569        IVssComponentEx2 *This,
1570        REFIID riid,
1571        void **ppvObject);
1572
1573    ULONG (STDMETHODCALLTYPE *AddRef)(
1574        IVssComponentEx2 *This);
1575
1576    ULONG (STDMETHODCALLTYPE *Release)(
1577        IVssComponentEx2 *This);
1578
1579    /*** IVssComponent methods ***/
1580    HRESULT (STDMETHODCALLTYPE *GetLogicalPath)(
1581        IVssComponentEx2 *This,
1582        BSTR *pbstrPath);
1583
1584    HRESULT (STDMETHODCALLTYPE *GetComponentType)(
1585        IVssComponentEx2 *This,
1586        VSS_COMPONENT_TYPE *pct);
1587
1588    HRESULT (STDMETHODCALLTYPE *GetComponentName)(
1589        IVssComponentEx2 *This,
1590        BSTR *pbstrName);
1591
1592    HRESULT (STDMETHODCALLTYPE *GetBackupSucceeded)(
1593        IVssComponentEx2 *This,
1594        boolean *pbSucceeded);
1595
1596    HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMappingCount)(
1597        IVssComponentEx2 *This,
1598        UINT *pcMappings);
1599
1600    HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMapping)(
1601        IVssComponentEx2 *This,
1602        UINT iMapping,
1603        IVssWMFiledesc **ppFiledesc);
1604
1605    HRESULT (STDMETHODCALLTYPE *SetBackupMetadata)(
1606        IVssComponentEx2 *This,
1607        LPCWSTR wszData);
1608
1609    HRESULT (STDMETHODCALLTYPE *GetBackupMetadata)(
1610        IVssComponentEx2 *This,
1611        BSTR *pbstrData);
1612
1613    HRESULT (STDMETHODCALLTYPE *AddPartialFile)(
1614        IVssComponentEx2 *This,
1615        LPCWSTR wszPath,
1616        LPCWSTR wszFilename,
1617        LPCWSTR wszRanges,
1618        LPCWSTR wszMetadata);
1619
1620    HRESULT (STDMETHODCALLTYPE *GetPartialFileCount)(
1621        IVssComponentEx2 *This,
1622        UINT *pcPartialFiles);
1623
1624    HRESULT (STDMETHODCALLTYPE *GetPartialFile)(
1625        IVssComponentEx2 *This,
1626        UINT iPartialFile,
1627        BSTR *pbstrPath,
1628        BSTR *pbstrFilename,
1629        BSTR *pbstrRange,
1630        BSTR *pbstrMetadata);
1631
1632    HRESULT (STDMETHODCALLTYPE *IsSelectedForRestore)(
1633        IVssComponentEx2 *This,
1634        boolean *pbSelectedForRestore);
1635
1636    HRESULT (STDMETHODCALLTYPE *GetAdditionalRestores)(
1637        IVssComponentEx2 *This,
1638        boolean *pbAdditionalRestores);
1639
1640    HRESULT (STDMETHODCALLTYPE *GetNewTargetCount)(
1641        IVssComponentEx2 *This,
1642        UINT *pcNewTarget);
1643
1644    HRESULT (STDMETHODCALLTYPE *GetNewTarget)(
1645        IVssComponentEx2 *This,
1646        UINT iNewTarget,
1647        IVssWMFiledesc **ppFiledesc);
1648
1649    HRESULT (STDMETHODCALLTYPE *AddDirectedTarget)(
1650        IVssComponentEx2 *This,
1651        LPCWSTR wszSourcePath,
1652        LPCWSTR wszSourceFilename,
1653        LPCWSTR wszSourceRangeList,
1654        LPCWSTR wszDestinationPath,
1655        LPCWSTR wszDestinationFilename,
1656        LPCWSTR wszDestinationRangeList);
1657
1658    HRESULT (STDMETHODCALLTYPE *GetDirectedTargetCount)(
1659        IVssComponentEx2 *This,
1660        UINT *pcDirectedTarget);
1661
1662    HRESULT (STDMETHODCALLTYPE *GetDirectedTarget)(
1663        IVssComponentEx2 *This,
1664        UINT iDirectedTarget,
1665        BSTR *pbstrSourcePath,
1666        BSTR *pbstrSourceFileName,
1667        BSTR *pbstrSourceRangeList,
1668        BSTR *pbstrDestinationPath,
1669        BSTR *pbstrDestinationFilename,
1670        BSTR *pbstrDestinationRangeList);
1671
1672    HRESULT (STDMETHODCALLTYPE *SetRestoreMetadata)(
1673        IVssComponentEx2 *This,
1674        LPCWSTR wszRestoreMetadata);
1675
1676    HRESULT (STDMETHODCALLTYPE *GetRestoreMetadata)(
1677        IVssComponentEx2 *This,
1678        BSTR *pbstrRestoreMetadata);
1679
1680    HRESULT (STDMETHODCALLTYPE *SetRestoreTarget)(
1681        IVssComponentEx2 *This,
1682        VSS_RESTORE_TARGET target);
1683
1684    HRESULT (STDMETHODCALLTYPE *GetRestoreTarget)(
1685        IVssComponentEx2 *This,
1686        VSS_RESTORE_TARGET *pTarget);
1687
1688    HRESULT (STDMETHODCALLTYPE *SetPreRestoreFailureMsg)(
1689        IVssComponentEx2 *This,
1690        LPCWSTR wszPreRestoreFailureMsg);
1691
1692    HRESULT (STDMETHODCALLTYPE *GetPreRestoreFailureMsg)(
1693        IVssComponentEx2 *This,
1694        BSTR *pbstrPreRestoreFailureMsg);
1695
1696    HRESULT (STDMETHODCALLTYPE *SetPostRestoreFailureMsg)(
1697        IVssComponentEx2 *This,
1698        LPCWSTR wszPostRestoreFailureMsg);
1699
1700    HRESULT (STDMETHODCALLTYPE *GetPostRestoreFailureMsg)(
1701        IVssComponentEx2 *This,
1702        BSTR *pbstrPostRestoreFailureMsg);
1703
1704    HRESULT (STDMETHODCALLTYPE *SetBackupStamp)(
1705        IVssComponentEx2 *This,
1706        LPCWSTR wszBackupStamp);
1707
1708    HRESULT (STDMETHODCALLTYPE *GetBackupStamp)(
1709        IVssComponentEx2 *This,
1710        BSTR *pbstrBackupStamp);
1711
1712    HRESULT (STDMETHODCALLTYPE *GetPreviousBackupStamp)(
1713        IVssComponentEx2 *This,
1714        BSTR *pbstrBackupStamp);
1715
1716    HRESULT (STDMETHODCALLTYPE *GetBackupOptions)(
1717        IVssComponentEx2 *This,
1718        BSTR *pbstrBackupOptions);
1719
1720    HRESULT (STDMETHODCALLTYPE *GetRestoreOptions)(
1721        IVssComponentEx2 *This,
1722        BSTR *pbstrRestoreOptions);
1723
1724    HRESULT (STDMETHODCALLTYPE *GetRestoreSubcomponentCount)(
1725        IVssComponentEx2 *This,
1726        UINT *pcRestoreSubcomponent);
1727
1728    HRESULT (STDMETHODCALLTYPE *GetRestoreSubcomponent)(
1729        IVssComponentEx2 *This,
1730        UINT iComponent,
1731        BSTR *pbstrLogicalPath,
1732        BSTR *pbstrComponentName,
1733        boolean *pbRepair);
1734
1735    HRESULT (STDMETHODCALLTYPE *GetFileRestoreStatus)(
1736        IVssComponentEx2 *This,
1737        VSS_FILE_RESTORE_STATUS *pStatus);
1738
1739    HRESULT (STDMETHODCALLTYPE *AddDifferencedFilesByLastModifyTime)(
1740        IVssComponentEx2 *This,
1741        LPCWSTR wszPath,
1742        LPCWSTR wszFilespec,
1743        WINBOOL bRecursive,
1744        FILETIME ftLastModifyTime);
1745
1746    HRESULT (STDMETHODCALLTYPE *AddDifferencedFilesByLastModifyLSN)(
1747        IVssComponentEx2 *This,
1748        LPCWSTR wszPath,
1749        LPCWSTR wszFilespec,
1750        WINBOOL bRecursive,
1751        BSTR bstrLsnString);
1752
1753    HRESULT (STDMETHODCALLTYPE *GetDifferencedFilesCount)(
1754        IVssComponentEx2 *This,
1755        UINT *pcDifferencedFiles);
1756
1757    HRESULT (STDMETHODCALLTYPE *GetDifferencedFile)(
1758        IVssComponentEx2 *This,
1759        UINT iDifferencedFile,
1760        BSTR *pbstrPath,
1761        BSTR *pbstrFilespec,
1762        WINBOOL *pbRecursive,
1763        BSTR *pbstrLsnString,
1764        FILETIME *pftLastModifyTime);
1765
1766    /*** IVssComponentEx methods ***/
1767    HRESULT (STDMETHODCALLTYPE *SetPrepareForBackupFailureMsg)(
1768        IVssComponentEx2 *This,
1769        LPCWSTR wszFailureMsg);
1770
1771    HRESULT (STDMETHODCALLTYPE *SetPostSnapshotFailureMsg)(
1772        IVssComponentEx2 *This,
1773        LPCWSTR wszFailureMsg);
1774
1775    HRESULT (STDMETHODCALLTYPE *GetPrepareForBackupFailureMsg)(
1776        IVssComponentEx2 *This,
1777        BSTR *pbstrFailureMsg);
1778
1779    HRESULT (STDMETHODCALLTYPE *GetPostSnapshotFailureMsg)(
1780        IVssComponentEx2 *This,
1781        BSTR *pbstrFailureMsg);
1782
1783    HRESULT (STDMETHODCALLTYPE *GetAuthoritativeRestore)(
1784        IVssComponentEx2 *This,
1785        boolean *pbAuth);
1786
1787    HRESULT (STDMETHODCALLTYPE *GetRollForward)(
1788        IVssComponentEx2 *This,
1789        VSS_ROLLFORWARD_TYPE *pRollType,
1790        BSTR *pbstrPoint);
1791
1792    HRESULT (STDMETHODCALLTYPE *GetRestoreName)(
1793        IVssComponentEx2 *This,
1794        BSTR *pbstrName);
1795
1796    /*** IVssComponentEx2 methods ***/
1797    HRESULT (STDMETHODCALLTYPE *SetFailure)(
1798        IVssComponentEx2 *This,
1799        HRESULT hr,
1800        HRESULT hrApplication,
1801        LPCWSTR wszApplicationMessage,
1802        DWORD dwReserved);
1803
1804    HRESULT (STDMETHODCALLTYPE *GetFailure)(
1805        IVssComponentEx2 *This,
1806        HRESULT *phr,
1807        HRESULT *phrApplication,
1808        BSTR *pbstrApplicationMessage,
1809        DWORD *pdwReserved);
1810
1811    END_INTERFACE
1812} IVssComponentEx2Vtbl;
1813
1814interface IVssComponentEx2 {
1815    CONST_VTBL IVssComponentEx2Vtbl* lpVtbl;
1816};
1817
1818#ifdef COBJMACROS
1819#ifndef WIDL_C_INLINE_WRAPPERS
1820/*** IUnknown methods ***/
1821#define IVssComponentEx2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1822#define IVssComponentEx2_AddRef(This) (This)->lpVtbl->AddRef(This)
1823#define IVssComponentEx2_Release(This) (This)->lpVtbl->Release(This)
1824/*** IVssComponent methods ***/
1825#define IVssComponentEx2_GetLogicalPath(This,pbstrPath) (This)->lpVtbl->GetLogicalPath(This,pbstrPath)
1826#define IVssComponentEx2_GetComponentType(This,pct) (This)->lpVtbl->GetComponentType(This,pct)
1827#define IVssComponentEx2_GetComponentName(This,pbstrName) (This)->lpVtbl->GetComponentName(This,pbstrName)
1828#define IVssComponentEx2_GetBackupSucceeded(This,pbSucceeded) (This)->lpVtbl->GetBackupSucceeded(This,pbSucceeded)
1829#define IVssComponentEx2_GetAlternateLocationMappingCount(This,pcMappings) (This)->lpVtbl->GetAlternateLocationMappingCount(This,pcMappings)
1830#define IVssComponentEx2_GetAlternateLocationMapping(This,iMapping,ppFiledesc) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc)
1831#define IVssComponentEx2_SetBackupMetadata(This,wszData) (This)->lpVtbl->SetBackupMetadata(This,wszData)
1832#define IVssComponentEx2_GetBackupMetadata(This,pbstrData) (This)->lpVtbl->GetBackupMetadata(This,pbstrData)
1833#define IVssComponentEx2_AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata) (This)->lpVtbl->AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata)
1834#define IVssComponentEx2_GetPartialFileCount(This,pcPartialFiles) (This)->lpVtbl->GetPartialFileCount(This,pcPartialFiles)
1835#define IVssComponentEx2_GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata) (This)->lpVtbl->GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata)
1836#define IVssComponentEx2_IsSelectedForRestore(This,pbSelectedForRestore) (This)->lpVtbl->IsSelectedForRestore(This,pbSelectedForRestore)
1837#define IVssComponentEx2_GetAdditionalRestores(This,pbAdditionalRestores) (This)->lpVtbl->GetAdditionalRestores(This,pbAdditionalRestores)
1838#define IVssComponentEx2_GetNewTargetCount(This,pcNewTarget) (This)->lpVtbl->GetNewTargetCount(This,pcNewTarget)
1839#define IVssComponentEx2_GetNewTarget(This,iNewTarget,ppFiledesc) (This)->lpVtbl->GetNewTarget(This,iNewTarget,ppFiledesc)
1840#define IVssComponentEx2_AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList) (This)->lpVtbl->AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList)
1841#define IVssComponentEx2_GetDirectedTargetCount(This,pcDirectedTarget) (This)->lpVtbl->GetDirectedTargetCount(This,pcDirectedTarget)
1842#define IVssComponentEx2_GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList) (This)->lpVtbl->GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList)
1843#define IVssComponentEx2_SetRestoreMetadata(This,wszRestoreMetadata) (This)->lpVtbl->SetRestoreMetadata(This,wszRestoreMetadata)
1844#define IVssComponentEx2_GetRestoreMetadata(This,pbstrRestoreMetadata) (This)->lpVtbl->GetRestoreMetadata(This,pbstrRestoreMetadata)
1845#define IVssComponentEx2_SetRestoreTarget(This,target) (This)->lpVtbl->SetRestoreTarget(This,target)
1846#define IVssComponentEx2_GetRestoreTarget(This,pTarget) (This)->lpVtbl->GetRestoreTarget(This,pTarget)
1847#define IVssComponentEx2_SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg) (This)->lpVtbl->SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg)
1848#define IVssComponentEx2_GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg) (This)->lpVtbl->GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg)
1849#define IVssComponentEx2_SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg) (This)->lpVtbl->SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg)
1850#define IVssComponentEx2_GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg) (This)->lpVtbl->GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg)
1851#define IVssComponentEx2_SetBackupStamp(This,wszBackupStamp) (This)->lpVtbl->SetBackupStamp(This,wszBackupStamp)
1852#define IVssComponentEx2_GetBackupStamp(This,pbstrBackupStamp) (This)->lpVtbl->GetBackupStamp(This,pbstrBackupStamp)
1853#define IVssComponentEx2_GetPreviousBackupStamp(This,pbstrBackupStamp) (This)->lpVtbl->GetPreviousBackupStamp(This,pbstrBackupStamp)
1854#define IVssComponentEx2_GetBackupOptions(This,pbstrBackupOptions) (This)->lpVtbl->GetBackupOptions(This,pbstrBackupOptions)
1855#define IVssComponentEx2_GetRestoreOptions(This,pbstrRestoreOptions) (This)->lpVtbl->GetRestoreOptions(This,pbstrRestoreOptions)
1856#define IVssComponentEx2_GetRestoreSubcomponentCount(This,pcRestoreSubcomponent) (This)->lpVtbl->GetRestoreSubcomponentCount(This,pcRestoreSubcomponent)
1857#define IVssComponentEx2_GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair) (This)->lpVtbl->GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair)
1858#define IVssComponentEx2_GetFileRestoreStatus(This,pStatus) (This)->lpVtbl->GetFileRestoreStatus(This,pStatus)
1859#define IVssComponentEx2_AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime) (This)->lpVtbl->AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime)
1860#define IVssComponentEx2_AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString) (This)->lpVtbl->AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString)
1861#define IVssComponentEx2_GetDifferencedFilesCount(This,pcDifferencedFiles) (This)->lpVtbl->GetDifferencedFilesCount(This,pcDifferencedFiles)
1862#define IVssComponentEx2_GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime) (This)->lpVtbl->GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime)
1863/*** IVssComponentEx methods ***/
1864#define IVssComponentEx2_SetPrepareForBackupFailureMsg(This,wszFailureMsg) (This)->lpVtbl->SetPrepareForBackupFailureMsg(This,wszFailureMsg)
1865#define IVssComponentEx2_SetPostSnapshotFailureMsg(This,wszFailureMsg) (This)->lpVtbl->SetPostSnapshotFailureMsg(This,wszFailureMsg)
1866#define IVssComponentEx2_GetPrepareForBackupFailureMsg(This,pbstrFailureMsg) (This)->lpVtbl->GetPrepareForBackupFailureMsg(This,pbstrFailureMsg)
1867#define IVssComponentEx2_GetPostSnapshotFailureMsg(This,pbstrFailureMsg) (This)->lpVtbl->GetPostSnapshotFailureMsg(This,pbstrFailureMsg)
1868#define IVssComponentEx2_GetAuthoritativeRestore(This,pbAuth) (This)->lpVtbl->GetAuthoritativeRestore(This,pbAuth)
1869#define IVssComponentEx2_GetRollForward(This,pRollType,pbstrPoint) (This)->lpVtbl->GetRollForward(This,pRollType,pbstrPoint)
1870#define IVssComponentEx2_GetRestoreName(This,pbstrName) (This)->lpVtbl->GetRestoreName(This,pbstrName)
1871/*** IVssComponentEx2 methods ***/
1872#define IVssComponentEx2_SetFailure(This,hr,hrApplication,wszApplicationMessage,dwReserved) (This)->lpVtbl->SetFailure(This,hr,hrApplication,wszApplicationMessage,dwReserved)
1873#define IVssComponentEx2_GetFailure(This,phr,phrApplication,pbstrApplicationMessage,pdwReserved) (This)->lpVtbl->GetFailure(This,phr,phrApplication,pbstrApplicationMessage,pdwReserved)
1874#else
1875/*** IUnknown methods ***/
1876static inline HRESULT IVssComponentEx2_QueryInterface(IVssComponentEx2* This,REFIID riid,void **ppvObject) {
1877    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1878}
1879static inline ULONG IVssComponentEx2_AddRef(IVssComponentEx2* This) {
1880    return This->lpVtbl->AddRef(This);
1881}
1882static inline ULONG IVssComponentEx2_Release(IVssComponentEx2* This) {
1883    return This->lpVtbl->Release(This);
1884}
1885/*** IVssComponent methods ***/
1886static inline HRESULT IVssComponentEx2_GetLogicalPath(IVssComponentEx2* This,BSTR *pbstrPath) {
1887    return This->lpVtbl->GetLogicalPath(This,pbstrPath);
1888}
1889static inline HRESULT IVssComponentEx2_GetComponentType(IVssComponentEx2* This,VSS_COMPONENT_TYPE *pct) {
1890    return This->lpVtbl->GetComponentType(This,pct);
1891}
1892static inline HRESULT IVssComponentEx2_GetComponentName(IVssComponentEx2* This,BSTR *pbstrName) {
1893    return This->lpVtbl->GetComponentName(This,pbstrName);
1894}
1895static inline HRESULT IVssComponentEx2_GetBackupSucceeded(IVssComponentEx2* This,boolean *pbSucceeded) {
1896    return This->lpVtbl->GetBackupSucceeded(This,pbSucceeded);
1897}
1898static inline HRESULT IVssComponentEx2_GetAlternateLocationMappingCount(IVssComponentEx2* This,UINT *pcMappings) {
1899    return This->lpVtbl->GetAlternateLocationMappingCount(This,pcMappings);
1900}
1901static inline HRESULT IVssComponentEx2_GetAlternateLocationMapping(IVssComponentEx2* This,UINT iMapping,IVssWMFiledesc **ppFiledesc) {
1902    return This->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc);
1903}
1904static inline HRESULT IVssComponentEx2_SetBackupMetadata(IVssComponentEx2* This,LPCWSTR wszData) {
1905    return This->lpVtbl->SetBackupMetadata(This,wszData);
1906}
1907static inline HRESULT IVssComponentEx2_GetBackupMetadata(IVssComponentEx2* This,BSTR *pbstrData) {
1908    return This->lpVtbl->GetBackupMetadata(This,pbstrData);
1909}
1910static inline HRESULT IVssComponentEx2_AddPartialFile(IVssComponentEx2* This,LPCWSTR wszPath,LPCWSTR wszFilename,LPCWSTR wszRanges,LPCWSTR wszMetadata) {
1911    return This->lpVtbl->AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata);
1912}
1913static inline HRESULT IVssComponentEx2_GetPartialFileCount(IVssComponentEx2* This,UINT *pcPartialFiles) {
1914    return This->lpVtbl->GetPartialFileCount(This,pcPartialFiles);
1915}
1916static inline HRESULT IVssComponentEx2_GetPartialFile(IVssComponentEx2* This,UINT iPartialFile,BSTR *pbstrPath,BSTR *pbstrFilename,BSTR *pbstrRange,BSTR *pbstrMetadata) {
1917    return This->lpVtbl->GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata);
1918}
1919static inline HRESULT IVssComponentEx2_IsSelectedForRestore(IVssComponentEx2* This,boolean *pbSelectedForRestore) {
1920    return This->lpVtbl->IsSelectedForRestore(This,pbSelectedForRestore);
1921}
1922static inline HRESULT IVssComponentEx2_GetAdditionalRestores(IVssComponentEx2* This,boolean *pbAdditionalRestores) {
1923    return This->lpVtbl->GetAdditionalRestores(This,pbAdditionalRestores);
1924}
1925static inline HRESULT IVssComponentEx2_GetNewTargetCount(IVssComponentEx2* This,UINT *pcNewTarget) {
1926    return This->lpVtbl->GetNewTargetCount(This,pcNewTarget);
1927}
1928static inline HRESULT IVssComponentEx2_GetNewTarget(IVssComponentEx2* This,UINT iNewTarget,IVssWMFiledesc **ppFiledesc) {
1929    return This->lpVtbl->GetNewTarget(This,iNewTarget,ppFiledesc);
1930}
1931static inline HRESULT IVssComponentEx2_AddDirectedTarget(IVssComponentEx2* This,LPCWSTR wszSourcePath,LPCWSTR wszSourceFilename,LPCWSTR wszSourceRangeList,LPCWSTR wszDestinationPath,LPCWSTR wszDestinationFilename,LPCWSTR wszDestinationRangeList) {
1932    return This->lpVtbl->AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList);
1933}
1934static inline HRESULT IVssComponentEx2_GetDirectedTargetCount(IVssComponentEx2* This,UINT *pcDirectedTarget) {
1935    return This->lpVtbl->GetDirectedTargetCount(This,pcDirectedTarget);
1936}
1937static inline HRESULT IVssComponentEx2_GetDirectedTarget(IVssComponentEx2* This,UINT iDirectedTarget,BSTR *pbstrSourcePath,BSTR *pbstrSourceFileName,BSTR *pbstrSourceRangeList,BSTR *pbstrDestinationPath,BSTR *pbstrDestinationFilename,BSTR *pbstrDestinationRangeList) {
1938    return This->lpVtbl->GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList);
1939}
1940static inline HRESULT IVssComponentEx2_SetRestoreMetadata(IVssComponentEx2* This,LPCWSTR wszRestoreMetadata) {
1941    return This->lpVtbl->SetRestoreMetadata(This,wszRestoreMetadata);
1942}
1943static inline HRESULT IVssComponentEx2_GetRestoreMetadata(IVssComponentEx2* This,BSTR *pbstrRestoreMetadata) {
1944    return This->lpVtbl->GetRestoreMetadata(This,pbstrRestoreMetadata);
1945}
1946static inline HRESULT IVssComponentEx2_SetRestoreTarget(IVssComponentEx2* This,VSS_RESTORE_TARGET target) {
1947    return This->lpVtbl->SetRestoreTarget(This,target);
1948}
1949static inline HRESULT IVssComponentEx2_GetRestoreTarget(IVssComponentEx2* This,VSS_RESTORE_TARGET *pTarget) {
1950    return This->lpVtbl->GetRestoreTarget(This,pTarget);
1951}
1952static inline HRESULT IVssComponentEx2_SetPreRestoreFailureMsg(IVssComponentEx2* This,LPCWSTR wszPreRestoreFailureMsg) {
1953    return This->lpVtbl->SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg);
1954}
1955static inline HRESULT IVssComponentEx2_GetPreRestoreFailureMsg(IVssComponentEx2* This,BSTR *pbstrPreRestoreFailureMsg) {
1956    return This->lpVtbl->GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg);
1957}
1958static inline HRESULT IVssComponentEx2_SetPostRestoreFailureMsg(IVssComponentEx2* This,LPCWSTR wszPostRestoreFailureMsg) {
1959    return This->lpVtbl->SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg);
1960}
1961static inline HRESULT IVssComponentEx2_GetPostRestoreFailureMsg(IVssComponentEx2* This,BSTR *pbstrPostRestoreFailureMsg) {
1962    return This->lpVtbl->GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg);
1963}
1964static inline HRESULT IVssComponentEx2_SetBackupStamp(IVssComponentEx2* This,LPCWSTR wszBackupStamp) {
1965    return This->lpVtbl->SetBackupStamp(This,wszBackupStamp);
1966}
1967static inline HRESULT IVssComponentEx2_GetBackupStamp(IVssComponentEx2* This,BSTR *pbstrBackupStamp) {
1968    return This->lpVtbl->GetBackupStamp(This,pbstrBackupStamp);
1969}
1970static inline HRESULT IVssComponentEx2_GetPreviousBackupStamp(IVssComponentEx2* This,BSTR *pbstrBackupStamp) {
1971    return This->lpVtbl->GetPreviousBackupStamp(This,pbstrBackupStamp);
1972}
1973static inline HRESULT IVssComponentEx2_GetBackupOptions(IVssComponentEx2* This,BSTR *pbstrBackupOptions) {
1974    return This->lpVtbl->GetBackupOptions(This,pbstrBackupOptions);
1975}
1976static inline HRESULT IVssComponentEx2_GetRestoreOptions(IVssComponentEx2* This,BSTR *pbstrRestoreOptions) {
1977    return This->lpVtbl->GetRestoreOptions(This,pbstrRestoreOptions);
1978}
1979static inline HRESULT IVssComponentEx2_GetRestoreSubcomponentCount(IVssComponentEx2* This,UINT *pcRestoreSubcomponent) {
1980    return This->lpVtbl->GetRestoreSubcomponentCount(This,pcRestoreSubcomponent);
1981}
1982static inline HRESULT IVssComponentEx2_GetRestoreSubcomponent(IVssComponentEx2* This,UINT iComponent,BSTR *pbstrLogicalPath,BSTR *pbstrComponentName,boolean *pbRepair) {
1983    return This->lpVtbl->GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair);
1984}
1985static inline HRESULT IVssComponentEx2_GetFileRestoreStatus(IVssComponentEx2* This,VSS_FILE_RESTORE_STATUS *pStatus) {
1986    return This->lpVtbl->GetFileRestoreStatus(This,pStatus);
1987}
1988static inline HRESULT IVssComponentEx2_AddDifferencedFilesByLastModifyTime(IVssComponentEx2* This,LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,FILETIME ftLastModifyTime) {
1989    return This->lpVtbl->AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime);
1990}
1991static inline HRESULT IVssComponentEx2_AddDifferencedFilesByLastModifyLSN(IVssComponentEx2* This,LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,BSTR bstrLsnString) {
1992    return This->lpVtbl->AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString);
1993}
1994static inline HRESULT IVssComponentEx2_GetDifferencedFilesCount(IVssComponentEx2* This,UINT *pcDifferencedFiles) {
1995    return This->lpVtbl->GetDifferencedFilesCount(This,pcDifferencedFiles);
1996}
1997static inline HRESULT IVssComponentEx2_GetDifferencedFile(IVssComponentEx2* This,UINT iDifferencedFile,BSTR *pbstrPath,BSTR *pbstrFilespec,WINBOOL *pbRecursive,BSTR *pbstrLsnString,FILETIME *pftLastModifyTime) {
1998    return This->lpVtbl->GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime);
1999}
2000/*** IVssComponentEx methods ***/
2001static inline HRESULT IVssComponentEx2_SetPrepareForBackupFailureMsg(IVssComponentEx2* This,LPCWSTR wszFailureMsg) {
2002    return This->lpVtbl->SetPrepareForBackupFailureMsg(This,wszFailureMsg);
2003}
2004static inline HRESULT IVssComponentEx2_SetPostSnapshotFailureMsg(IVssComponentEx2* This,LPCWSTR wszFailureMsg) {
2005    return This->lpVtbl->SetPostSnapshotFailureMsg(This,wszFailureMsg);
2006}
2007static inline HRESULT IVssComponentEx2_GetPrepareForBackupFailureMsg(IVssComponentEx2* This,BSTR *pbstrFailureMsg) {
2008    return This->lpVtbl->GetPrepareForBackupFailureMsg(This,pbstrFailureMsg);
2009}
2010static inline HRESULT IVssComponentEx2_GetPostSnapshotFailureMsg(IVssComponentEx2* This,BSTR *pbstrFailureMsg) {
2011    return This->lpVtbl->GetPostSnapshotFailureMsg(This,pbstrFailureMsg);
2012}
2013static inline HRESULT IVssComponentEx2_GetAuthoritativeRestore(IVssComponentEx2* This,boolean *pbAuth) {
2014    return This->lpVtbl->GetAuthoritativeRestore(This,pbAuth);
2015}
2016static inline HRESULT IVssComponentEx2_GetRollForward(IVssComponentEx2* This,VSS_ROLLFORWARD_TYPE *pRollType,BSTR *pbstrPoint) {
2017    return This->lpVtbl->GetRollForward(This,pRollType,pbstrPoint);
2018}
2019static inline HRESULT IVssComponentEx2_GetRestoreName(IVssComponentEx2* This,BSTR *pbstrName) {
2020    return This->lpVtbl->GetRestoreName(This,pbstrName);
2021}
2022/*** IVssComponentEx2 methods ***/
2023static inline HRESULT IVssComponentEx2_SetFailure(IVssComponentEx2* This,HRESULT hr,HRESULT hrApplication,LPCWSTR wszApplicationMessage,DWORD dwReserved) {
2024    return This->lpVtbl->SetFailure(This,hr,hrApplication,wszApplicationMessage,dwReserved);
2025}
2026static inline HRESULT IVssComponentEx2_GetFailure(IVssComponentEx2* This,HRESULT *phr,HRESULT *phrApplication,BSTR *pbstrApplicationMessage,DWORD *pdwReserved) {
2027    return This->lpVtbl->GetFailure(This,phr,phrApplication,pbstrApplicationMessage,pdwReserved);
2028}
2029#endif
2030#endif
2031
2032#endif
2033
2034
2035#endif  /* __IVssComponentEx2_INTERFACE_DEFINED__ */
2036
2037#ifndef __IXMLDOMDocument_FWD_DEFINED__
2038#define __IXMLDOMDocument_FWD_DEFINED__
2039typedef interface IXMLDOMDocument IXMLDOMDocument;
2040#ifdef __cplusplus
2041interface IXMLDOMDocument;
2042#endif /* __cplusplus */
2043#endif
2044
2045/*****************************************************************************
2046 * IVssCreateWriterMetadata interface
2047 */
2048#ifndef __IVssCreateWriterMetadata_INTERFACE_DEFINED__
2049#define __IVssCreateWriterMetadata_INTERFACE_DEFINED__
2050
2051DEFINE_GUID(IID_IVssCreateWriterMetadata, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
2052#if defined(__cplusplus) && !defined(CINTERFACE)
2053MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
2054IVssCreateWriterMetadata
2055{
2056
2057    BEGIN_INTERFACE
2058
2059    virtual HRESULT STDMETHODCALLTYPE AddIncludeFiles(
2060        LPCWSTR wszPath,
2061        LPCWSTR wszFilespec,
2062        boolean bRecursive,
2063        LPCWSTR wszAlternateLocation) = 0;
2064
2065    virtual HRESULT STDMETHODCALLTYPE AddExcludeFiles(
2066        LPCWSTR wszPath,
2067        LPCWSTR wszFilespec,
2068        boolean bRecursive) = 0;
2069
2070    virtual HRESULT STDMETHODCALLTYPE AddComponent(
2071        VSS_COMPONENT_TYPE ct,
2072        LPCWSTR wszLogicalPath,
2073        LPCWSTR wszComponentName,
2074        LPCWSTR wszCaption,
2075        const BYTE *pbIcon,
2076        UINT cbIcon,
2077        boolean bRestoreMetadata,
2078        boolean bNotifyOnBackupComplete,
2079        boolean bSelectable,
2080        boolean bSelectableForRestore = 0,
2081        DWORD dwComponentFlags = 0) = 0;
2082
2083    virtual HRESULT STDMETHODCALLTYPE AddDatabaseFiles(
2084        LPCWSTR wszLogicalPath,
2085        LPCWSTR wszDatabaseName,
2086        LPCWSTR wszPath,
2087        LPCWSTR wszFilespec,
2088        DWORD dwBackupTypeMask = VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED) = 0;
2089
2090    virtual HRESULT STDMETHODCALLTYPE AddDatabaseLogFiles(
2091        LPCWSTR wszLogicalPath,
2092        LPCWSTR wszDatabaseName,
2093        LPCWSTR wszPath,
2094        LPCWSTR wszFilespec,
2095        DWORD dwBackupTypeMask = VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED) = 0;
2096
2097    virtual HRESULT STDMETHODCALLTYPE AddFilesToFileGroup(
2098        LPCWSTR wszLogicalPath,
2099        LPCWSTR wszGroupName,
2100        LPCWSTR wszPath,
2101        LPCWSTR wszFilespec,
2102        boolean bRecursive,
2103        LPCWSTR wszAlternateLocation,
2104        DWORD dwBackupTypeMask = VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED) = 0;
2105
2106    virtual HRESULT STDMETHODCALLTYPE SetRestoreMethod(
2107        VSS_RESTOREMETHOD_ENUM method,
2108        LPCWSTR wszService,
2109        LPCWSTR wszUserProcedure,
2110        VSS_WRITERRESTORE_ENUM writerRestore,
2111        boolean bRebootRequired) = 0;
2112
2113    virtual HRESULT STDMETHODCALLTYPE AddAlternateLocationMapping(
2114        LPCWSTR wszSourcePath,
2115        LPCWSTR wszSourceFilespec,
2116        boolean bRecursive,
2117        LPCWSTR wszDestination) = 0;
2118
2119    virtual HRESULT STDMETHODCALLTYPE AddComponentDependency(
2120        LPCWSTR wszForLogicalPath,
2121        LPCWSTR wszForComponentName,
2122        VSS_ID onWriterId,
2123        LPCWSTR wszOnLogicalPath,
2124        LPCWSTR wszOnComponentName) = 0;
2125
2126    virtual HRESULT STDMETHODCALLTYPE SetBackupSchema(
2127        DWORD dwSchemaMask) = 0;
2128
2129    virtual HRESULT STDMETHODCALLTYPE GetDocument(
2130        IXMLDOMDocument **pDoc) = 0;
2131
2132    virtual HRESULT STDMETHODCALLTYPE SaveAsXML(
2133        BSTR *pbstrXML) = 0;
2134
2135    END_INTERFACE
2136
2137};
2138#ifdef __CRT_UUID_DECL
2139__CRT_UUID_DECL(IVssCreateWriterMetadata, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00)
2140#endif
2141#else
2142typedef struct IVssCreateWriterMetadataVtbl {
2143    BEGIN_INTERFACE
2144
2145    /*** IVssCreateWriterMetadata methods ***/
2146    HRESULT (STDMETHODCALLTYPE *AddIncludeFiles)(
2147        IVssCreateWriterMetadata *This,
2148        LPCWSTR wszPath,
2149        LPCWSTR wszFilespec,
2150        boolean bRecursive,
2151        LPCWSTR wszAlternateLocation);
2152
2153    HRESULT (STDMETHODCALLTYPE *AddExcludeFiles)(
2154        IVssCreateWriterMetadata *This,
2155        LPCWSTR wszPath,
2156        LPCWSTR wszFilespec,
2157        boolean bRecursive);
2158
2159    HRESULT (STDMETHODCALLTYPE *AddComponent)(
2160        IVssCreateWriterMetadata *This,
2161        VSS_COMPONENT_TYPE ct,
2162        LPCWSTR wszLogicalPath,
2163        LPCWSTR wszComponentName,
2164        LPCWSTR wszCaption,
2165        const BYTE *pbIcon,
2166        UINT cbIcon,
2167        boolean bRestoreMetadata,
2168        boolean bNotifyOnBackupComplete,
2169        boolean bSelectable,
2170        boolean bSelectableForRestore,
2171        DWORD dwComponentFlags);
2172
2173    HRESULT (STDMETHODCALLTYPE *AddDatabaseFiles)(
2174        IVssCreateWriterMetadata *This,
2175        LPCWSTR wszLogicalPath,
2176        LPCWSTR wszDatabaseName,
2177        LPCWSTR wszPath,
2178        LPCWSTR wszFilespec,
2179        DWORD dwBackupTypeMask);
2180
2181    HRESULT (STDMETHODCALLTYPE *AddDatabaseLogFiles)(
2182        IVssCreateWriterMetadata *This,
2183        LPCWSTR wszLogicalPath,
2184        LPCWSTR wszDatabaseName,
2185        LPCWSTR wszPath,
2186        LPCWSTR wszFilespec,
2187        DWORD dwBackupTypeMask);
2188
2189    HRESULT (STDMETHODCALLTYPE *AddFilesToFileGroup)(
2190        IVssCreateWriterMetadata *This,
2191        LPCWSTR wszLogicalPath,
2192        LPCWSTR wszGroupName,
2193        LPCWSTR wszPath,
2194        LPCWSTR wszFilespec,
2195        boolean bRecursive,
2196        LPCWSTR wszAlternateLocation,
2197        DWORD dwBackupTypeMask);
2198
2199    HRESULT (STDMETHODCALLTYPE *SetRestoreMethod)(
2200        IVssCreateWriterMetadata *This,
2201        VSS_RESTOREMETHOD_ENUM method,
2202        LPCWSTR wszService,
2203        LPCWSTR wszUserProcedure,
2204        VSS_WRITERRESTORE_ENUM writerRestore,
2205        boolean bRebootRequired);
2206
2207    HRESULT (STDMETHODCALLTYPE *AddAlternateLocationMapping)(
2208        IVssCreateWriterMetadata *This,
2209        LPCWSTR wszSourcePath,
2210        LPCWSTR wszSourceFilespec,
2211        boolean bRecursive,
2212        LPCWSTR wszDestination);
2213
2214    HRESULT (STDMETHODCALLTYPE *AddComponentDependency)(
2215        IVssCreateWriterMetadata *This,
2216        LPCWSTR wszForLogicalPath,
2217        LPCWSTR wszForComponentName,
2218        VSS_ID onWriterId,
2219        LPCWSTR wszOnLogicalPath,
2220        LPCWSTR wszOnComponentName);
2221
2222    HRESULT (STDMETHODCALLTYPE *SetBackupSchema)(
2223        IVssCreateWriterMetadata *This,
2224        DWORD dwSchemaMask);
2225
2226    HRESULT (STDMETHODCALLTYPE *GetDocument)(
2227        IVssCreateWriterMetadata *This,
2228        IXMLDOMDocument **pDoc);
2229
2230    HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
2231        IVssCreateWriterMetadata *This,
2232        BSTR *pbstrXML);
2233
2234    END_INTERFACE
2235} IVssCreateWriterMetadataVtbl;
2236
2237interface IVssCreateWriterMetadata {
2238    CONST_VTBL IVssCreateWriterMetadataVtbl* lpVtbl;
2239};
2240
2241#ifdef COBJMACROS
2242#ifndef WIDL_C_INLINE_WRAPPERS
2243/*** IVssCreateWriterMetadata methods ***/
2244#define IVssCreateWriterMetadata_AddIncludeFiles(This,wszPath,wszFilespec,bRecursive,wszAlternateLocation) (This)->lpVtbl->AddIncludeFiles(This,wszPath,wszFilespec,bRecursive,wszAlternateLocation)
2245#define IVssCreateWriterMetadata_AddExcludeFiles(This,wszPath,wszFilespec,bRecursive) (This)->lpVtbl->AddExcludeFiles(This,wszPath,wszFilespec,bRecursive)
2246#define IVssCreateWriterMetadata_AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags) (This)->lpVtbl->AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags)
2247#define IVssCreateWriterMetadata_AddDatabaseFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask) (This)->lpVtbl->AddDatabaseFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask)
2248#define IVssCreateWriterMetadata_AddDatabaseLogFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask) (This)->lpVtbl->AddDatabaseLogFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask)
2249#define IVssCreateWriterMetadata_AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask) (This)->lpVtbl->AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask)
2250#define IVssCreateWriterMetadata_SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired) (This)->lpVtbl->SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired)
2251#define IVssCreateWriterMetadata_AddAlternateLocationMapping(This,wszSourcePath,wszSourceFilespec,bRecursive,wszDestination) (This)->lpVtbl->AddAlternateLocationMapping(This,wszSourcePath,wszSourceFilespec,bRecursive,wszDestination)
2252#define IVssCreateWriterMetadata_AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName) (This)->lpVtbl->AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName)
2253#define IVssCreateWriterMetadata_SetBackupSchema(This,dwSchemaMask) (This)->lpVtbl->SetBackupSchema(This,dwSchemaMask)
2254#define IVssCreateWriterMetadata_GetDocument(This,pDoc) (This)->lpVtbl->GetDocument(This,pDoc)
2255#define IVssCreateWriterMetadata_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
2256#else
2257/*** IVssCreateWriterMetadata methods ***/
2258static inline HRESULT IVssCreateWriterMetadata_AddIncludeFiles(IVssCreateWriterMetadata* This,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszAlternateLocation) {
2259    return This->lpVtbl->AddIncludeFiles(This,wszPath,wszFilespec,bRecursive,wszAlternateLocation);
2260}
2261static inline HRESULT IVssCreateWriterMetadata_AddExcludeFiles(IVssCreateWriterMetadata* This,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive) {
2262    return This->lpVtbl->AddExcludeFiles(This,wszPath,wszFilespec,bRecursive);
2263}
2264static inline HRESULT IVssCreateWriterMetadata_AddComponent(IVssCreateWriterMetadata* This,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszCaption,const BYTE *pbIcon,UINT cbIcon,boolean bRestoreMetadata,boolean bNotifyOnBackupComplete,boolean bSelectable,boolean bSelectableForRestore,DWORD dwComponentFlags) {
2265    return This->lpVtbl->AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags);
2266}
2267static inline HRESULT IVssCreateWriterMetadata_AddDatabaseFiles(IVssCreateWriterMetadata* This,LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) {
2268    return This->lpVtbl->AddDatabaseFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask);
2269}
2270static inline HRESULT IVssCreateWriterMetadata_AddDatabaseLogFiles(IVssCreateWriterMetadata* This,LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) {
2271    return This->lpVtbl->AddDatabaseLogFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask);
2272}
2273static inline HRESULT IVssCreateWriterMetadata_AddFilesToFileGroup(IVssCreateWriterMetadata* This,LPCWSTR wszLogicalPath,LPCWSTR wszGroupName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszAlternateLocation,DWORD dwBackupTypeMask) {
2274    return This->lpVtbl->AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask);
2275}
2276static inline HRESULT IVssCreateWriterMetadata_SetRestoreMethod(IVssCreateWriterMetadata* This,VSS_RESTOREMETHOD_ENUM method,LPCWSTR wszService,LPCWSTR wszUserProcedure,VSS_WRITERRESTORE_ENUM writerRestore,boolean bRebootRequired) {
2277    return This->lpVtbl->SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired);
2278}
2279static inline HRESULT IVssCreateWriterMetadata_AddAlternateLocationMapping(IVssCreateWriterMetadata* This,LPCWSTR wszSourcePath,LPCWSTR wszSourceFilespec,boolean bRecursive,LPCWSTR wszDestination) {
2280    return This->lpVtbl->AddAlternateLocationMapping(This,wszSourcePath,wszSourceFilespec,bRecursive,wszDestination);
2281}
2282static inline HRESULT IVssCreateWriterMetadata_AddComponentDependency(IVssCreateWriterMetadata* This,LPCWSTR wszForLogicalPath,LPCWSTR wszForComponentName,VSS_ID onWriterId,LPCWSTR wszOnLogicalPath,LPCWSTR wszOnComponentName) {
2283    return This->lpVtbl->AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName);
2284}
2285static inline HRESULT IVssCreateWriterMetadata_SetBackupSchema(IVssCreateWriterMetadata* This,DWORD dwSchemaMask) {
2286    return This->lpVtbl->SetBackupSchema(This,dwSchemaMask);
2287}
2288static inline HRESULT IVssCreateWriterMetadata_GetDocument(IVssCreateWriterMetadata* This,IXMLDOMDocument **pDoc) {
2289    return This->lpVtbl->GetDocument(This,pDoc);
2290}
2291static inline HRESULT IVssCreateWriterMetadata_SaveAsXML(IVssCreateWriterMetadata* This,BSTR *pbstrXML) {
2292    return This->lpVtbl->SaveAsXML(This,pbstrXML);
2293}
2294#endif
2295#endif
2296
2297#endif
2298
2299
2300#endif  /* __IVssCreateWriterMetadata_INTERFACE_DEFINED__ */
2301
2302/*****************************************************************************
2303 * IVssCreateWriterMetadataEx interface
2304 */
2305#ifndef __IVssCreateWriterMetadataEx_INTERFACE_DEFINED__
2306#define __IVssCreateWriterMetadataEx_INTERFACE_DEFINED__
2307
2308DEFINE_GUID(IID_IVssCreateWriterMetadataEx, 0x9f21981d, 0xd469, 0x4349, 0xb8,0x07, 0x39,0xe6,0x4e,0x46,0x74,0xe1);
2309#if defined(__cplusplus) && !defined(CINTERFACE)
2310MIDL_INTERFACE("9f21981d-d469-4349-b807-39e64e4674e1")
2311IVssCreateWriterMetadataEx : public IVssCreateWriterMetadata
2312{
2313    virtual HRESULT STDMETHODCALLTYPE AddExcludeFilesFromSnapshot(
2314        LPCWSTR wszPath,
2315        LPCWSTR wszFilespec,
2316        boolean bRecursive) = 0;
2317
2318};
2319#ifdef __CRT_UUID_DECL
2320__CRT_UUID_DECL(IVssCreateWriterMetadataEx, 0x9f21981d, 0xd469, 0x4349, 0xb8,0x07, 0x39,0xe6,0x4e,0x46,0x74,0xe1)
2321#endif
2322#else
2323typedef struct IVssCreateWriterMetadataExVtbl {
2324    BEGIN_INTERFACE
2325
2326    /*** IVssCreateWriterMetadata methods ***/
2327    HRESULT (STDMETHODCALLTYPE *AddIncludeFiles)(
2328        IVssCreateWriterMetadataEx *This,
2329        LPCWSTR wszPath,
2330        LPCWSTR wszFilespec,
2331        boolean bRecursive,
2332        LPCWSTR wszAlternateLocation);
2333
2334    HRESULT (STDMETHODCALLTYPE *AddExcludeFiles)(
2335        IVssCreateWriterMetadataEx *This,
2336        LPCWSTR wszPath,
2337        LPCWSTR wszFilespec,
2338        boolean bRecursive);
2339
2340    HRESULT (STDMETHODCALLTYPE *AddComponent)(
2341        IVssCreateWriterMetadataEx *This,
2342        VSS_COMPONENT_TYPE ct,
2343        LPCWSTR wszLogicalPath,
2344        LPCWSTR wszComponentName,
2345        LPCWSTR wszCaption,
2346        const BYTE *pbIcon,
2347        UINT cbIcon,
2348        boolean bRestoreMetadata,
2349        boolean bNotifyOnBackupComplete,
2350        boolean bSelectable,
2351        boolean bSelectableForRestore,
2352        DWORD dwComponentFlags);
2353
2354    HRESULT (STDMETHODCALLTYPE *AddDatabaseFiles)(
2355        IVssCreateWriterMetadataEx *This,
2356        LPCWSTR wszLogicalPath,
2357        LPCWSTR wszDatabaseName,
2358        LPCWSTR wszPath,
2359        LPCWSTR wszFilespec,
2360        DWORD dwBackupTypeMask);
2361
2362    HRESULT (STDMETHODCALLTYPE *AddDatabaseLogFiles)(
2363        IVssCreateWriterMetadataEx *This,
2364        LPCWSTR wszLogicalPath,
2365        LPCWSTR wszDatabaseName,
2366        LPCWSTR wszPath,
2367        LPCWSTR wszFilespec,
2368        DWORD dwBackupTypeMask);
2369
2370    HRESULT (STDMETHODCALLTYPE *AddFilesToFileGroup)(
2371        IVssCreateWriterMetadataEx *This,
2372        LPCWSTR wszLogicalPath,
2373        LPCWSTR wszGroupName,
2374        LPCWSTR wszPath,
2375        LPCWSTR wszFilespec,
2376        boolean bRecursive,
2377        LPCWSTR wszAlternateLocation,
2378        DWORD dwBackupTypeMask);
2379
2380    HRESULT (STDMETHODCALLTYPE *SetRestoreMethod)(
2381        IVssCreateWriterMetadataEx *This,
2382        VSS_RESTOREMETHOD_ENUM method,
2383        LPCWSTR wszService,
2384        LPCWSTR wszUserProcedure,
2385        VSS_WRITERRESTORE_ENUM writerRestore,
2386        boolean bRebootRequired);
2387
2388    HRESULT (STDMETHODCALLTYPE *AddAlternateLocationMapping)(
2389        IVssCreateWriterMetadataEx *This,
2390        LPCWSTR wszSourcePath,
2391        LPCWSTR wszSourceFilespec,
2392        boolean bRecursive,
2393        LPCWSTR wszDestination);
2394
2395    HRESULT (STDMETHODCALLTYPE *AddComponentDependency)(
2396        IVssCreateWriterMetadataEx *This,
2397        LPCWSTR wszForLogicalPath,
2398        LPCWSTR wszForComponentName,
2399        VSS_ID onWriterId,
2400        LPCWSTR wszOnLogicalPath,
2401        LPCWSTR wszOnComponentName);
2402
2403    HRESULT (STDMETHODCALLTYPE *SetBackupSchema)(
2404        IVssCreateWriterMetadataEx *This,
2405        DWORD dwSchemaMask);
2406
2407    HRESULT (STDMETHODCALLTYPE *GetDocument)(
2408        IVssCreateWriterMetadataEx *This,
2409        IXMLDOMDocument **pDoc);
2410
2411    HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
2412        IVssCreateWriterMetadataEx *This,
2413        BSTR *pbstrXML);
2414
2415    /*** IVssCreateWriterMetadataEx methods ***/
2416    HRESULT (STDMETHODCALLTYPE *AddExcludeFilesFromSnapshot)(
2417        IVssCreateWriterMetadataEx *This,
2418        LPCWSTR wszPath,
2419        LPCWSTR wszFilespec,
2420        boolean bRecursive);
2421
2422    END_INTERFACE
2423} IVssCreateWriterMetadataExVtbl;
2424
2425interface IVssCreateWriterMetadataEx {
2426    CONST_VTBL IVssCreateWriterMetadataExVtbl* lpVtbl;
2427};
2428
2429#ifdef COBJMACROS
2430#ifndef WIDL_C_INLINE_WRAPPERS
2431/*** IVssCreateWriterMetadata methods ***/
2432#define IVssCreateWriterMetadataEx_AddIncludeFiles(This,wszPath,wszFilespec,bRecursive,wszAlternateLocation) (This)->lpVtbl->AddIncludeFiles(This,wszPath,wszFilespec,bRecursive,wszAlternateLocation)
2433#define IVssCreateWriterMetadataEx_AddExcludeFiles(This,wszPath,wszFilespec,bRecursive) (This)->lpVtbl->AddExcludeFiles(This,wszPath,wszFilespec,bRecursive)
2434#define IVssCreateWriterMetadataEx_AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags) (This)->lpVtbl->AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags)
2435#define IVssCreateWriterMetadataEx_AddDatabaseFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask) (This)->lpVtbl->AddDatabaseFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask)
2436#define IVssCreateWriterMetadataEx_AddDatabaseLogFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask) (This)->lpVtbl->AddDatabaseLogFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask)
2437#define IVssCreateWriterMetadataEx_AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask) (This)->lpVtbl->AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask)
2438#define IVssCreateWriterMetadataEx_SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired) (This)->lpVtbl->SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired)
2439#define IVssCreateWriterMetadataEx_AddAlternateLocationMapping(This,wszSourcePath,wszSourceFilespec,bRecursive,wszDestination) (This)->lpVtbl->AddAlternateLocationMapping(This,wszSourcePath,wszSourceFilespec,bRecursive,wszDestination)
2440#define IVssCreateWriterMetadataEx_AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName) (This)->lpVtbl->AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName)
2441#define IVssCreateWriterMetadataEx_SetBackupSchema(This,dwSchemaMask) (This)->lpVtbl->SetBackupSchema(This,dwSchemaMask)
2442#define IVssCreateWriterMetadataEx_GetDocument(This,pDoc) (This)->lpVtbl->GetDocument(This,pDoc)
2443#define IVssCreateWriterMetadataEx_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
2444/*** IVssCreateWriterMetadataEx methods ***/
2445#define IVssCreateWriterMetadataEx_AddExcludeFilesFromSnapshot(This,wszPath,wszFilespec,bRecursive) (This)->lpVtbl->AddExcludeFilesFromSnapshot(This,wszPath,wszFilespec,bRecursive)
2446#else
2447/*** IVssCreateWriterMetadata methods ***/
2448static inline HRESULT IVssCreateWriterMetadataEx_AddIncludeFiles(IVssCreateWriterMetadataEx* This,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszAlternateLocation) {
2449    return This->lpVtbl->AddIncludeFiles(This,wszPath,wszFilespec,bRecursive,wszAlternateLocation);
2450}
2451static inline HRESULT IVssCreateWriterMetadataEx_AddExcludeFiles(IVssCreateWriterMetadataEx* This,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive) {
2452    return This->lpVtbl->AddExcludeFiles(This,wszPath,wszFilespec,bRecursive);
2453}
2454static inline HRESULT IVssCreateWriterMetadataEx_AddComponent(IVssCreateWriterMetadataEx* This,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszCaption,const BYTE *pbIcon,UINT cbIcon,boolean bRestoreMetadata,boolean bNotifyOnBackupComplete,boolean bSelectable,boolean bSelectableForRestore,DWORD dwComponentFlags) {
2455    return This->lpVtbl->AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags);
2456}
2457static inline HRESULT IVssCreateWriterMetadataEx_AddDatabaseFiles(IVssCreateWriterMetadataEx* This,LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) {
2458    return This->lpVtbl->AddDatabaseFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask);
2459}
2460static inline HRESULT IVssCreateWriterMetadataEx_AddDatabaseLogFiles(IVssCreateWriterMetadataEx* This,LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) {
2461    return This->lpVtbl->AddDatabaseLogFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask);
2462}
2463static inline HRESULT IVssCreateWriterMetadataEx_AddFilesToFileGroup(IVssCreateWriterMetadataEx* This,LPCWSTR wszLogicalPath,LPCWSTR wszGroupName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszAlternateLocation,DWORD dwBackupTypeMask) {
2464    return This->lpVtbl->AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask);
2465}
2466static inline HRESULT IVssCreateWriterMetadataEx_SetRestoreMethod(IVssCreateWriterMetadataEx* This,VSS_RESTOREMETHOD_ENUM method,LPCWSTR wszService,LPCWSTR wszUserProcedure,VSS_WRITERRESTORE_ENUM writerRestore,boolean bRebootRequired) {
2467    return This->lpVtbl->SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired);
2468}
2469static inline HRESULT IVssCreateWriterMetadataEx_AddAlternateLocationMapping(IVssCreateWriterMetadataEx* This,LPCWSTR wszSourcePath,LPCWSTR wszSourceFilespec,boolean bRecursive,LPCWSTR wszDestination) {
2470    return This->lpVtbl->AddAlternateLocationMapping(This,wszSourcePath,wszSourceFilespec,bRecursive,wszDestination);
2471}
2472static inline HRESULT IVssCreateWriterMetadataEx_AddComponentDependency(IVssCreateWriterMetadataEx* This,LPCWSTR wszForLogicalPath,LPCWSTR wszForComponentName,VSS_ID onWriterId,LPCWSTR wszOnLogicalPath,LPCWSTR wszOnComponentName) {
2473    return This->lpVtbl->AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName);
2474}
2475static inline HRESULT IVssCreateWriterMetadataEx_SetBackupSchema(IVssCreateWriterMetadataEx* This,DWORD dwSchemaMask) {
2476    return This->lpVtbl->SetBackupSchema(This,dwSchemaMask);
2477}
2478static inline HRESULT IVssCreateWriterMetadataEx_GetDocument(IVssCreateWriterMetadataEx* This,IXMLDOMDocument **pDoc) {
2479    return This->lpVtbl->GetDocument(This,pDoc);
2480}
2481static inline HRESULT IVssCreateWriterMetadataEx_SaveAsXML(IVssCreateWriterMetadataEx* This,BSTR *pbstrXML) {
2482    return This->lpVtbl->SaveAsXML(This,pbstrXML);
2483}
2484/*** IVssCreateWriterMetadataEx methods ***/
2485static inline HRESULT IVssCreateWriterMetadataEx_AddExcludeFilesFromSnapshot(IVssCreateWriterMetadataEx* This,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive) {
2486    return This->lpVtbl->AddExcludeFilesFromSnapshot(This,wszPath,wszFilespec,bRecursive);
2487}
2488#endif
2489#endif
2490
2491#endif
2492
2493
2494#endif  /* __IVssCreateWriterMetadataEx_INTERFACE_DEFINED__ */
2495
2496/*****************************************************************************
2497 * IVssWriterImpl interface
2498 */
2499#ifndef __IVssWriterImpl_INTERFACE_DEFINED__
2500#define __IVssWriterImpl_INTERFACE_DEFINED__
2501
2502DEFINE_GUID(IID_IVssWriterImpl, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
2503#if defined(__cplusplus) && !defined(CINTERFACE)
2504MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
2505IVssWriterImpl : public IUnknown
2506{
2507    virtual HRESULT STDMETHODCALLTYPE Initialize(
2508        VSS_ID writerId,
2509        LPCWSTR wszWriterName,
2510        LPCWSTR wszWriterInstanceName,
2511        DWORD dwMajorVersion,
2512        DWORD dwMinorVersion,
2513        VSS_USAGE_TYPE ut,
2514        VSS_SOURCE_TYPE st,
2515        VSS_APPLICATION_LEVEL nLevel,
2516        DWORD dwTimeout,
2517        VSS_ALTERNATE_WRITER_STATE aws,
2518        boolean bIOThrottlingOnly) = 0;
2519
2520    virtual HRESULT STDMETHODCALLTYPE Subscribe(
2521        DWORD dwSubscribeTimeout,
2522        DWORD dwEventFlags) = 0;
2523
2524    virtual HRESULT STDMETHODCALLTYPE Unsubscribe(
2525        ) = 0;
2526
2527    virtual void STDMETHODCALLTYPE Uninitialize(
2528        ) = 0;
2529
2530    virtual LPCWSTR * STDMETHODCALLTYPE GetCurrentVolumeArray(
2531        ) = 0;
2532
2533    virtual UINT STDMETHODCALLTYPE GetCurrentVolumeCount(
2534        ) = 0;
2535
2536    virtual HRESULT STDMETHODCALLTYPE GetSnapshotDeviceName(
2537        LPCWSTR wszOriginalVolume,
2538        LPCWSTR *ppwszSnapshotDevice) = 0;
2539
2540#ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
2541    virtual VSS_ID* STDMETHODCALLTYPE GetCurrentSnapshotSetId(
2542        VSS_ID *__ret) = 0;
2543    VSS_ID STDMETHODCALLTYPE GetCurrentSnapshotSetId(
2544        )
2545    {
2546        VSS_ID __ret;
2547        return *GetCurrentSnapshotSetId(&__ret);
2548    }
2549#else
2550    virtual VSS_ID STDMETHODCALLTYPE GetCurrentSnapshotSetId(
2551        ) = 0;
2552#endif
2553
2554    virtual LONG STDMETHODCALLTYPE GetContext(
2555        ) = 0;
2556
2557    virtual VSS_APPLICATION_LEVEL STDMETHODCALLTYPE GetCurrentLevel(
2558        ) = 0;
2559
2560    virtual boolean STDMETHODCALLTYPE IsPathAffected(
2561        LPCWSTR wszPath) = 0;
2562
2563    virtual boolean STDMETHODCALLTYPE IsBootableSystemStateBackedUp(
2564        ) = 0;
2565
2566    virtual boolean STDMETHODCALLTYPE AreComponentsSelected(
2567        ) = 0;
2568
2569    virtual VSS_BACKUP_TYPE STDMETHODCALLTYPE GetBackupType(
2570        ) = 0;
2571
2572    virtual VSS_RESTORE_TYPE STDMETHODCALLTYPE GetRestoreType(
2573        ) = 0;
2574
2575    virtual HRESULT STDMETHODCALLTYPE SetWriterFailure(
2576        HRESULT hr) = 0;
2577
2578    virtual boolean STDMETHODCALLTYPE IsPartialFileSupportEnabled(
2579        ) = 0;
2580
2581    virtual HRESULT STDMETHODCALLTYPE InstallAlternateWriter(
2582        VSS_ID idWriter,
2583        CLSID clsid) = 0;
2584
2585    virtual IVssExamineWriterMetadata * STDMETHODCALLTYPE GetIdentityInformation(
2586        ) = 0;
2587
2588    virtual HRESULT STDMETHODCALLTYPE SetWriterFailureEx(
2589        HRESULT hr,
2590        HRESULT hrApplication,
2591        LPCWSTR wszApplicationMessage) = 0;
2592
2593    virtual HRESULT STDMETHODCALLTYPE GetSessionId(
2594        VSS_ID *idSession) = 0;
2595
2596    virtual boolean STDMETHODCALLTYPE IsWriterShuttingDown(
2597        ) = 0;
2598
2599};
2600#ifdef __CRT_UUID_DECL
2601__CRT_UUID_DECL(IVssWriterImpl, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00)
2602#endif
2603#else
2604typedef struct IVssWriterImplVtbl {
2605    BEGIN_INTERFACE
2606
2607    /*** IUnknown methods ***/
2608    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2609        IVssWriterImpl *This,
2610        REFIID riid,
2611        void **ppvObject);
2612
2613    ULONG (STDMETHODCALLTYPE *AddRef)(
2614        IVssWriterImpl *This);
2615
2616    ULONG (STDMETHODCALLTYPE *Release)(
2617        IVssWriterImpl *This);
2618
2619    /*** IVssWriterImpl methods ***/
2620    HRESULT (STDMETHODCALLTYPE *Initialize)(
2621        IVssWriterImpl *This,
2622        VSS_ID writerId,
2623        LPCWSTR wszWriterName,
2624        LPCWSTR wszWriterInstanceName,
2625        DWORD dwMajorVersion,
2626        DWORD dwMinorVersion,
2627        VSS_USAGE_TYPE ut,
2628        VSS_SOURCE_TYPE st,
2629        VSS_APPLICATION_LEVEL nLevel,
2630        DWORD dwTimeout,
2631        VSS_ALTERNATE_WRITER_STATE aws,
2632        boolean bIOThrottlingOnly);
2633
2634    HRESULT (STDMETHODCALLTYPE *Subscribe)(
2635        IVssWriterImpl *This,
2636        DWORD dwSubscribeTimeout,
2637        DWORD dwEventFlags);
2638
2639    HRESULT (STDMETHODCALLTYPE *Unsubscribe)(
2640        IVssWriterImpl *This);
2641
2642    void (STDMETHODCALLTYPE *Uninitialize)(
2643        IVssWriterImpl *This);
2644
2645    LPCWSTR * (STDMETHODCALLTYPE *GetCurrentVolumeArray)(
2646        IVssWriterImpl *This);
2647
2648    UINT (STDMETHODCALLTYPE *GetCurrentVolumeCount)(
2649        IVssWriterImpl *This);
2650
2651    HRESULT (STDMETHODCALLTYPE *GetSnapshotDeviceName)(
2652        IVssWriterImpl *This,
2653        LPCWSTR wszOriginalVolume,
2654        LPCWSTR *ppwszSnapshotDevice);
2655
2656    VSS_ID * (STDMETHODCALLTYPE *GetCurrentSnapshotSetId)(
2657        IVssWriterImpl *This,
2658        VSS_ID *__ret);
2659
2660    LONG (STDMETHODCALLTYPE *GetContext)(
2661        IVssWriterImpl *This);
2662
2663    VSS_APPLICATION_LEVEL (STDMETHODCALLTYPE *GetCurrentLevel)(
2664        IVssWriterImpl *This);
2665
2666    boolean (STDMETHODCALLTYPE *IsPathAffected)(
2667        IVssWriterImpl *This,
2668        LPCWSTR wszPath);
2669
2670    boolean (STDMETHODCALLTYPE *IsBootableSystemStateBackedUp)(
2671        IVssWriterImpl *This);
2672
2673    boolean (STDMETHODCALLTYPE *AreComponentsSelected)(
2674        IVssWriterImpl *This);
2675
2676    VSS_BACKUP_TYPE (STDMETHODCALLTYPE *GetBackupType)(
2677        IVssWriterImpl *This);
2678
2679    VSS_RESTORE_TYPE (STDMETHODCALLTYPE *GetRestoreType)(
2680        IVssWriterImpl *This);
2681
2682    HRESULT (STDMETHODCALLTYPE *SetWriterFailure)(
2683        IVssWriterImpl *This,
2684        HRESULT hr);
2685
2686    boolean (STDMETHODCALLTYPE *IsPartialFileSupportEnabled)(
2687        IVssWriterImpl *This);
2688
2689    HRESULT (STDMETHODCALLTYPE *InstallAlternateWriter)(
2690        IVssWriterImpl *This,
2691        VSS_ID idWriter,
2692        CLSID clsid);
2693
2694    IVssExamineWriterMetadata * (STDMETHODCALLTYPE *GetIdentityInformation)(
2695        IVssWriterImpl *This);
2696
2697    HRESULT (STDMETHODCALLTYPE *SetWriterFailureEx)(
2698        IVssWriterImpl *This,
2699        HRESULT hr,
2700        HRESULT hrApplication,
2701        LPCWSTR wszApplicationMessage);
2702
2703    HRESULT (STDMETHODCALLTYPE *GetSessionId)(
2704        IVssWriterImpl *This,
2705        VSS_ID *idSession);
2706
2707    boolean (STDMETHODCALLTYPE *IsWriterShuttingDown)(
2708        IVssWriterImpl *This);
2709
2710    END_INTERFACE
2711} IVssWriterImplVtbl;
2712
2713interface IVssWriterImpl {
2714    CONST_VTBL IVssWriterImplVtbl* lpVtbl;
2715};
2716
2717#ifdef COBJMACROS
2718#ifndef WIDL_C_INLINE_WRAPPERS
2719/*** IUnknown methods ***/
2720#define IVssWriterImpl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2721#define IVssWriterImpl_AddRef(This) (This)->lpVtbl->AddRef(This)
2722#define IVssWriterImpl_Release(This) (This)->lpVtbl->Release(This)
2723/*** IVssWriterImpl methods ***/
2724#define IVssWriterImpl_Initialize(This,writerId,wszWriterName,wszWriterInstanceName,dwMajorVersion,dwMinorVersion,ut,st,nLevel,dwTimeout,aws,bIOThrottlingOnly) (This)->lpVtbl->Initialize(This,writerId,wszWriterName,wszWriterInstanceName,dwMajorVersion,dwMinorVersion,ut,st,nLevel,dwTimeout,aws,bIOThrottlingOnly)
2725#define IVssWriterImpl_Subscribe(This,dwSubscribeTimeout,dwEventFlags) (This)->lpVtbl->Subscribe(This,dwSubscribeTimeout,dwEventFlags)
2726#define IVssWriterImpl_Unsubscribe(This) (This)->lpVtbl->Unsubscribe(This)
2727#define IVssWriterImpl_Uninitialize(This) (This)->lpVtbl->Uninitialize(This)
2728#define IVssWriterImpl_GetCurrentVolumeArray(This) (This)->lpVtbl->GetCurrentVolumeArray(This)
2729#define IVssWriterImpl_GetCurrentVolumeCount(This) (This)->lpVtbl->GetCurrentVolumeCount(This)
2730#define IVssWriterImpl_GetSnapshotDeviceName(This,wszOriginalVolume,ppwszSnapshotDevice) (This)->lpVtbl->GetSnapshotDeviceName(This,wszOriginalVolume,ppwszSnapshotDevice)
2731#define IVssWriterImpl_GetCurrentSnapshotSetId(This) IVssWriterImpl_GetCurrentSnapshotSetId_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
2732#define IVssWriterImpl_GetContext(This) (This)->lpVtbl->GetContext(This)
2733#define IVssWriterImpl_GetCurrentLevel(This) (This)->lpVtbl->GetCurrentLevel(This)
2734#define IVssWriterImpl_IsPathAffected(This,wszPath) (This)->lpVtbl->IsPathAffected(This,wszPath)
2735#define IVssWriterImpl_IsBootableSystemStateBackedUp(This) (This)->lpVtbl->IsBootableSystemStateBackedUp(This)
2736#define IVssWriterImpl_AreComponentsSelected(This) (This)->lpVtbl->AreComponentsSelected(This)
2737#define IVssWriterImpl_GetBackupType(This) (This)->lpVtbl->GetBackupType(This)
2738#define IVssWriterImpl_GetRestoreType(This) (This)->lpVtbl->GetRestoreType(This)
2739#define IVssWriterImpl_SetWriterFailure(This,hr) (This)->lpVtbl->SetWriterFailure(This,hr)
2740#define IVssWriterImpl_IsPartialFileSupportEnabled(This) (This)->lpVtbl->IsPartialFileSupportEnabled(This)
2741#define IVssWriterImpl_InstallAlternateWriter(This,idWriter,clsid) (This)->lpVtbl->InstallAlternateWriter(This,idWriter,clsid)
2742#define IVssWriterImpl_GetIdentityInformation(This) (This)->lpVtbl->GetIdentityInformation(This)
2743#define IVssWriterImpl_SetWriterFailureEx(This,hr,hrApplication,wszApplicationMessage) (This)->lpVtbl->SetWriterFailureEx(This,hr,hrApplication,wszApplicationMessage)
2744#define IVssWriterImpl_GetSessionId(This,idSession) (This)->lpVtbl->GetSessionId(This,idSession)
2745#define IVssWriterImpl_IsWriterShuttingDown(This) (This)->lpVtbl->IsWriterShuttingDown(This)
2746#else
2747/*** IUnknown methods ***/
2748static inline HRESULT IVssWriterImpl_QueryInterface(IVssWriterImpl* This,REFIID riid,void **ppvObject) {
2749    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2750}
2751static inline ULONG IVssWriterImpl_AddRef(IVssWriterImpl* This) {
2752    return This->lpVtbl->AddRef(This);
2753}
2754static inline ULONG IVssWriterImpl_Release(IVssWriterImpl* This) {
2755    return This->lpVtbl->Release(This);
2756}
2757/*** IVssWriterImpl methods ***/
2758static inline HRESULT IVssWriterImpl_Initialize(IVssWriterImpl* This,VSS_ID writerId,LPCWSTR wszWriterName,LPCWSTR wszWriterInstanceName,DWORD dwMajorVersion,DWORD dwMinorVersion,VSS_USAGE_TYPE ut,VSS_SOURCE_TYPE st,VSS_APPLICATION_LEVEL nLevel,DWORD dwTimeout,VSS_ALTERNATE_WRITER_STATE aws,boolean bIOThrottlingOnly) {
2759    return This->lpVtbl->Initialize(This,writerId,wszWriterName,wszWriterInstanceName,dwMajorVersion,dwMinorVersion,ut,st,nLevel,dwTimeout,aws,bIOThrottlingOnly);
2760}
2761static inline HRESULT IVssWriterImpl_Subscribe(IVssWriterImpl* This,DWORD dwSubscribeTimeout,DWORD dwEventFlags) {
2762    return This->lpVtbl->Subscribe(This,dwSubscribeTimeout,dwEventFlags);
2763}
2764static inline HRESULT IVssWriterImpl_Unsubscribe(IVssWriterImpl* This) {
2765    return This->lpVtbl->Unsubscribe(This);
2766}
2767static inline void IVssWriterImpl_Uninitialize(IVssWriterImpl* This) {
2768    This->lpVtbl->Uninitialize(This);
2769}
2770static inline LPCWSTR * IVssWriterImpl_GetCurrentVolumeArray(IVssWriterImpl* This) {
2771    return This->lpVtbl->GetCurrentVolumeArray(This);
2772}
2773static inline UINT IVssWriterImpl_GetCurrentVolumeCount(IVssWriterImpl* This) {
2774    return This->lpVtbl->GetCurrentVolumeCount(This);
2775}
2776static inline HRESULT IVssWriterImpl_GetSnapshotDeviceName(IVssWriterImpl* This,LPCWSTR wszOriginalVolume,LPCWSTR *ppwszSnapshotDevice) {
2777    return This->lpVtbl->GetSnapshotDeviceName(This,wszOriginalVolume,ppwszSnapshotDevice);
2778}
2779static inline VSS_ID IVssWriterImpl_GetCurrentSnapshotSetId(IVssWriterImpl* This) {
2780    VSS_ID __ret;
2781    return *This->lpVtbl->GetCurrentSnapshotSetId(This,&__ret);
2782}
2783static inline LONG IVssWriterImpl_GetContext(IVssWriterImpl* This) {
2784    return This->lpVtbl->GetContext(This);
2785}
2786static inline VSS_APPLICATION_LEVEL IVssWriterImpl_GetCurrentLevel(IVssWriterImpl* This) {
2787    return This->lpVtbl->GetCurrentLevel(This);
2788}
2789static inline boolean IVssWriterImpl_IsPathAffected(IVssWriterImpl* This,LPCWSTR wszPath) {
2790    return This->lpVtbl->IsPathAffected(This,wszPath);
2791}
2792static inline boolean IVssWriterImpl_IsBootableSystemStateBackedUp(IVssWriterImpl* This) {
2793    return This->lpVtbl->IsBootableSystemStateBackedUp(This);
2794}
2795static inline boolean IVssWriterImpl_AreComponentsSelected(IVssWriterImpl* This) {
2796    return This->lpVtbl->AreComponentsSelected(This);
2797}
2798static inline VSS_BACKUP_TYPE IVssWriterImpl_GetBackupType(IVssWriterImpl* This) {
2799    return This->lpVtbl->GetBackupType(This);
2800}
2801static inline VSS_RESTORE_TYPE IVssWriterImpl_GetRestoreType(IVssWriterImpl* This) {
2802    return This->lpVtbl->GetRestoreType(This);
2803}
2804static inline HRESULT IVssWriterImpl_SetWriterFailure(IVssWriterImpl* This,HRESULT hr) {
2805    return This->lpVtbl->SetWriterFailure(This,hr);
2806}
2807static inline boolean IVssWriterImpl_IsPartialFileSupportEnabled(IVssWriterImpl* This) {
2808    return This->lpVtbl->IsPartialFileSupportEnabled(This);
2809}
2810static inline HRESULT IVssWriterImpl_InstallAlternateWriter(IVssWriterImpl* This,VSS_ID idWriter,CLSID clsid) {
2811    return This->lpVtbl->InstallAlternateWriter(This,idWriter,clsid);
2812}
2813static inline IVssExamineWriterMetadata * IVssWriterImpl_GetIdentityInformation(IVssWriterImpl* This) {
2814    return This->lpVtbl->GetIdentityInformation(This);
2815}
2816static inline HRESULT IVssWriterImpl_SetWriterFailureEx(IVssWriterImpl* This,HRESULT hr,HRESULT hrApplication,LPCWSTR wszApplicationMessage) {
2817    return This->lpVtbl->SetWriterFailureEx(This,hr,hrApplication,wszApplicationMessage);
2818}
2819static inline HRESULT IVssWriterImpl_GetSessionId(IVssWriterImpl* This,VSS_ID *idSession) {
2820    return This->lpVtbl->GetSessionId(This,idSession);
2821}
2822static inline boolean IVssWriterImpl_IsWriterShuttingDown(IVssWriterImpl* This) {
2823    return This->lpVtbl->IsWriterShuttingDown(This);
2824}
2825#endif
2826#endif
2827
2828#endif
2829
2830
2831#endif  /* __IVssWriterImpl_INTERFACE_DEFINED__ */
2832
2833/*****************************************************************************
2834 * IVssCreateExpressWriterMetadata interface
2835 */
2836#ifndef __IVssCreateExpressWriterMetadata_INTERFACE_DEFINED__
2837#define __IVssCreateExpressWriterMetadata_INTERFACE_DEFINED__
2838
2839DEFINE_GUID(IID_IVssCreateExpressWriterMetadata, 0x9c772e77, 0xb26e, 0x427f, 0x92,0xdd, 0xc9,0x96,0xf4,0x1e,0xa5,0xe3);
2840#if defined(__cplusplus) && !defined(CINTERFACE)
2841MIDL_INTERFACE("9c772e77-b26e-427f-92dd-c996f41ea5e3")
2842IVssCreateExpressWriterMetadata : public IUnknown
2843{
2844    virtual HRESULT STDMETHODCALLTYPE AddExcludeFiles(
2845        LPCWSTR wszPath,
2846        LPCWSTR wszFilespec,
2847        boolean bRecursive) = 0;
2848
2849    virtual HRESULT STDMETHODCALLTYPE AddComponent(
2850        VSS_COMPONENT_TYPE ct,
2851        LPCWSTR wszLogicalPath,
2852        LPCWSTR wszComponentName,
2853        LPCWSTR wszCaption,
2854        const BYTE *pbIcon,
2855        UINT cbIcon,
2856        boolean bRestoreMetadata,
2857        boolean bNotifyOnBackupComplete,
2858        boolean bSelectable,
2859        boolean bSelectableForRestore = 0,
2860        DWORD dwComponentFlags = 0) = 0;
2861
2862    virtual HRESULT STDMETHODCALLTYPE AddFilesToFileGroup(
2863        LPCWSTR wszLogicalPath,
2864        LPCWSTR wszGroupName,
2865        LPCWSTR wszPath,
2866        LPCWSTR wszFilespec,
2867        boolean bRecursive,
2868        LPCWSTR wszAlternateLocation,
2869        DWORD dwBackupTypeMask = VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED) = 0;
2870
2871    virtual HRESULT STDMETHODCALLTYPE SetRestoreMethod(
2872        VSS_RESTOREMETHOD_ENUM method,
2873        LPCWSTR wszService,
2874        LPCWSTR wszUserProcedure,
2875        VSS_WRITERRESTORE_ENUM writerRestore,
2876        boolean bRebootRequired) = 0;
2877
2878    virtual HRESULT STDMETHODCALLTYPE AddComponentDependency(
2879        LPCWSTR wszForLogicalPath,
2880        LPCWSTR wszForComponentName,
2881        VSS_ID onWriterId,
2882        LPCWSTR wszOnLogicalPath,
2883        LPCWSTR wszOnComponentName) = 0;
2884
2885    virtual HRESULT STDMETHODCALLTYPE SetBackupSchema(
2886        DWORD dwSchemaMask) = 0;
2887
2888    virtual HRESULT STDMETHODCALLTYPE SaveAsXML(
2889        BSTR *pbstrXML) = 0;
2890
2891};
2892#ifdef __CRT_UUID_DECL
2893__CRT_UUID_DECL(IVssCreateExpressWriterMetadata, 0x9c772e77, 0xb26e, 0x427f, 0x92,0xdd, 0xc9,0x96,0xf4,0x1e,0xa5,0xe3)
2894#endif
2895#else
2896typedef struct IVssCreateExpressWriterMetadataVtbl {
2897    BEGIN_INTERFACE
2898
2899    /*** IUnknown methods ***/
2900    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2901        IVssCreateExpressWriterMetadata *This,
2902        REFIID riid,
2903        void **ppvObject);
2904
2905    ULONG (STDMETHODCALLTYPE *AddRef)(
2906        IVssCreateExpressWriterMetadata *This);
2907
2908    ULONG (STDMETHODCALLTYPE *Release)(
2909        IVssCreateExpressWriterMetadata *This);
2910
2911    /*** IVssCreateExpressWriterMetadata methods ***/
2912    HRESULT (STDMETHODCALLTYPE *AddExcludeFiles)(
2913        IVssCreateExpressWriterMetadata *This,
2914        LPCWSTR wszPath,
2915        LPCWSTR wszFilespec,
2916        boolean bRecursive);
2917
2918    HRESULT (STDMETHODCALLTYPE *AddComponent)(
2919        IVssCreateExpressWriterMetadata *This,
2920        VSS_COMPONENT_TYPE ct,
2921        LPCWSTR wszLogicalPath,
2922        LPCWSTR wszComponentName,
2923        LPCWSTR wszCaption,
2924        const BYTE *pbIcon,
2925        UINT cbIcon,
2926        boolean bRestoreMetadata,
2927        boolean bNotifyOnBackupComplete,
2928        boolean bSelectable,
2929        boolean bSelectableForRestore,
2930        DWORD dwComponentFlags);
2931
2932    HRESULT (STDMETHODCALLTYPE *AddFilesToFileGroup)(
2933        IVssCreateExpressWriterMetadata *This,
2934        LPCWSTR wszLogicalPath,
2935        LPCWSTR wszGroupName,
2936        LPCWSTR wszPath,
2937        LPCWSTR wszFilespec,
2938        boolean bRecursive,
2939        LPCWSTR wszAlternateLocation,
2940        DWORD dwBackupTypeMask);
2941
2942    HRESULT (STDMETHODCALLTYPE *SetRestoreMethod)(
2943        IVssCreateExpressWriterMetadata *This,
2944        VSS_RESTOREMETHOD_ENUM method,
2945        LPCWSTR wszService,
2946        LPCWSTR wszUserProcedure,
2947        VSS_WRITERRESTORE_ENUM writerRestore,
2948        boolean bRebootRequired);
2949
2950    HRESULT (STDMETHODCALLTYPE *AddComponentDependency)(
2951        IVssCreateExpressWriterMetadata *This,
2952        LPCWSTR wszForLogicalPath,
2953        LPCWSTR wszForComponentName,
2954        VSS_ID onWriterId,
2955        LPCWSTR wszOnLogicalPath,
2956        LPCWSTR wszOnComponentName);
2957
2958    HRESULT (STDMETHODCALLTYPE *SetBackupSchema)(
2959        IVssCreateExpressWriterMetadata *This,
2960        DWORD dwSchemaMask);
2961
2962    HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
2963        IVssCreateExpressWriterMetadata *This,
2964        BSTR *pbstrXML);
2965
2966    END_INTERFACE
2967} IVssCreateExpressWriterMetadataVtbl;
2968
2969interface IVssCreateExpressWriterMetadata {
2970    CONST_VTBL IVssCreateExpressWriterMetadataVtbl* lpVtbl;
2971};
2972
2973#ifdef COBJMACROS
2974#ifndef WIDL_C_INLINE_WRAPPERS
2975/*** IUnknown methods ***/
2976#define IVssCreateExpressWriterMetadata_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2977#define IVssCreateExpressWriterMetadata_AddRef(This) (This)->lpVtbl->AddRef(This)
2978#define IVssCreateExpressWriterMetadata_Release(This) (This)->lpVtbl->Release(This)
2979/*** IVssCreateExpressWriterMetadata methods ***/
2980#define IVssCreateExpressWriterMetadata_AddExcludeFiles(This,wszPath,wszFilespec,bRecursive) (This)->lpVtbl->AddExcludeFiles(This,wszPath,wszFilespec,bRecursive)
2981#define IVssCreateExpressWriterMetadata_AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags) (This)->lpVtbl->AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags)
2982#define IVssCreateExpressWriterMetadata_AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask) (This)->lpVtbl->AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask)
2983#define IVssCreateExpressWriterMetadata_SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired) (This)->lpVtbl->SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired)
2984#define IVssCreateExpressWriterMetadata_AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName) (This)->lpVtbl->AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName)
2985#define IVssCreateExpressWriterMetadata_SetBackupSchema(This,dwSchemaMask) (This)->lpVtbl->SetBackupSchema(This,dwSchemaMask)
2986#define IVssCreateExpressWriterMetadata_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
2987#else
2988/*** IUnknown methods ***/
2989static inline HRESULT IVssCreateExpressWriterMetadata_QueryInterface(IVssCreateExpressWriterMetadata* This,REFIID riid,void **ppvObject) {
2990    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2991}
2992static inline ULONG IVssCreateExpressWriterMetadata_AddRef(IVssCreateExpressWriterMetadata* This) {
2993    return This->lpVtbl->AddRef(This);
2994}
2995static inline ULONG IVssCreateExpressWriterMetadata_Release(IVssCreateExpressWriterMetadata* This) {
2996    return This->lpVtbl->Release(This);
2997}
2998/*** IVssCreateExpressWriterMetadata methods ***/
2999static inline HRESULT IVssCreateExpressWriterMetadata_AddExcludeFiles(IVssCreateExpressWriterMetadata* This,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive) {
3000    return This->lpVtbl->AddExcludeFiles(This,wszPath,wszFilespec,bRecursive);
3001}
3002static inline HRESULT IVssCreateExpressWriterMetadata_AddComponent(IVssCreateExpressWriterMetadata* This,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszCaption,const BYTE *pbIcon,UINT cbIcon,boolean bRestoreMetadata,boolean bNotifyOnBackupComplete,boolean bSelectable,boolean bSelectableForRestore,DWORD dwComponentFlags) {
3003    return This->lpVtbl->AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags);
3004}
3005static inline HRESULT IVssCreateExpressWriterMetadata_AddFilesToFileGroup(IVssCreateExpressWriterMetadata* This,LPCWSTR wszLogicalPath,LPCWSTR wszGroupName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszAlternateLocation,DWORD dwBackupTypeMask) {
3006    return This->lpVtbl->AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask);
3007}
3008static inline HRESULT IVssCreateExpressWriterMetadata_SetRestoreMethod(IVssCreateExpressWriterMetadata* This,VSS_RESTOREMETHOD_ENUM method,LPCWSTR wszService,LPCWSTR wszUserProcedure,VSS_WRITERRESTORE_ENUM writerRestore,boolean bRebootRequired) {
3009    return This->lpVtbl->SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired);
3010}
3011static inline HRESULT IVssCreateExpressWriterMetadata_AddComponentDependency(IVssCreateExpressWriterMetadata* This,LPCWSTR wszForLogicalPath,LPCWSTR wszForComponentName,VSS_ID onWriterId,LPCWSTR wszOnLogicalPath,LPCWSTR wszOnComponentName) {
3012    return This->lpVtbl->AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName);
3013}
3014static inline HRESULT IVssCreateExpressWriterMetadata_SetBackupSchema(IVssCreateExpressWriterMetadata* This,DWORD dwSchemaMask) {
3015    return This->lpVtbl->SetBackupSchema(This,dwSchemaMask);
3016}
3017static inline HRESULT IVssCreateExpressWriterMetadata_SaveAsXML(IVssCreateExpressWriterMetadata* This,BSTR *pbstrXML) {
3018    return This->lpVtbl->SaveAsXML(This,pbstrXML);
3019}
3020#endif
3021#endif
3022
3023#endif
3024
3025
3026#endif  /* __IVssCreateExpressWriterMetadata_INTERFACE_DEFINED__ */
3027
3028/*****************************************************************************
3029 * IVssExpressWriter interface
3030 */
3031#ifndef __IVssExpressWriter_INTERFACE_DEFINED__
3032#define __IVssExpressWriter_INTERFACE_DEFINED__
3033
3034DEFINE_GUID(IID_IVssExpressWriter, 0xe33affdc, 0x59c7, 0x47b1, 0x97,0xd5, 0x42,0x66,0x59,0x8f,0x62,0x35);
3035#if defined(__cplusplus) && !defined(CINTERFACE)
3036MIDL_INTERFACE("e33affdc-59c7-47b1-97d5-4266598f6235")
3037IVssExpressWriter : public IUnknown
3038{
3039    virtual HRESULT STDMETHODCALLTYPE CreateMetadata(
3040        VSS_ID writerId,
3041        LPCWSTR writerName,
3042        VSS_USAGE_TYPE usageType,
3043        DWORD versionMajor,
3044        DWORD versionMinor,
3045        DWORD reserved,
3046        IVssCreateExpressWriterMetadata **ppMetadata) = 0;
3047
3048    virtual HRESULT STDMETHODCALLTYPE LoadMetadata(
3049        LPCWSTR metadata,
3050        DWORD reserved) = 0;
3051
3052    virtual HRESULT STDMETHODCALLTYPE Register(
3053        ) = 0;
3054
3055    virtual HRESULT STDMETHODCALLTYPE Unregister(
3056        VSS_ID writerId) = 0;
3057
3058};
3059#ifdef __CRT_UUID_DECL
3060__CRT_UUID_DECL(IVssExpressWriter, 0xe33affdc, 0x59c7, 0x47b1, 0x97,0xd5, 0x42,0x66,0x59,0x8f,0x62,0x35)
3061#endif
3062#else
3063typedef struct IVssExpressWriterVtbl {
3064    BEGIN_INTERFACE
3065
3066    /*** IUnknown methods ***/
3067    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3068        IVssExpressWriter *This,
3069        REFIID riid,
3070        void **ppvObject);
3071
3072    ULONG (STDMETHODCALLTYPE *AddRef)(
3073        IVssExpressWriter *This);
3074
3075    ULONG (STDMETHODCALLTYPE *Release)(
3076        IVssExpressWriter *This);
3077
3078    /*** IVssExpressWriter methods ***/
3079    HRESULT (STDMETHODCALLTYPE *CreateMetadata)(
3080        IVssExpressWriter *This,
3081        VSS_ID writerId,
3082        LPCWSTR writerName,
3083        VSS_USAGE_TYPE usageType,
3084        DWORD versionMajor,
3085        DWORD versionMinor,
3086        DWORD reserved,
3087        IVssCreateExpressWriterMetadata **ppMetadata);
3088
3089    HRESULT (STDMETHODCALLTYPE *LoadMetadata)(
3090        IVssExpressWriter *This,
3091        LPCWSTR metadata,
3092        DWORD reserved);
3093
3094    HRESULT (STDMETHODCALLTYPE *Register)(
3095        IVssExpressWriter *This);
3096
3097    HRESULT (STDMETHODCALLTYPE *Unregister)(
3098        IVssExpressWriter *This,
3099        VSS_ID writerId);
3100
3101    END_INTERFACE
3102} IVssExpressWriterVtbl;
3103
3104interface IVssExpressWriter {
3105    CONST_VTBL IVssExpressWriterVtbl* lpVtbl;
3106};
3107
3108#ifdef COBJMACROS
3109#ifndef WIDL_C_INLINE_WRAPPERS
3110/*** IUnknown methods ***/
3111#define IVssExpressWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3112#define IVssExpressWriter_AddRef(This) (This)->lpVtbl->AddRef(This)
3113#define IVssExpressWriter_Release(This) (This)->lpVtbl->Release(This)
3114/*** IVssExpressWriter methods ***/
3115#define IVssExpressWriter_CreateMetadata(This,writerId,writerName,usageType,versionMajor,versionMinor,reserved,ppMetadata) (This)->lpVtbl->CreateMetadata(This,writerId,writerName,usageType,versionMajor,versionMinor,reserved,ppMetadata)
3116#define IVssExpressWriter_LoadMetadata(This,metadata,reserved) (This)->lpVtbl->LoadMetadata(This,metadata,reserved)
3117#define IVssExpressWriter_Register(This) (This)->lpVtbl->Register(This)
3118#define IVssExpressWriter_Unregister(This,writerId) (This)->lpVtbl->Unregister(This,writerId)
3119#else
3120/*** IUnknown methods ***/
3121static inline HRESULT IVssExpressWriter_QueryInterface(IVssExpressWriter* This,REFIID riid,void **ppvObject) {
3122    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3123}
3124static inline ULONG IVssExpressWriter_AddRef(IVssExpressWriter* This) {
3125    return This->lpVtbl->AddRef(This);
3126}
3127static inline ULONG IVssExpressWriter_Release(IVssExpressWriter* This) {
3128    return This->lpVtbl->Release(This);
3129}
3130/*** IVssExpressWriter methods ***/
3131static inline HRESULT IVssExpressWriter_CreateMetadata(IVssExpressWriter* This,VSS_ID writerId,LPCWSTR writerName,VSS_USAGE_TYPE usageType,DWORD versionMajor,DWORD versionMinor,DWORD reserved,IVssCreateExpressWriterMetadata **ppMetadata) {
3132    return This->lpVtbl->CreateMetadata(This,writerId,writerName,usageType,versionMajor,versionMinor,reserved,ppMetadata);
3133}
3134static inline HRESULT IVssExpressWriter_LoadMetadata(IVssExpressWriter* This,LPCWSTR metadata,DWORD reserved) {
3135    return This->lpVtbl->LoadMetadata(This,metadata,reserved);
3136}
3137static inline HRESULT IVssExpressWriter_Register(IVssExpressWriter* This) {
3138    return This->lpVtbl->Register(This);
3139}
3140static inline HRESULT IVssExpressWriter_Unregister(IVssExpressWriter* This,VSS_ID writerId) {
3141    return This->lpVtbl->Unregister(This,writerId);
3142}
3143#endif
3144#endif
3145
3146#endif
3147
3148
3149#endif  /* __IVssExpressWriter_INTERFACE_DEFINED__ */
3150
3151#endif /* WINAPI_PARTITION_DESKTOP */
3152/* Begin additional prototypes for all interfaces */
3153
3154ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
3155unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
3156unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
3157void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
3158
3159/* End additional prototypes */
3160
3161#ifdef __cplusplus
3162}
3163#endif
3164
3165#endif /* __vswriter_h__ */