master
   1/*** Autogenerated by WIDL 10.4 from include/vsprov.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 __vsprov_h__
  17#define __vsprov_h__
  18
  19/* Forward declarations */
  20
  21#ifndef __IVssSoftwareSnapshotProvider_FWD_DEFINED__
  22#define __IVssSoftwareSnapshotProvider_FWD_DEFINED__
  23typedef interface IVssSoftwareSnapshotProvider IVssSoftwareSnapshotProvider;
  24#ifdef __cplusplus
  25interface IVssSoftwareSnapshotProvider;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IVssProviderCreateSnapshotSet_FWD_DEFINED__
  30#define __IVssProviderCreateSnapshotSet_FWD_DEFINED__
  31typedef interface IVssProviderCreateSnapshotSet IVssProviderCreateSnapshotSet;
  32#ifdef __cplusplus
  33interface IVssProviderCreateSnapshotSet;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IVssProviderNotifications_FWD_DEFINED__
  38#define __IVssProviderNotifications_FWD_DEFINED__
  39typedef interface IVssProviderNotifications IVssProviderNotifications;
  40#ifdef __cplusplus
  41interface IVssProviderNotifications;
  42#endif /* __cplusplus */
  43#endif
  44
  45#ifndef __IVssHardwareSnapshotProvider_FWD_DEFINED__
  46#define __IVssHardwareSnapshotProvider_FWD_DEFINED__
  47typedef interface IVssHardwareSnapshotProvider IVssHardwareSnapshotProvider;
  48#ifdef __cplusplus
  49interface IVssHardwareSnapshotProvider;
  50#endif /* __cplusplus */
  51#endif
  52
  53#ifndef __IVssHardwareSnapshotProviderEx_FWD_DEFINED__
  54#define __IVssHardwareSnapshotProviderEx_FWD_DEFINED__
  55typedef interface IVssHardwareSnapshotProviderEx IVssHardwareSnapshotProviderEx;
  56#ifdef __cplusplus
  57interface IVssHardwareSnapshotProviderEx;
  58#endif /* __cplusplus */
  59#endif
  60
  61#ifndef __IVssFileShareSnapshotProvider_FWD_DEFINED__
  62#define __IVssFileShareSnapshotProvider_FWD_DEFINED__
  63typedef interface IVssFileShareSnapshotProvider IVssFileShareSnapshotProvider;
  64#ifdef __cplusplus
  65interface IVssFileShareSnapshotProvider;
  66#endif /* __cplusplus */
  67#endif
  68
  69/* Headers for imported files */
  70
  71#include <oaidl.h>
  72#include <ocidl.h>
  73#include <vss.h>
  74#include <vdslun.h>
  75
  76#ifdef __cplusplus
  77extern "C" {
  78#endif
  79
  80#include <winapifamily.h>
  81#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  82#ifndef __IVssSnapshotProvider_FWD_DEFINED__
  83#define __IVssSnapshotProvider_FWD_DEFINED__
  84typedef interface IVssSnapshotProvider IVssSnapshotProvider;
  85#ifdef __cplusplus
  86interface IVssSnapshotProvider;
  87#endif /* __cplusplus */
  88#endif
  89
  90#ifndef __IVssProviderNotifications_FWD_DEFINED__
  91#define __IVssProviderNotifications_FWD_DEFINED__
  92typedef interface IVssProviderNotifications IVssProviderNotifications;
  93#ifdef __cplusplus
  94interface IVssProviderNotifications;
  95#endif /* __cplusplus */
  96#endif
  97
  98typedef VSS_PWSZ *PVSS_PWSZ;
  99/*****************************************************************************
 100 * IVssSoftwareSnapshotProvider interface
 101 */
 102#ifndef __IVssSoftwareSnapshotProvider_INTERFACE_DEFINED__
 103#define __IVssSoftwareSnapshotProvider_INTERFACE_DEFINED__
 104
 105DEFINE_GUID(IID_IVssSoftwareSnapshotProvider, 0x609e123e, 0x2c5a, 0x44d3, 0x8f,0x01, 0x0b,0x1d,0x9a,0x47,0xd1,0xff);
 106#if defined(__cplusplus) && !defined(CINTERFACE)
 107MIDL_INTERFACE("609e123e-2c5a-44d3-8f01-0b1d9a47d1ff")
 108IVssSoftwareSnapshotProvider : public IUnknown
 109{
 110    virtual HRESULT STDMETHODCALLTYPE SetContext(
 111        LONG lContext) = 0;
 112
 113    virtual HRESULT STDMETHODCALLTYPE GetSnapshotProperties(
 114        VSS_ID SnapshotId,
 115        VSS_SNAPSHOT_PROP *pProp) = 0;
 116
 117    virtual HRESULT STDMETHODCALLTYPE Query(
 118        VSS_ID QueriedObjectId,
 119        VSS_OBJECT_TYPE eQueriedObjectType,
 120        VSS_OBJECT_TYPE eReturnedObjectsType,
 121        IVssEnumObject **ppEnum) = 0;
 122
 123    virtual HRESULT STDMETHODCALLTYPE DeleteSnapshots(
 124        VSS_ID SourceObjectId,
 125        VSS_OBJECT_TYPE eSourceObjectType,
 126        WINBOOL bForceDelete,
 127        LONG *plDeletedSnapshots,
 128        VSS_ID *pNondeletedSnapshotID) = 0;
 129
 130    virtual HRESULT STDMETHODCALLTYPE BeginPrepareSnapshot(
 131        VSS_ID SnapshotSetId,
 132        VSS_ID SnapshotId,
 133        VSS_PWSZ pwszVolumeName,
 134        LONG lNewContext) = 0;
 135
 136    virtual HRESULT STDMETHODCALLTYPE IsVolumeSupported(
 137        VSS_PWSZ pwszVolumeName,
 138        WINBOOL *pbSupportedByThisProvider) = 0;
 139
 140    virtual HRESULT STDMETHODCALLTYPE IsVolumeSnapshotted(
 141        VSS_PWSZ pwszVolumeName,
 142        WINBOOL *pbSnapshotsPresent,
 143        LONG *plSnapshotCompatibility) = 0;
 144
 145    virtual HRESULT STDMETHODCALLTYPE SetSnapshotProperty(
 146        VSS_ID SnapshotId,
 147        VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId,
 148        VARIANT vProperty) = 0;
 149
 150    virtual HRESULT STDMETHODCALLTYPE RevertToSnapshot(
 151        VSS_ID SnapshotId) = 0;
 152
 153    virtual HRESULT STDMETHODCALLTYPE QueryRevertStatus(
 154        VSS_PWSZ pwszVolume,
 155        IVssAsync **ppAsync) = 0;
 156
 157};
 158#ifdef __CRT_UUID_DECL
 159__CRT_UUID_DECL(IVssSoftwareSnapshotProvider, 0x609e123e, 0x2c5a, 0x44d3, 0x8f,0x01, 0x0b,0x1d,0x9a,0x47,0xd1,0xff)
 160#endif
 161#else
 162typedef struct IVssSoftwareSnapshotProviderVtbl {
 163    BEGIN_INTERFACE
 164
 165    /*** IUnknown methods ***/
 166    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 167        IVssSoftwareSnapshotProvider *This,
 168        REFIID riid,
 169        void **ppvObject);
 170
 171    ULONG (STDMETHODCALLTYPE *AddRef)(
 172        IVssSoftwareSnapshotProvider *This);
 173
 174    ULONG (STDMETHODCALLTYPE *Release)(
 175        IVssSoftwareSnapshotProvider *This);
 176
 177    /*** IVssSoftwareSnapshotProvider methods ***/
 178    HRESULT (STDMETHODCALLTYPE *SetContext)(
 179        IVssSoftwareSnapshotProvider *This,
 180        LONG lContext);
 181
 182    HRESULT (STDMETHODCALLTYPE *GetSnapshotProperties)(
 183        IVssSoftwareSnapshotProvider *This,
 184        VSS_ID SnapshotId,
 185        VSS_SNAPSHOT_PROP *pProp);
 186
 187    HRESULT (STDMETHODCALLTYPE *Query)(
 188        IVssSoftwareSnapshotProvider *This,
 189        VSS_ID QueriedObjectId,
 190        VSS_OBJECT_TYPE eQueriedObjectType,
 191        VSS_OBJECT_TYPE eReturnedObjectsType,
 192        IVssEnumObject **ppEnum);
 193
 194    HRESULT (STDMETHODCALLTYPE *DeleteSnapshots)(
 195        IVssSoftwareSnapshotProvider *This,
 196        VSS_ID SourceObjectId,
 197        VSS_OBJECT_TYPE eSourceObjectType,
 198        WINBOOL bForceDelete,
 199        LONG *plDeletedSnapshots,
 200        VSS_ID *pNondeletedSnapshotID);
 201
 202    HRESULT (STDMETHODCALLTYPE *BeginPrepareSnapshot)(
 203        IVssSoftwareSnapshotProvider *This,
 204        VSS_ID SnapshotSetId,
 205        VSS_ID SnapshotId,
 206        VSS_PWSZ pwszVolumeName,
 207        LONG lNewContext);
 208
 209    HRESULT (STDMETHODCALLTYPE *IsVolumeSupported)(
 210        IVssSoftwareSnapshotProvider *This,
 211        VSS_PWSZ pwszVolumeName,
 212        WINBOOL *pbSupportedByThisProvider);
 213
 214    HRESULT (STDMETHODCALLTYPE *IsVolumeSnapshotted)(
 215        IVssSoftwareSnapshotProvider *This,
 216        VSS_PWSZ pwszVolumeName,
 217        WINBOOL *pbSnapshotsPresent,
 218        LONG *plSnapshotCompatibility);
 219
 220    HRESULT (STDMETHODCALLTYPE *SetSnapshotProperty)(
 221        IVssSoftwareSnapshotProvider *This,
 222        VSS_ID SnapshotId,
 223        VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId,
 224        VARIANT vProperty);
 225
 226    HRESULT (STDMETHODCALLTYPE *RevertToSnapshot)(
 227        IVssSoftwareSnapshotProvider *This,
 228        VSS_ID SnapshotId);
 229
 230    HRESULT (STDMETHODCALLTYPE *QueryRevertStatus)(
 231        IVssSoftwareSnapshotProvider *This,
 232        VSS_PWSZ pwszVolume,
 233        IVssAsync **ppAsync);
 234
 235    END_INTERFACE
 236} IVssSoftwareSnapshotProviderVtbl;
 237
 238interface IVssSoftwareSnapshotProvider {
 239    CONST_VTBL IVssSoftwareSnapshotProviderVtbl* lpVtbl;
 240};
 241
 242#ifdef COBJMACROS
 243#ifndef WIDL_C_INLINE_WRAPPERS
 244/*** IUnknown methods ***/
 245#define IVssSoftwareSnapshotProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 246#define IVssSoftwareSnapshotProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
 247#define IVssSoftwareSnapshotProvider_Release(This) (This)->lpVtbl->Release(This)
 248/*** IVssSoftwareSnapshotProvider methods ***/
 249#define IVssSoftwareSnapshotProvider_SetContext(This,lContext) (This)->lpVtbl->SetContext(This,lContext)
 250#define IVssSoftwareSnapshotProvider_GetSnapshotProperties(This,SnapshotId,pProp) (This)->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp)
 251#define IVssSoftwareSnapshotProvider_Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum) (This)->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum)
 252#define IVssSoftwareSnapshotProvider_DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID) (This)->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID)
 253#define IVssSoftwareSnapshotProvider_BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,pwszVolumeName,lNewContext) (This)->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,pwszVolumeName,lNewContext)
 254#define IVssSoftwareSnapshotProvider_IsVolumeSupported(This,pwszVolumeName,pbSupportedByThisProvider) (This)->lpVtbl->IsVolumeSupported(This,pwszVolumeName,pbSupportedByThisProvider)
 255#define IVssSoftwareSnapshotProvider_IsVolumeSnapshotted(This,pwszVolumeName,pbSnapshotsPresent,plSnapshotCompatibility) (This)->lpVtbl->IsVolumeSnapshotted(This,pwszVolumeName,pbSnapshotsPresent,plSnapshotCompatibility)
 256#define IVssSoftwareSnapshotProvider_SetSnapshotProperty(This,SnapshotId,eSnapshotPropertyId,vProperty) (This)->lpVtbl->SetSnapshotProperty(This,SnapshotId,eSnapshotPropertyId,vProperty)
 257#define IVssSoftwareSnapshotProvider_RevertToSnapshot(This,SnapshotId) (This)->lpVtbl->RevertToSnapshot(This,SnapshotId)
 258#define IVssSoftwareSnapshotProvider_QueryRevertStatus(This,pwszVolume,ppAsync) (This)->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync)
 259#else
 260/*** IUnknown methods ***/
 261static inline HRESULT IVssSoftwareSnapshotProvider_QueryInterface(IVssSoftwareSnapshotProvider* This,REFIID riid,void **ppvObject) {
 262    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 263}
 264static inline ULONG IVssSoftwareSnapshotProvider_AddRef(IVssSoftwareSnapshotProvider* This) {
 265    return This->lpVtbl->AddRef(This);
 266}
 267static inline ULONG IVssSoftwareSnapshotProvider_Release(IVssSoftwareSnapshotProvider* This) {
 268    return This->lpVtbl->Release(This);
 269}
 270/*** IVssSoftwareSnapshotProvider methods ***/
 271static inline HRESULT IVssSoftwareSnapshotProvider_SetContext(IVssSoftwareSnapshotProvider* This,LONG lContext) {
 272    return This->lpVtbl->SetContext(This,lContext);
 273}
 274static inline HRESULT IVssSoftwareSnapshotProvider_GetSnapshotProperties(IVssSoftwareSnapshotProvider* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
 275    return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
 276}
 277static inline HRESULT IVssSoftwareSnapshotProvider_Query(IVssSoftwareSnapshotProvider* This,VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) {
 278    return This->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum);
 279}
 280static inline HRESULT IVssSoftwareSnapshotProvider_DeleteSnapshots(IVssSoftwareSnapshotProvider* This,VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,WINBOOL bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) {
 281    return This->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID);
 282}
 283static inline HRESULT IVssSoftwareSnapshotProvider_BeginPrepareSnapshot(IVssSoftwareSnapshotProvider* This,VSS_ID SnapshotSetId,VSS_ID SnapshotId,VSS_PWSZ pwszVolumeName,LONG lNewContext) {
 284    return This->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,pwszVolumeName,lNewContext);
 285}
 286static inline HRESULT IVssSoftwareSnapshotProvider_IsVolumeSupported(IVssSoftwareSnapshotProvider* This,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
 287    return This->lpVtbl->IsVolumeSupported(This,pwszVolumeName,pbSupportedByThisProvider);
 288}
 289static inline HRESULT IVssSoftwareSnapshotProvider_IsVolumeSnapshotted(IVssSoftwareSnapshotProvider* This,VSS_PWSZ pwszVolumeName,WINBOOL *pbSnapshotsPresent,LONG *plSnapshotCompatibility) {
 290    return This->lpVtbl->IsVolumeSnapshotted(This,pwszVolumeName,pbSnapshotsPresent,plSnapshotCompatibility);
 291}
 292static inline HRESULT IVssSoftwareSnapshotProvider_SetSnapshotProperty(IVssSoftwareSnapshotProvider* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId,VARIANT vProperty) {
 293    return This->lpVtbl->SetSnapshotProperty(This,SnapshotId,eSnapshotPropertyId,vProperty);
 294}
 295static inline HRESULT IVssSoftwareSnapshotProvider_RevertToSnapshot(IVssSoftwareSnapshotProvider* This,VSS_ID SnapshotId) {
 296    return This->lpVtbl->RevertToSnapshot(This,SnapshotId);
 297}
 298static inline HRESULT IVssSoftwareSnapshotProvider_QueryRevertStatus(IVssSoftwareSnapshotProvider* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
 299    return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
 300}
 301#endif
 302#endif
 303
 304#endif
 305
 306
 307#endif  /* __IVssSoftwareSnapshotProvider_INTERFACE_DEFINED__ */
 308
 309/*****************************************************************************
 310 * IVssProviderCreateSnapshotSet interface
 311 */
 312#ifndef __IVssProviderCreateSnapshotSet_INTERFACE_DEFINED__
 313#define __IVssProviderCreateSnapshotSet_INTERFACE_DEFINED__
 314
 315DEFINE_GUID(IID_IVssProviderCreateSnapshotSet, 0x5f894e5b, 0x1e39, 0x4778, 0x8e,0x23, 0x9a,0xba,0xd9,0xf0,0xe0,0x8c);
 316#if defined(__cplusplus) && !defined(CINTERFACE)
 317MIDL_INTERFACE("5f894e5b-1e39-4778-8e23-9abad9f0e08c")
 318IVssProviderCreateSnapshotSet : public IUnknown
 319{
 320    virtual HRESULT STDMETHODCALLTYPE EndPrepareSnapshots(
 321        VSS_ID SnapshotSetId) = 0;
 322
 323    virtual HRESULT STDMETHODCALLTYPE PreCommitSnapshots(
 324        VSS_ID SnapshotSetId) = 0;
 325
 326    virtual HRESULT STDMETHODCALLTYPE CommitSnapshots(
 327        VSS_ID SnapshotSetId) = 0;
 328
 329    virtual HRESULT STDMETHODCALLTYPE PostCommitSnapshots(
 330        VSS_ID SnapshotSetId,
 331        LONG lSnapshotsCount) = 0;
 332
 333    virtual HRESULT STDMETHODCALLTYPE PreFinalCommitSnapshots(
 334        VSS_ID SnapshotSetId) = 0;
 335
 336    virtual HRESULT STDMETHODCALLTYPE PostFinalCommitSnapshots(
 337        VSS_ID SnapshotSetId) = 0;
 338
 339    virtual HRESULT STDMETHODCALLTYPE AbortSnapshots(
 340        VSS_ID SnapshotSetId) = 0;
 341
 342};
 343#ifdef __CRT_UUID_DECL
 344__CRT_UUID_DECL(IVssProviderCreateSnapshotSet, 0x5f894e5b, 0x1e39, 0x4778, 0x8e,0x23, 0x9a,0xba,0xd9,0xf0,0xe0,0x8c)
 345#endif
 346#else
 347typedef struct IVssProviderCreateSnapshotSetVtbl {
 348    BEGIN_INTERFACE
 349
 350    /*** IUnknown methods ***/
 351    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 352        IVssProviderCreateSnapshotSet *This,
 353        REFIID riid,
 354        void **ppvObject);
 355
 356    ULONG (STDMETHODCALLTYPE *AddRef)(
 357        IVssProviderCreateSnapshotSet *This);
 358
 359    ULONG (STDMETHODCALLTYPE *Release)(
 360        IVssProviderCreateSnapshotSet *This);
 361
 362    /*** IVssProviderCreateSnapshotSet methods ***/
 363    HRESULT (STDMETHODCALLTYPE *EndPrepareSnapshots)(
 364        IVssProviderCreateSnapshotSet *This,
 365        VSS_ID SnapshotSetId);
 366
 367    HRESULT (STDMETHODCALLTYPE *PreCommitSnapshots)(
 368        IVssProviderCreateSnapshotSet *This,
 369        VSS_ID SnapshotSetId);
 370
 371    HRESULT (STDMETHODCALLTYPE *CommitSnapshots)(
 372        IVssProviderCreateSnapshotSet *This,
 373        VSS_ID SnapshotSetId);
 374
 375    HRESULT (STDMETHODCALLTYPE *PostCommitSnapshots)(
 376        IVssProviderCreateSnapshotSet *This,
 377        VSS_ID SnapshotSetId,
 378        LONG lSnapshotsCount);
 379
 380    HRESULT (STDMETHODCALLTYPE *PreFinalCommitSnapshots)(
 381        IVssProviderCreateSnapshotSet *This,
 382        VSS_ID SnapshotSetId);
 383
 384    HRESULT (STDMETHODCALLTYPE *PostFinalCommitSnapshots)(
 385        IVssProviderCreateSnapshotSet *This,
 386        VSS_ID SnapshotSetId);
 387
 388    HRESULT (STDMETHODCALLTYPE *AbortSnapshots)(
 389        IVssProviderCreateSnapshotSet *This,
 390        VSS_ID SnapshotSetId);
 391
 392    END_INTERFACE
 393} IVssProviderCreateSnapshotSetVtbl;
 394
 395interface IVssProviderCreateSnapshotSet {
 396    CONST_VTBL IVssProviderCreateSnapshotSetVtbl* lpVtbl;
 397};
 398
 399#ifdef COBJMACROS
 400#ifndef WIDL_C_INLINE_WRAPPERS
 401/*** IUnknown methods ***/
 402#define IVssProviderCreateSnapshotSet_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 403#define IVssProviderCreateSnapshotSet_AddRef(This) (This)->lpVtbl->AddRef(This)
 404#define IVssProviderCreateSnapshotSet_Release(This) (This)->lpVtbl->Release(This)
 405/*** IVssProviderCreateSnapshotSet methods ***/
 406#define IVssProviderCreateSnapshotSet_EndPrepareSnapshots(This,SnapshotSetId) (This)->lpVtbl->EndPrepareSnapshots(This,SnapshotSetId)
 407#define IVssProviderCreateSnapshotSet_PreCommitSnapshots(This,SnapshotSetId) (This)->lpVtbl->PreCommitSnapshots(This,SnapshotSetId)
 408#define IVssProviderCreateSnapshotSet_CommitSnapshots(This,SnapshotSetId) (This)->lpVtbl->CommitSnapshots(This,SnapshotSetId)
 409#define IVssProviderCreateSnapshotSet_PostCommitSnapshots(This,SnapshotSetId,lSnapshotsCount) (This)->lpVtbl->PostCommitSnapshots(This,SnapshotSetId,lSnapshotsCount)
 410#define IVssProviderCreateSnapshotSet_PreFinalCommitSnapshots(This,SnapshotSetId) (This)->lpVtbl->PreFinalCommitSnapshots(This,SnapshotSetId)
 411#define IVssProviderCreateSnapshotSet_PostFinalCommitSnapshots(This,SnapshotSetId) (This)->lpVtbl->PostFinalCommitSnapshots(This,SnapshotSetId)
 412#define IVssProviderCreateSnapshotSet_AbortSnapshots(This,SnapshotSetId) (This)->lpVtbl->AbortSnapshots(This,SnapshotSetId)
 413#else
 414/*** IUnknown methods ***/
 415static inline HRESULT IVssProviderCreateSnapshotSet_QueryInterface(IVssProviderCreateSnapshotSet* This,REFIID riid,void **ppvObject) {
 416    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 417}
 418static inline ULONG IVssProviderCreateSnapshotSet_AddRef(IVssProviderCreateSnapshotSet* This) {
 419    return This->lpVtbl->AddRef(This);
 420}
 421static inline ULONG IVssProviderCreateSnapshotSet_Release(IVssProviderCreateSnapshotSet* This) {
 422    return This->lpVtbl->Release(This);
 423}
 424/*** IVssProviderCreateSnapshotSet methods ***/
 425static inline HRESULT IVssProviderCreateSnapshotSet_EndPrepareSnapshots(IVssProviderCreateSnapshotSet* This,VSS_ID SnapshotSetId) {
 426    return This->lpVtbl->EndPrepareSnapshots(This,SnapshotSetId);
 427}
 428static inline HRESULT IVssProviderCreateSnapshotSet_PreCommitSnapshots(IVssProviderCreateSnapshotSet* This,VSS_ID SnapshotSetId) {
 429    return This->lpVtbl->PreCommitSnapshots(This,SnapshotSetId);
 430}
 431static inline HRESULT IVssProviderCreateSnapshotSet_CommitSnapshots(IVssProviderCreateSnapshotSet* This,VSS_ID SnapshotSetId) {
 432    return This->lpVtbl->CommitSnapshots(This,SnapshotSetId);
 433}
 434static inline HRESULT IVssProviderCreateSnapshotSet_PostCommitSnapshots(IVssProviderCreateSnapshotSet* This,VSS_ID SnapshotSetId,LONG lSnapshotsCount) {
 435    return This->lpVtbl->PostCommitSnapshots(This,SnapshotSetId,lSnapshotsCount);
 436}
 437static inline HRESULT IVssProviderCreateSnapshotSet_PreFinalCommitSnapshots(IVssProviderCreateSnapshotSet* This,VSS_ID SnapshotSetId) {
 438    return This->lpVtbl->PreFinalCommitSnapshots(This,SnapshotSetId);
 439}
 440static inline HRESULT IVssProviderCreateSnapshotSet_PostFinalCommitSnapshots(IVssProviderCreateSnapshotSet* This,VSS_ID SnapshotSetId) {
 441    return This->lpVtbl->PostFinalCommitSnapshots(This,SnapshotSetId);
 442}
 443static inline HRESULT IVssProviderCreateSnapshotSet_AbortSnapshots(IVssProviderCreateSnapshotSet* This,VSS_ID SnapshotSetId) {
 444    return This->lpVtbl->AbortSnapshots(This,SnapshotSetId);
 445}
 446#endif
 447#endif
 448
 449#endif
 450
 451
 452#endif  /* __IVssProviderCreateSnapshotSet_INTERFACE_DEFINED__ */
 453
 454/*****************************************************************************
 455 * IVssProviderNotifications interface
 456 */
 457#ifndef __IVssProviderNotifications_INTERFACE_DEFINED__
 458#define __IVssProviderNotifications_INTERFACE_DEFINED__
 459
 460DEFINE_GUID(IID_IVssProviderNotifications, 0xe561901f, 0x03a5, 0x4afe, 0x86,0xd0, 0x72,0xba,0xee,0xce,0x70,0x04);
 461#if defined(__cplusplus) && !defined(CINTERFACE)
 462MIDL_INTERFACE("e561901f-03a5-4afe-86d0-72baeece7004")
 463IVssProviderNotifications : public IUnknown
 464{
 465    virtual HRESULT STDMETHODCALLTYPE OnLoad(
 466        IUnknown *pCallback) = 0;
 467
 468    virtual HRESULT STDMETHODCALLTYPE OnUnload(
 469        WINBOOL bForceUnload) = 0;
 470
 471};
 472#ifdef __CRT_UUID_DECL
 473__CRT_UUID_DECL(IVssProviderNotifications, 0xe561901f, 0x03a5, 0x4afe, 0x86,0xd0, 0x72,0xba,0xee,0xce,0x70,0x04)
 474#endif
 475#else
 476typedef struct IVssProviderNotificationsVtbl {
 477    BEGIN_INTERFACE
 478
 479    /*** IUnknown methods ***/
 480    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 481        IVssProviderNotifications *This,
 482        REFIID riid,
 483        void **ppvObject);
 484
 485    ULONG (STDMETHODCALLTYPE *AddRef)(
 486        IVssProviderNotifications *This);
 487
 488    ULONG (STDMETHODCALLTYPE *Release)(
 489        IVssProviderNotifications *This);
 490
 491    /*** IVssProviderNotifications methods ***/
 492    HRESULT (STDMETHODCALLTYPE *OnLoad)(
 493        IVssProviderNotifications *This,
 494        IUnknown *pCallback);
 495
 496    HRESULT (STDMETHODCALLTYPE *OnUnload)(
 497        IVssProviderNotifications *This,
 498        WINBOOL bForceUnload);
 499
 500    END_INTERFACE
 501} IVssProviderNotificationsVtbl;
 502
 503interface IVssProviderNotifications {
 504    CONST_VTBL IVssProviderNotificationsVtbl* lpVtbl;
 505};
 506
 507#ifdef COBJMACROS
 508#ifndef WIDL_C_INLINE_WRAPPERS
 509/*** IUnknown methods ***/
 510#define IVssProviderNotifications_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 511#define IVssProviderNotifications_AddRef(This) (This)->lpVtbl->AddRef(This)
 512#define IVssProviderNotifications_Release(This) (This)->lpVtbl->Release(This)
 513/*** IVssProviderNotifications methods ***/
 514#define IVssProviderNotifications_OnLoad(This,pCallback) (This)->lpVtbl->OnLoad(This,pCallback)
 515#define IVssProviderNotifications_OnUnload(This,bForceUnload) (This)->lpVtbl->OnUnload(This,bForceUnload)
 516#else
 517/*** IUnknown methods ***/
 518static inline HRESULT IVssProviderNotifications_QueryInterface(IVssProviderNotifications* This,REFIID riid,void **ppvObject) {
 519    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 520}
 521static inline ULONG IVssProviderNotifications_AddRef(IVssProviderNotifications* This) {
 522    return This->lpVtbl->AddRef(This);
 523}
 524static inline ULONG IVssProviderNotifications_Release(IVssProviderNotifications* This) {
 525    return This->lpVtbl->Release(This);
 526}
 527/*** IVssProviderNotifications methods ***/
 528static inline HRESULT IVssProviderNotifications_OnLoad(IVssProviderNotifications* This,IUnknown *pCallback) {
 529    return This->lpVtbl->OnLoad(This,pCallback);
 530}
 531static inline HRESULT IVssProviderNotifications_OnUnload(IVssProviderNotifications* This,WINBOOL bForceUnload) {
 532    return This->lpVtbl->OnUnload(This,bForceUnload);
 533}
 534#endif
 535#endif
 536
 537#endif
 538
 539
 540#endif  /* __IVssProviderNotifications_INTERFACE_DEFINED__ */
 541
 542/*****************************************************************************
 543 * IVssHardwareSnapshotProvider interface
 544 */
 545#ifndef __IVssHardwareSnapshotProvider_INTERFACE_DEFINED__
 546#define __IVssHardwareSnapshotProvider_INTERFACE_DEFINED__
 547
 548DEFINE_GUID(IID_IVssHardwareSnapshotProvider, 0x9593a157, 0x44e9, 0x4344, 0xbb,0xeb, 0x44,0xfb,0xf9,0xb0,0x6b,0x10);
 549#if defined(__cplusplus) && !defined(CINTERFACE)
 550MIDL_INTERFACE("9593a157-44e9-4344-bbeb-44fbf9b06b10")
 551IVssHardwareSnapshotProvider : public IUnknown
 552{
 553    virtual HRESULT STDMETHODCALLTYPE AreLunsSupported(
 554        LONG lLunCount,
 555        LONG lContext,
 556        VSS_PWSZ *rgwszDevices,
 557        VDS_LUN_INFORMATION *pLunInformation,
 558        WINBOOL *pbIsSupported) = 0;
 559
 560    virtual HRESULT STDMETHODCALLTYPE FillInLunInfo(
 561        VSS_PWSZ wszDeviceName,
 562        VDS_LUN_INFORMATION *pLunInfo,
 563        WINBOOL *pbIsSupported) = 0;
 564
 565    virtual HRESULT STDMETHODCALLTYPE BeginPrepareSnapshot(
 566        VSS_ID SnapshotSetId,
 567        VSS_ID SnapshotId,
 568        LONG lContext,
 569        LONG lLunCount,
 570        VSS_PWSZ *rgDeviceNames,
 571        VDS_LUN_INFORMATION *rgLunInformation) = 0;
 572
 573    virtual HRESULT STDMETHODCALLTYPE GetTargetLuns(
 574        LONG lLunCount,
 575        VSS_PWSZ *rgDeviceNames,
 576        VDS_LUN_INFORMATION *rgSourceLuns,
 577        VDS_LUN_INFORMATION *rgDestinationLuns) = 0;
 578
 579    virtual HRESULT STDMETHODCALLTYPE LocateLuns(
 580        LONG lLunCount,
 581        VDS_LUN_INFORMATION *rgSourceLuns) = 0;
 582
 583    virtual HRESULT STDMETHODCALLTYPE OnLunEmpty(
 584        VSS_PWSZ wszDeviceName,
 585        VDS_LUN_INFORMATION *pInformation) = 0;
 586
 587};
 588#ifdef __CRT_UUID_DECL
 589__CRT_UUID_DECL(IVssHardwareSnapshotProvider, 0x9593a157, 0x44e9, 0x4344, 0xbb,0xeb, 0x44,0xfb,0xf9,0xb0,0x6b,0x10)
 590#endif
 591#else
 592typedef struct IVssHardwareSnapshotProviderVtbl {
 593    BEGIN_INTERFACE
 594
 595    /*** IUnknown methods ***/
 596    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 597        IVssHardwareSnapshotProvider *This,
 598        REFIID riid,
 599        void **ppvObject);
 600
 601    ULONG (STDMETHODCALLTYPE *AddRef)(
 602        IVssHardwareSnapshotProvider *This);
 603
 604    ULONG (STDMETHODCALLTYPE *Release)(
 605        IVssHardwareSnapshotProvider *This);
 606
 607    /*** IVssHardwareSnapshotProvider methods ***/
 608    HRESULT (STDMETHODCALLTYPE *AreLunsSupported)(
 609        IVssHardwareSnapshotProvider *This,
 610        LONG lLunCount,
 611        LONG lContext,
 612        VSS_PWSZ *rgwszDevices,
 613        VDS_LUN_INFORMATION *pLunInformation,
 614        WINBOOL *pbIsSupported);
 615
 616    HRESULT (STDMETHODCALLTYPE *FillInLunInfo)(
 617        IVssHardwareSnapshotProvider *This,
 618        VSS_PWSZ wszDeviceName,
 619        VDS_LUN_INFORMATION *pLunInfo,
 620        WINBOOL *pbIsSupported);
 621
 622    HRESULT (STDMETHODCALLTYPE *BeginPrepareSnapshot)(
 623        IVssHardwareSnapshotProvider *This,
 624        VSS_ID SnapshotSetId,
 625        VSS_ID SnapshotId,
 626        LONG lContext,
 627        LONG lLunCount,
 628        VSS_PWSZ *rgDeviceNames,
 629        VDS_LUN_INFORMATION *rgLunInformation);
 630
 631    HRESULT (STDMETHODCALLTYPE *GetTargetLuns)(
 632        IVssHardwareSnapshotProvider *This,
 633        LONG lLunCount,
 634        VSS_PWSZ *rgDeviceNames,
 635        VDS_LUN_INFORMATION *rgSourceLuns,
 636        VDS_LUN_INFORMATION *rgDestinationLuns);
 637
 638    HRESULT (STDMETHODCALLTYPE *LocateLuns)(
 639        IVssHardwareSnapshotProvider *This,
 640        LONG lLunCount,
 641        VDS_LUN_INFORMATION *rgSourceLuns);
 642
 643    HRESULT (STDMETHODCALLTYPE *OnLunEmpty)(
 644        IVssHardwareSnapshotProvider *This,
 645        VSS_PWSZ wszDeviceName,
 646        VDS_LUN_INFORMATION *pInformation);
 647
 648    END_INTERFACE
 649} IVssHardwareSnapshotProviderVtbl;
 650
 651interface IVssHardwareSnapshotProvider {
 652    CONST_VTBL IVssHardwareSnapshotProviderVtbl* lpVtbl;
 653};
 654
 655#ifdef COBJMACROS
 656#ifndef WIDL_C_INLINE_WRAPPERS
 657/*** IUnknown methods ***/
 658#define IVssHardwareSnapshotProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 659#define IVssHardwareSnapshotProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
 660#define IVssHardwareSnapshotProvider_Release(This) (This)->lpVtbl->Release(This)
 661/*** IVssHardwareSnapshotProvider methods ***/
 662#define IVssHardwareSnapshotProvider_AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported) (This)->lpVtbl->AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported)
 663#define IVssHardwareSnapshotProvider_FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported) (This)->lpVtbl->FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported)
 664#define IVssHardwareSnapshotProvider_BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation) (This)->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation)
 665#define IVssHardwareSnapshotProvider_GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns) (This)->lpVtbl->GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns)
 666#define IVssHardwareSnapshotProvider_LocateLuns(This,lLunCount,rgSourceLuns) (This)->lpVtbl->LocateLuns(This,lLunCount,rgSourceLuns)
 667#define IVssHardwareSnapshotProvider_OnLunEmpty(This,wszDeviceName,pInformation) (This)->lpVtbl->OnLunEmpty(This,wszDeviceName,pInformation)
 668#else
 669/*** IUnknown methods ***/
 670static inline HRESULT IVssHardwareSnapshotProvider_QueryInterface(IVssHardwareSnapshotProvider* This,REFIID riid,void **ppvObject) {
 671    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 672}
 673static inline ULONG IVssHardwareSnapshotProvider_AddRef(IVssHardwareSnapshotProvider* This) {
 674    return This->lpVtbl->AddRef(This);
 675}
 676static inline ULONG IVssHardwareSnapshotProvider_Release(IVssHardwareSnapshotProvider* This) {
 677    return This->lpVtbl->Release(This);
 678}
 679/*** IVssHardwareSnapshotProvider methods ***/
 680static inline HRESULT IVssHardwareSnapshotProvider_AreLunsSupported(IVssHardwareSnapshotProvider* This,LONG lLunCount,LONG lContext,VSS_PWSZ *rgwszDevices,VDS_LUN_INFORMATION *pLunInformation,WINBOOL *pbIsSupported) {
 681    return This->lpVtbl->AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported);
 682}
 683static inline HRESULT IVssHardwareSnapshotProvider_FillInLunInfo(IVssHardwareSnapshotProvider* This,VSS_PWSZ wszDeviceName,VDS_LUN_INFORMATION *pLunInfo,WINBOOL *pbIsSupported) {
 684    return This->lpVtbl->FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported);
 685}
 686static inline HRESULT IVssHardwareSnapshotProvider_BeginPrepareSnapshot(IVssHardwareSnapshotProvider* This,VSS_ID SnapshotSetId,VSS_ID SnapshotId,LONG lContext,LONG lLunCount,VSS_PWSZ *rgDeviceNames,VDS_LUN_INFORMATION *rgLunInformation) {
 687    return This->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation);
 688}
 689static inline HRESULT IVssHardwareSnapshotProvider_GetTargetLuns(IVssHardwareSnapshotProvider* This,LONG lLunCount,VSS_PWSZ *rgDeviceNames,VDS_LUN_INFORMATION *rgSourceLuns,VDS_LUN_INFORMATION *rgDestinationLuns) {
 690    return This->lpVtbl->GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns);
 691}
 692static inline HRESULT IVssHardwareSnapshotProvider_LocateLuns(IVssHardwareSnapshotProvider* This,LONG lLunCount,VDS_LUN_INFORMATION *rgSourceLuns) {
 693    return This->lpVtbl->LocateLuns(This,lLunCount,rgSourceLuns);
 694}
 695static inline HRESULT IVssHardwareSnapshotProvider_OnLunEmpty(IVssHardwareSnapshotProvider* This,VSS_PWSZ wszDeviceName,VDS_LUN_INFORMATION *pInformation) {
 696    return This->lpVtbl->OnLunEmpty(This,wszDeviceName,pInformation);
 697}
 698#endif
 699#endif
 700
 701#endif
 702
 703
 704#endif  /* __IVssHardwareSnapshotProvider_INTERFACE_DEFINED__ */
 705
 706/*****************************************************************************
 707 * IVssHardwareSnapshotProviderEx interface
 708 */
 709#ifndef __IVssHardwareSnapshotProviderEx_INTERFACE_DEFINED__
 710#define __IVssHardwareSnapshotProviderEx_INTERFACE_DEFINED__
 711
 712DEFINE_GUID(IID_IVssHardwareSnapshotProviderEx, 0x7f5ba925, 0xcdb1, 0x4d11, 0xa7,0x1f, 0x33,0x9e,0xb7,0xe7,0x09,0xfd);
 713#if defined(__cplusplus) && !defined(CINTERFACE)
 714MIDL_INTERFACE("7f5ba925-cdb1-4d11-a71f-339eb7e709fd")
 715IVssHardwareSnapshotProviderEx : public IVssHardwareSnapshotProvider
 716{
 717    virtual HRESULT STDMETHODCALLTYPE GetProviderCapabilities(
 718        ULONGLONG *pllOriginalCapabilityMask) = 0;
 719
 720    virtual HRESULT STDMETHODCALLTYPE OnLunStateChange(
 721        VDS_LUN_INFORMATION *pSnapshotLuns,
 722        VDS_LUN_INFORMATION *pOriginalLuns,
 723        DWORD dwCount,
 724        DWORD dwFlags) = 0;
 725
 726    virtual HRESULT STDMETHODCALLTYPE ResyncLuns(
 727        VDS_LUN_INFORMATION *pSourceLuns,
 728        VDS_LUN_INFORMATION *pTargetLuns,
 729        DWORD dwCount,
 730        IVssAsync **ppAsync) = 0;
 731
 732    virtual HRESULT STDMETHODCALLTYPE OnReuseLuns(
 733        VDS_LUN_INFORMATION *pSnapshotLuns,
 734        VDS_LUN_INFORMATION *pOriginalLuns,
 735        DWORD dwCount) = 0;
 736
 737};
 738#ifdef __CRT_UUID_DECL
 739__CRT_UUID_DECL(IVssHardwareSnapshotProviderEx, 0x7f5ba925, 0xcdb1, 0x4d11, 0xa7,0x1f, 0x33,0x9e,0xb7,0xe7,0x09,0xfd)
 740#endif
 741#else
 742typedef struct IVssHardwareSnapshotProviderExVtbl {
 743    BEGIN_INTERFACE
 744
 745    /*** IUnknown methods ***/
 746    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 747        IVssHardwareSnapshotProviderEx *This,
 748        REFIID riid,
 749        void **ppvObject);
 750
 751    ULONG (STDMETHODCALLTYPE *AddRef)(
 752        IVssHardwareSnapshotProviderEx *This);
 753
 754    ULONG (STDMETHODCALLTYPE *Release)(
 755        IVssHardwareSnapshotProviderEx *This);
 756
 757    /*** IVssHardwareSnapshotProvider methods ***/
 758    HRESULT (STDMETHODCALLTYPE *AreLunsSupported)(
 759        IVssHardwareSnapshotProviderEx *This,
 760        LONG lLunCount,
 761        LONG lContext,
 762        VSS_PWSZ *rgwszDevices,
 763        VDS_LUN_INFORMATION *pLunInformation,
 764        WINBOOL *pbIsSupported);
 765
 766    HRESULT (STDMETHODCALLTYPE *FillInLunInfo)(
 767        IVssHardwareSnapshotProviderEx *This,
 768        VSS_PWSZ wszDeviceName,
 769        VDS_LUN_INFORMATION *pLunInfo,
 770        WINBOOL *pbIsSupported);
 771
 772    HRESULT (STDMETHODCALLTYPE *BeginPrepareSnapshot)(
 773        IVssHardwareSnapshotProviderEx *This,
 774        VSS_ID SnapshotSetId,
 775        VSS_ID SnapshotId,
 776        LONG lContext,
 777        LONG lLunCount,
 778        VSS_PWSZ *rgDeviceNames,
 779        VDS_LUN_INFORMATION *rgLunInformation);
 780
 781    HRESULT (STDMETHODCALLTYPE *GetTargetLuns)(
 782        IVssHardwareSnapshotProviderEx *This,
 783        LONG lLunCount,
 784        VSS_PWSZ *rgDeviceNames,
 785        VDS_LUN_INFORMATION *rgSourceLuns,
 786        VDS_LUN_INFORMATION *rgDestinationLuns);
 787
 788    HRESULT (STDMETHODCALLTYPE *LocateLuns)(
 789        IVssHardwareSnapshotProviderEx *This,
 790        LONG lLunCount,
 791        VDS_LUN_INFORMATION *rgSourceLuns);
 792
 793    HRESULT (STDMETHODCALLTYPE *OnLunEmpty)(
 794        IVssHardwareSnapshotProviderEx *This,
 795        VSS_PWSZ wszDeviceName,
 796        VDS_LUN_INFORMATION *pInformation);
 797
 798    /*** IVssHardwareSnapshotProviderEx methods ***/
 799    HRESULT (STDMETHODCALLTYPE *GetProviderCapabilities)(
 800        IVssHardwareSnapshotProviderEx *This,
 801        ULONGLONG *pllOriginalCapabilityMask);
 802
 803    HRESULT (STDMETHODCALLTYPE *OnLunStateChange)(
 804        IVssHardwareSnapshotProviderEx *This,
 805        VDS_LUN_INFORMATION *pSnapshotLuns,
 806        VDS_LUN_INFORMATION *pOriginalLuns,
 807        DWORD dwCount,
 808        DWORD dwFlags);
 809
 810    HRESULT (STDMETHODCALLTYPE *ResyncLuns)(
 811        IVssHardwareSnapshotProviderEx *This,
 812        VDS_LUN_INFORMATION *pSourceLuns,
 813        VDS_LUN_INFORMATION *pTargetLuns,
 814        DWORD dwCount,
 815        IVssAsync **ppAsync);
 816
 817    HRESULT (STDMETHODCALLTYPE *OnReuseLuns)(
 818        IVssHardwareSnapshotProviderEx *This,
 819        VDS_LUN_INFORMATION *pSnapshotLuns,
 820        VDS_LUN_INFORMATION *pOriginalLuns,
 821        DWORD dwCount);
 822
 823    END_INTERFACE
 824} IVssHardwareSnapshotProviderExVtbl;
 825
 826interface IVssHardwareSnapshotProviderEx {
 827    CONST_VTBL IVssHardwareSnapshotProviderExVtbl* lpVtbl;
 828};
 829
 830#ifdef COBJMACROS
 831#ifndef WIDL_C_INLINE_WRAPPERS
 832/*** IUnknown methods ***/
 833#define IVssHardwareSnapshotProviderEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 834#define IVssHardwareSnapshotProviderEx_AddRef(This) (This)->lpVtbl->AddRef(This)
 835#define IVssHardwareSnapshotProviderEx_Release(This) (This)->lpVtbl->Release(This)
 836/*** IVssHardwareSnapshotProvider methods ***/
 837#define IVssHardwareSnapshotProviderEx_AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported) (This)->lpVtbl->AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported)
 838#define IVssHardwareSnapshotProviderEx_FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported) (This)->lpVtbl->FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported)
 839#define IVssHardwareSnapshotProviderEx_BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation) (This)->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation)
 840#define IVssHardwareSnapshotProviderEx_GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns) (This)->lpVtbl->GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns)
 841#define IVssHardwareSnapshotProviderEx_LocateLuns(This,lLunCount,rgSourceLuns) (This)->lpVtbl->LocateLuns(This,lLunCount,rgSourceLuns)
 842#define IVssHardwareSnapshotProviderEx_OnLunEmpty(This,wszDeviceName,pInformation) (This)->lpVtbl->OnLunEmpty(This,wszDeviceName,pInformation)
 843/*** IVssHardwareSnapshotProviderEx methods ***/
 844#define IVssHardwareSnapshotProviderEx_GetProviderCapabilities(This,pllOriginalCapabilityMask) (This)->lpVtbl->GetProviderCapabilities(This,pllOriginalCapabilityMask)
 845#define IVssHardwareSnapshotProviderEx_OnLunStateChange(This,pSnapshotLuns,pOriginalLuns,dwCount,dwFlags) (This)->lpVtbl->OnLunStateChange(This,pSnapshotLuns,pOriginalLuns,dwCount,dwFlags)
 846#define IVssHardwareSnapshotProviderEx_ResyncLuns(This,pSourceLuns,pTargetLuns,dwCount,ppAsync) (This)->lpVtbl->ResyncLuns(This,pSourceLuns,pTargetLuns,dwCount,ppAsync)
 847#define IVssHardwareSnapshotProviderEx_OnReuseLuns(This,pSnapshotLuns,pOriginalLuns,dwCount) (This)->lpVtbl->OnReuseLuns(This,pSnapshotLuns,pOriginalLuns,dwCount)
 848#else
 849/*** IUnknown methods ***/
 850static inline HRESULT IVssHardwareSnapshotProviderEx_QueryInterface(IVssHardwareSnapshotProviderEx* This,REFIID riid,void **ppvObject) {
 851    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 852}
 853static inline ULONG IVssHardwareSnapshotProviderEx_AddRef(IVssHardwareSnapshotProviderEx* This) {
 854    return This->lpVtbl->AddRef(This);
 855}
 856static inline ULONG IVssHardwareSnapshotProviderEx_Release(IVssHardwareSnapshotProviderEx* This) {
 857    return This->lpVtbl->Release(This);
 858}
 859/*** IVssHardwareSnapshotProvider methods ***/
 860static inline HRESULT IVssHardwareSnapshotProviderEx_AreLunsSupported(IVssHardwareSnapshotProviderEx* This,LONG lLunCount,LONG lContext,VSS_PWSZ *rgwszDevices,VDS_LUN_INFORMATION *pLunInformation,WINBOOL *pbIsSupported) {
 861    return This->lpVtbl->AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported);
 862}
 863static inline HRESULT IVssHardwareSnapshotProviderEx_FillInLunInfo(IVssHardwareSnapshotProviderEx* This,VSS_PWSZ wszDeviceName,VDS_LUN_INFORMATION *pLunInfo,WINBOOL *pbIsSupported) {
 864    return This->lpVtbl->FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported);
 865}
 866static inline HRESULT IVssHardwareSnapshotProviderEx_BeginPrepareSnapshot(IVssHardwareSnapshotProviderEx* This,VSS_ID SnapshotSetId,VSS_ID SnapshotId,LONG lContext,LONG lLunCount,VSS_PWSZ *rgDeviceNames,VDS_LUN_INFORMATION *rgLunInformation) {
 867    return This->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation);
 868}
 869static inline HRESULT IVssHardwareSnapshotProviderEx_GetTargetLuns(IVssHardwareSnapshotProviderEx* This,LONG lLunCount,VSS_PWSZ *rgDeviceNames,VDS_LUN_INFORMATION *rgSourceLuns,VDS_LUN_INFORMATION *rgDestinationLuns) {
 870    return This->lpVtbl->GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns);
 871}
 872static inline HRESULT IVssHardwareSnapshotProviderEx_LocateLuns(IVssHardwareSnapshotProviderEx* This,LONG lLunCount,VDS_LUN_INFORMATION *rgSourceLuns) {
 873    return This->lpVtbl->LocateLuns(This,lLunCount,rgSourceLuns);
 874}
 875static inline HRESULT IVssHardwareSnapshotProviderEx_OnLunEmpty(IVssHardwareSnapshotProviderEx* This,VSS_PWSZ wszDeviceName,VDS_LUN_INFORMATION *pInformation) {
 876    return This->lpVtbl->OnLunEmpty(This,wszDeviceName,pInformation);
 877}
 878/*** IVssHardwareSnapshotProviderEx methods ***/
 879static inline HRESULT IVssHardwareSnapshotProviderEx_GetProviderCapabilities(IVssHardwareSnapshotProviderEx* This,ULONGLONG *pllOriginalCapabilityMask) {
 880    return This->lpVtbl->GetProviderCapabilities(This,pllOriginalCapabilityMask);
 881}
 882static inline HRESULT IVssHardwareSnapshotProviderEx_OnLunStateChange(IVssHardwareSnapshotProviderEx* This,VDS_LUN_INFORMATION *pSnapshotLuns,VDS_LUN_INFORMATION *pOriginalLuns,DWORD dwCount,DWORD dwFlags) {
 883    return This->lpVtbl->OnLunStateChange(This,pSnapshotLuns,pOriginalLuns,dwCount,dwFlags);
 884}
 885static inline HRESULT IVssHardwareSnapshotProviderEx_ResyncLuns(IVssHardwareSnapshotProviderEx* This,VDS_LUN_INFORMATION *pSourceLuns,VDS_LUN_INFORMATION *pTargetLuns,DWORD dwCount,IVssAsync **ppAsync) {
 886    return This->lpVtbl->ResyncLuns(This,pSourceLuns,pTargetLuns,dwCount,ppAsync);
 887}
 888static inline HRESULT IVssHardwareSnapshotProviderEx_OnReuseLuns(IVssHardwareSnapshotProviderEx* This,VDS_LUN_INFORMATION *pSnapshotLuns,VDS_LUN_INFORMATION *pOriginalLuns,DWORD dwCount) {
 889    return This->lpVtbl->OnReuseLuns(This,pSnapshotLuns,pOriginalLuns,dwCount);
 890}
 891#endif
 892#endif
 893
 894#endif
 895
 896
 897#endif  /* __IVssHardwareSnapshotProviderEx_INTERFACE_DEFINED__ */
 898
 899/*****************************************************************************
 900 * IVssFileShareSnapshotProvider interface
 901 */
 902#ifndef __IVssFileShareSnapshotProvider_INTERFACE_DEFINED__
 903#define __IVssFileShareSnapshotProvider_INTERFACE_DEFINED__
 904
 905DEFINE_GUID(IID_IVssFileShareSnapshotProvider, 0xc8636060, 0x7c2e, 0x11df, 0x8c,0x4a, 0x08,0x00,0x20,0x0c,0x9a,0x66);
 906#if defined(__cplusplus) && !defined(CINTERFACE)
 907MIDL_INTERFACE("c8636060-7c2e-11df-8c4a-0800200c9a66")
 908IVssFileShareSnapshotProvider : public IUnknown
 909{
 910    virtual HRESULT STDMETHODCALLTYPE SetContext(
 911        LONG lContext) = 0;
 912
 913    virtual HRESULT STDMETHODCALLTYPE GetSnapshotProperties(
 914        VSS_ID SnapshotId,
 915        VSS_SNAPSHOT_PROP *pProp) = 0;
 916
 917    virtual HRESULT STDMETHODCALLTYPE Query(
 918        VSS_ID QueriedObjectId,
 919        VSS_OBJECT_TYPE eQueriedObjectType,
 920        VSS_OBJECT_TYPE eReturnedObjectsType,
 921        IVssEnumObject **ppEnum) = 0;
 922
 923    virtual HRESULT STDMETHODCALLTYPE DeleteSnapshots(
 924        VSS_ID SourceObjectId,
 925        VSS_OBJECT_TYPE eSourceObjectType,
 926        WINBOOL bForceDelete,
 927        LONG *plDeletedSnapshots,
 928        VSS_ID *pNondeletedSnapshotID) = 0;
 929
 930    virtual HRESULT STDMETHODCALLTYPE BeginPrepareSnapshot(
 931        VSS_ID SnapshotSetId,
 932        VSS_ID SnapshotId,
 933        VSS_PWSZ pwszSharePath,
 934        LONG lNewContext,
 935        VSS_ID ProviderId) = 0;
 936
 937    virtual HRESULT STDMETHODCALLTYPE IsPathSupported(
 938        VSS_PWSZ pwszSharePath,
 939        WINBOOL *pbSupportedByThisProvider) = 0;
 940
 941    virtual HRESULT STDMETHODCALLTYPE IsPathSnapshotted(
 942        VSS_PWSZ pwszSharePath,
 943        WINBOOL *pbSnapshotsPresent,
 944        LONG *plSnapshotCompatibility) = 0;
 945
 946    virtual HRESULT STDMETHODCALLTYPE SetSnapshotProperty(
 947        VSS_ID SnapshotId,
 948        VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId,
 949        VARIANT vProperty) = 0;
 950
 951};
 952#ifdef __CRT_UUID_DECL
 953__CRT_UUID_DECL(IVssFileShareSnapshotProvider, 0xc8636060, 0x7c2e, 0x11df, 0x8c,0x4a, 0x08,0x00,0x20,0x0c,0x9a,0x66)
 954#endif
 955#else
 956typedef struct IVssFileShareSnapshotProviderVtbl {
 957    BEGIN_INTERFACE
 958
 959    /*** IUnknown methods ***/
 960    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 961        IVssFileShareSnapshotProvider *This,
 962        REFIID riid,
 963        void **ppvObject);
 964
 965    ULONG (STDMETHODCALLTYPE *AddRef)(
 966        IVssFileShareSnapshotProvider *This);
 967
 968    ULONG (STDMETHODCALLTYPE *Release)(
 969        IVssFileShareSnapshotProvider *This);
 970
 971    /*** IVssFileShareSnapshotProvider methods ***/
 972    HRESULT (STDMETHODCALLTYPE *SetContext)(
 973        IVssFileShareSnapshotProvider *This,
 974        LONG lContext);
 975
 976    HRESULT (STDMETHODCALLTYPE *GetSnapshotProperties)(
 977        IVssFileShareSnapshotProvider *This,
 978        VSS_ID SnapshotId,
 979        VSS_SNAPSHOT_PROP *pProp);
 980
 981    HRESULT (STDMETHODCALLTYPE *Query)(
 982        IVssFileShareSnapshotProvider *This,
 983        VSS_ID QueriedObjectId,
 984        VSS_OBJECT_TYPE eQueriedObjectType,
 985        VSS_OBJECT_TYPE eReturnedObjectsType,
 986        IVssEnumObject **ppEnum);
 987
 988    HRESULT (STDMETHODCALLTYPE *DeleteSnapshots)(
 989        IVssFileShareSnapshotProvider *This,
 990        VSS_ID SourceObjectId,
 991        VSS_OBJECT_TYPE eSourceObjectType,
 992        WINBOOL bForceDelete,
 993        LONG *plDeletedSnapshots,
 994        VSS_ID *pNondeletedSnapshotID);
 995
 996    HRESULT (STDMETHODCALLTYPE *BeginPrepareSnapshot)(
 997        IVssFileShareSnapshotProvider *This,
 998        VSS_ID SnapshotSetId,
 999        VSS_ID SnapshotId,
1000        VSS_PWSZ pwszSharePath,
1001        LONG lNewContext,
1002        VSS_ID ProviderId);
1003
1004    HRESULT (STDMETHODCALLTYPE *IsPathSupported)(
1005        IVssFileShareSnapshotProvider *This,
1006        VSS_PWSZ pwszSharePath,
1007        WINBOOL *pbSupportedByThisProvider);
1008
1009    HRESULT (STDMETHODCALLTYPE *IsPathSnapshotted)(
1010        IVssFileShareSnapshotProvider *This,
1011        VSS_PWSZ pwszSharePath,
1012        WINBOOL *pbSnapshotsPresent,
1013        LONG *plSnapshotCompatibility);
1014
1015    HRESULT (STDMETHODCALLTYPE *SetSnapshotProperty)(
1016        IVssFileShareSnapshotProvider *This,
1017        VSS_ID SnapshotId,
1018        VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId,
1019        VARIANT vProperty);
1020
1021    END_INTERFACE
1022} IVssFileShareSnapshotProviderVtbl;
1023
1024interface IVssFileShareSnapshotProvider {
1025    CONST_VTBL IVssFileShareSnapshotProviderVtbl* lpVtbl;
1026};
1027
1028#ifdef COBJMACROS
1029#ifndef WIDL_C_INLINE_WRAPPERS
1030/*** IUnknown methods ***/
1031#define IVssFileShareSnapshotProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1032#define IVssFileShareSnapshotProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
1033#define IVssFileShareSnapshotProvider_Release(This) (This)->lpVtbl->Release(This)
1034/*** IVssFileShareSnapshotProvider methods ***/
1035#define IVssFileShareSnapshotProvider_SetContext(This,lContext) (This)->lpVtbl->SetContext(This,lContext)
1036#define IVssFileShareSnapshotProvider_GetSnapshotProperties(This,SnapshotId,pProp) (This)->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp)
1037#define IVssFileShareSnapshotProvider_Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum) (This)->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum)
1038#define IVssFileShareSnapshotProvider_DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID) (This)->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID)
1039#define IVssFileShareSnapshotProvider_BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,pwszSharePath,lNewContext,ProviderId) (This)->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,pwszSharePath,lNewContext,ProviderId)
1040#define IVssFileShareSnapshotProvider_IsPathSupported(This,pwszSharePath,pbSupportedByThisProvider) (This)->lpVtbl->IsPathSupported(This,pwszSharePath,pbSupportedByThisProvider)
1041#define IVssFileShareSnapshotProvider_IsPathSnapshotted(This,pwszSharePath,pbSnapshotsPresent,plSnapshotCompatibility) (This)->lpVtbl->IsPathSnapshotted(This,pwszSharePath,pbSnapshotsPresent,plSnapshotCompatibility)
1042#define IVssFileShareSnapshotProvider_SetSnapshotProperty(This,SnapshotId,eSnapshotPropertyId,vProperty) (This)->lpVtbl->SetSnapshotProperty(This,SnapshotId,eSnapshotPropertyId,vProperty)
1043#else
1044/*** IUnknown methods ***/
1045static inline HRESULT IVssFileShareSnapshotProvider_QueryInterface(IVssFileShareSnapshotProvider* This,REFIID riid,void **ppvObject) {
1046    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1047}
1048static inline ULONG IVssFileShareSnapshotProvider_AddRef(IVssFileShareSnapshotProvider* This) {
1049    return This->lpVtbl->AddRef(This);
1050}
1051static inline ULONG IVssFileShareSnapshotProvider_Release(IVssFileShareSnapshotProvider* This) {
1052    return This->lpVtbl->Release(This);
1053}
1054/*** IVssFileShareSnapshotProvider methods ***/
1055static inline HRESULT IVssFileShareSnapshotProvider_SetContext(IVssFileShareSnapshotProvider* This,LONG lContext) {
1056    return This->lpVtbl->SetContext(This,lContext);
1057}
1058static inline HRESULT IVssFileShareSnapshotProvider_GetSnapshotProperties(IVssFileShareSnapshotProvider* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
1059    return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
1060}
1061static inline HRESULT IVssFileShareSnapshotProvider_Query(IVssFileShareSnapshotProvider* This,VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) {
1062    return This->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum);
1063}
1064static inline HRESULT IVssFileShareSnapshotProvider_DeleteSnapshots(IVssFileShareSnapshotProvider* This,VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,WINBOOL bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) {
1065    return This->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID);
1066}
1067static inline HRESULT IVssFileShareSnapshotProvider_BeginPrepareSnapshot(IVssFileShareSnapshotProvider* This,VSS_ID SnapshotSetId,VSS_ID SnapshotId,VSS_PWSZ pwszSharePath,LONG lNewContext,VSS_ID ProviderId) {
1068    return This->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,pwszSharePath,lNewContext,ProviderId);
1069}
1070static inline HRESULT IVssFileShareSnapshotProvider_IsPathSupported(IVssFileShareSnapshotProvider* This,VSS_PWSZ pwszSharePath,WINBOOL *pbSupportedByThisProvider) {
1071    return This->lpVtbl->IsPathSupported(This,pwszSharePath,pbSupportedByThisProvider);
1072}
1073static inline HRESULT IVssFileShareSnapshotProvider_IsPathSnapshotted(IVssFileShareSnapshotProvider* This,VSS_PWSZ pwszSharePath,WINBOOL *pbSnapshotsPresent,LONG *plSnapshotCompatibility) {
1074    return This->lpVtbl->IsPathSnapshotted(This,pwszSharePath,pbSnapshotsPresent,plSnapshotCompatibility);
1075}
1076static inline HRESULT IVssFileShareSnapshotProvider_SetSnapshotProperty(IVssFileShareSnapshotProvider* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId,VARIANT vProperty) {
1077    return This->lpVtbl->SetSnapshotProperty(This,SnapshotId,eSnapshotPropertyId,vProperty);
1078}
1079#endif
1080#endif
1081
1082#endif
1083
1084
1085#endif  /* __IVssFileShareSnapshotProvider_INTERFACE_DEFINED__ */
1086
1087#ifndef __VSSProvider_LIBRARY_DEFINED__
1088#define __VSSProvider_LIBRARY_DEFINED__
1089
1090DEFINE_GUID(LIBID_VSSProvider, 0x73c8b4c1, 0x6e9d, 0x4fc2, 0xb3,0x04, 0x03,0x0e,0xc7,0x63,0xfe,0x81);
1091
1092#endif /* __VSSProvider_LIBRARY_DEFINED__ */
1093#endif /* WINAPI_PARTITION_DESKTOP */
1094/* Begin additional prototypes for all interfaces */
1095
1096ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
1097unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
1098unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
1099void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
1100
1101/* End additional prototypes */
1102
1103#ifdef __cplusplus
1104}
1105#endif
1106
1107#endif /* __vsprov_h__ */