1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _INC_VSMGT 7 #define _INC_VSMGT 8 9 #include <vss.h> 10 11 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 15 typedef enum _VSS_PROTECTION_FAULT { 16 VSS_PROTECTION_FAULT_NONE = 0, 17 VSS_PROTECTION_FAULT_DIFF_AREA_MISSING = ( VSS_PROTECTION_FAULT_NONE + 1 ), 18 VSS_PROTECTION_FAULT_IO_FAILURE_DURING_ONLINE = ( VSS_PROTECTION_FAULT_DIFF_AREA_MISSING + 1 ), 19 VSS_PROTECTION_FAULT_META_DATA_CORRUPTION = ( VSS_PROTECTION_FAULT_IO_FAILURE_DURING_ONLINE + 1 ), 20 VSS_PROTECTION_FAULT_MEMORY_ALLOCATION_FAILURE = ( VSS_PROTECTION_FAULT_META_DATA_CORRUPTION + 1 ), 21 VSS_PROTECTION_FAULT_MAPPED_MEMORY_FAILURE = ( VSS_PROTECTION_FAULT_MEMORY_ALLOCATION_FAILURE + 1 ), 22 VSS_PROTECTION_FAULT_COW_READ_FAILURE = ( VSS_PROTECTION_FAULT_MAPPED_MEMORY_FAILURE + 1 ), 23 VSS_PROTECTION_FAULT_COW_WRITE_FAILURE = ( VSS_PROTECTION_FAULT_COW_READ_FAILURE + 1 ), 24 VSS_PROTECTION_FAULT_DIFF_AREA_FULL = ( VSS_PROTECTION_FAULT_COW_WRITE_FAILURE + 1 ), 25 VSS_PROTECTION_FAULT_GROW_TOO_SLOW = ( VSS_PROTECTION_FAULT_DIFF_AREA_FULL + 1 ), 26 VSS_PROTECTION_FAULT_GROW_FAILED = ( VSS_PROTECTION_FAULT_GROW_TOO_SLOW + 1 ), 27 VSS_PROTECTION_FAULT_DESTROY_ALL_SNAPSHOTS = ( VSS_PROTECTION_FAULT_GROW_FAILED + 1 ), 28 VSS_PROTECTION_FAULT_FILE_SYSTEM_FAILURE = ( VSS_PROTECTION_FAULT_DESTROY_ALL_SNAPSHOTS + 1 ), 29 VSS_PROTECTION_FAULT_IO_FAILURE = ( VSS_PROTECTION_FAULT_FILE_SYSTEM_FAILURE + 1 ), 30 VSS_PROTECTION_FAULT_DIFF_AREA_REMOVED = ( VSS_PROTECTION_FAULT_IO_FAILURE + 1 ), 31 VSS_PROTECTION_FAULT_EXTERNAL_WRITER_TO_DIFF_AREA = ( VSS_PROTECTION_FAULT_DIFF_AREA_REMOVED + 1 ) 32 } VSS_PROTECTION_FAULT; 33 34 typedef enum _VSS_PROTECTION_LEVEL { 35 VSS_PROTECTION_LEVEL_ORIGINAL_VOLUME = 0, 36 VSS_PROTECTION_LEVEL_SNAPSHOT = ( VSS_PROTECTION_LEVEL_ORIGINAL_VOLUME + 1 ) 37 } VSS_PROTECTION_LEVEL; 38 39 typedef enum _VSS_MGMT_OBJECT_TYPE { 40 VSS_MGMT_OBJECT_UNKNOWN = 0, 41 VSS_MGMT_OBJECT_VOLUME = 1, 42 VSS_MGMT_OBJECT_DIFF_VOLUME = 2, 43 VSS_MGMT_OBJECT_DIFF_AREA = 3 44 } VSS_MGMT_OBJECT_TYPE, *PVSS_MGMT_OBJECT_TYPE; 45 46 typedef struct _VSS_VOLUME_PROP { 47 VSS_PWSZ m_pwszVolumeName; 48 VSS_PWSZ m_pwszVolumeDisplayName; 49 } VSS_VOLUME_PROP, *PVSS_VOLUME_PROP; 50 51 typedef struct _VSS_VOLUME_PROTECTION_INFO { 52 VSS_PROTECTION_LEVEL m_protectionLevel; 53 WINBOOL m_volumeIsOfflineForProtection; 54 VSS_PROTECTION_FAULT m_protectionFault; 55 LONG m_failureStatus; 56 WINBOOL m_volumeHasUnusedDiffArea; 57 DWORD m_reserved; 58 } VSS_VOLUME_PROTECTION_INFO; 59 60 #if (_WIN32_WINNT >= 0x0600) 61 62 typedef struct _VSS_DIFF_AREA_PROP { 63 VSS_PWSZ m_pwszVolumeName; 64 VSS_PWSZ m_pwszDiffAreaVolumeName; 65 LONGLONG m_llMaximumDiffSpace; 66 LONGLONG m_llAllocatedDiffSpace; 67 LONGLONG m_llUsedDiffSpace; 68 } VSS_DIFF_AREA_PROP, *PVSS_DIFF_AREA_PROP; 69 70 typedef struct _VSS_DIFF_VOLUME_PROP { 71 VSS_PWSZ m_pwszVolumeName; 72 VSS_PWSZ m_pwszVolumeDisplayName; 73 LONGLONG m_llVolumeFreeSpace; 74 LONGLONG m_llVolumeTotalSpace; 75 } VSS_DIFF_VOLUME_PROP, *PVSS_DIFF_VOLUME_PROP; 76 77 typedef union _VSS_MGMT_OBJECT_UNION { 78 VSS_VOLUME_PROP Vol; 79 VSS_DIFF_VOLUME_PROP DiffVol; 80 VSS_DIFF_AREA_PROP DiffArea; 81 } VSS_MGMT_OBJECT_UNION, *PVSS_MGMT_OBJECT_UNION; 82 83 typedef struct _VSS_MGMT_OBJECT_PROP { 84 VSS_MGMT_OBJECT_TYPE Type; 85 VSS_MGMT_OBJECT_UNION Obj; 86 } VSS_MGMT_OBJECT_PROP, *PVSS_MGMT_OBJECT_PROP; 87 88 #endif /* (_WIN32_WINNT >= 0x0600) */ 89 90 #ifdef __cplusplus 91 } 92 #endif 93 94 #undef INTERFACE 95 #define INTERFACE IVssDifferentialSoftwareSnapshotMgmt 96 /*IID_IVssDifferentialSoftwareSnapshotMgmt is defined as 214A0F28-B737-4026-B847-4F9E37D79529*/ 97 #ifdef __GNUC__ 98 #warning COM interfaces layout in this header has not been verified. 99 #warning COM interfaces with incorrect layout may not work at all. 100 __MINGW_BROKEN_INTERFACE(INTERFACE) 101 #endif 102 DECLARE_INTERFACE_(IVssDifferentialSoftwareSnapshotMgmt,IUnknown) 103 { 104 BEGIN_INTERFACE 105 106 /* IUnknown methods */ 107 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 108 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 109 STDMETHOD_(ULONG, Release)(THIS) PURE; 110 111 /* IVssDifferentialSoftwareSnapshotMgmt methods */ 112 STDMETHOD_(HRESULT,AddDiffArea)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) PURE; 113 STDMETHOD_(HRESULT,ChangeDiffAreaMaximumSize)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) PURE; 114 STDMETHOD_(HRESULT,QueryVolumesSupportedForDiffAreas)(THIS_ VSS_PWSZ pwszOriginalVolumeName,IVssEnumMgmtObject **ppEnum) PURE; 115 STDMETHOD_(HRESULT,QueryDiffAreasForVolume)(THIS_ VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) PURE; 116 STDMETHOD_(HRESULT,QueryDiffAreasOnVolume)(THIS_ VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) PURE; 117 STDMETHOD_(HRESULT,QueryDiffAreasForSnapshot)(THIS_ VSS_ID SnapshotId,IVssEnumMgmtObject **ppEnum) PURE; 118 STDMETHOD_(HRESULT,Opmun08NotUsedOnWire)(THIS) PURE; /* Reserved */ 119 120 END_INTERFACE 121 }; 122 #ifdef COBJMACROS 123 #define IVssDifferentialSoftwareSnapshotMgmt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 124 #define IVssDifferentialSoftwareSnapshotMgmt_AddRef(This) (This)->lpVtbl->AddRef(This) 125 #define IVssDifferentialSoftwareSnapshotMgmt_Release(This) (This)->lpVtbl->Release(This) 126 #define IVssDifferentialSoftwareSnapshotMgmt_AddDiffArea(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) (This)->lpVtbl->AddDiffArea(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) 127 #define IVssDifferentialSoftwareSnapshotMgmt_ChangeDiffAreaMaximumSize(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) (This)->lpVtbl->ChangeDiffAreaMaximumSize(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) 128 #define IVssDifferentialSoftwareSnapshotMgmt_QueryVolumesSupportedForDiffAreas(This,pwszOriginalVolumeName,ppEnum) (This)->lpVtbl->QueryVolumesSupportedForDiffAreas(This,pwszOriginalVolumeName,ppEnum) 129 #define IVssDifferentialSoftwareSnapshotMgmt_QueryDiffAreasForVolume(This,pwszVolumeName,ppEnum) (This)->lpVtbl->QueryDiffAreasForVolume(This,pwszVolumeName,ppEnum) 130 #define IVssDifferentialSoftwareSnapshotMgmt_QueryDiffAreasOnVolume(This,pwszVolumeName,ppEnum) (This)->lpVtbl->QueryDiffAreasOnVolume(This,pwszVolumeName,ppEnum) 131 #define IVssDifferentialSoftwareSnapshotMgmt_QueryDiffAreasForSnapshot(This,SnapshotId,ppEnum) (This)->lpVtbl->QueryDiffAreasForSnapshot(This,SnapshotId,ppEnum) 132 #define IVssDifferentialSoftwareSnapshotMgmt_Opmun08NotUsedOnWire(This) 133 #endif /*COBJMACROS*/ 134 135 #if (_WIN32_WINNT >= 0x0600) 136 #undef INTERFACE 137 #define INTERFACE IVssDifferentialSoftwareSnapshotMgmt2 138 #ifdef __GNUC__ 139 #warning COM interfaces layout in this header has not been verified. 140 #warning COM interfaces with incorrect layout may not work at all. 141 __MINGW_BROKEN_INTERFACE(INTERFACE) 142 #endif 143 DECLARE_INTERFACE_(IVssDifferentialSoftwareSnapshotMgmt2,IVssDifferentialSoftwareSnapshotMgmt) 144 { 145 BEGIN_INTERFACE 146 147 /* IUnknown methods */ 148 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 149 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 150 STDMETHOD_(ULONG, Release)(THIS) PURE; 151 152 /* IVssDifferentialSoftwareSnapshotMgmt methods */ 153 STDMETHOD_(HRESULT,AddDiffArea)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) PURE; 154 STDMETHOD_(HRESULT,ChangeDiffAreaMaximumSize)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) PURE; 155 STDMETHOD_(HRESULT,QueryVolumesSupportedForDiffAreas)(THIS_ VSS_PWSZ pwszOriginalVolumeName,IVssEnumMgmtObject **ppEnum) PURE; 156 STDMETHOD_(HRESULT,QueryDiffAreasForVolume)(THIS_ VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) PURE; 157 STDMETHOD_(HRESULT,QueryDiffAreasOnVolume)(THIS_ VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) PURE; 158 STDMETHOD_(HRESULT,QueryDiffAreasForSnapshot)(THIS_ VSS_ID SnapshotId,IVssEnumMgmtObject **ppEnum) PURE; 159 160 /* IVssDifferentialSoftwareSnapshotMgmt2 methods */ 161 STDMETHOD_(HRESULT,ChangeDiffAreaMaximumSizeEx)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace,WINBOOL bVolatile) PURE; 162 STDMETHOD_(HRESULT,MigrateDiffAreas)(THIS) PURE; /*Unsupported*/ 163 STDMETHOD_(HRESULT,QueryMigrationStatus)(THIS) PURE; /*Unsupported*/ 164 STDMETHOD_(HRESULT,SetSnapshotPriority)(THIS) PURE; /*Unsupported*/ 165 166 END_INTERFACE 167 }; 168 #ifdef COBJMACROS 169 #define IVssDifferentialSoftwareSnapshotMgmt2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 170 #define IVssDifferentialSoftwareSnapshotMgmt2_AddRef(This) (This)->lpVtbl->AddRef(This) 171 #define IVssDifferentialSoftwareSnapshotMgmt2_Release(This) (This)->lpVtbl->Release(This) 172 #define IVssDifferentialSoftwareSnapshotMgmt2_AddDiffArea(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) (This)->lpVtbl->AddDiffArea(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) 173 #define IVssDifferentialSoftwareSnapshotMgmt2_ChangeDiffAreaMaximumSize(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) (This)->lpVtbl->ChangeDiffAreaMaximumSize(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) 174 #define IVssDifferentialSoftwareSnapshotMgmt2_QueryVolumesSupportedForDiffAreas(This,pwszOriginalVolumeName,ppEnum) (This)->lpVtbl->QueryVolumesSupportedForDiffAreas(This,pwszOriginalVolumeName,ppEnum) 175 #define IVssDifferentialSoftwareSnapshotMgmt2_QueryDiffAreasForVolume(This,pwszVolumeName,ppEnum) (This)->lpVtbl->QueryDiffAreasForVolume(This,pwszVolumeName,ppEnum) 176 #define IVssDifferentialSoftwareSnapshotMgmt2_QueryDiffAreasOnVolume(This,pwszVolumeName,ppEnum) (This)->lpVtbl->QueryDiffAreasOnVolume(This,pwszVolumeName,ppEnum) 177 #define IVssDifferentialSoftwareSnapshotMgmt2_QueryDiffAreasForSnapshot(This,SnapshotId,ppEnum) (This)->lpVtbl->QueryDiffAreasForSnapshot(This,SnapshotId,ppEnum) 178 #define IVssDifferentialSoftwareSnapshotMgmt2_ChangeDiffAreaMaximumSizeEx(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace,bVolatile) (This)->lpVtbl->ChangeDiffAreaMaximumSizeEx(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace,bVolatile) 179 #define IVssDifferentialSoftwareSnapshotMgmt2_MigrateDiffAreas() (This)->lpVtbl->MigrateDiffAreas(This) 180 #define IVssDifferentialSoftwareSnapshotMgmt2_QueryMigrationStatus() (This)->lpVtbl->QueryMigrationStatus(This) 181 #define IVssDifferentialSoftwareSnapshotMgmt2_SetSnapshotPriority() (This)->lpVtbl->SetSnapshotPriority(This) 182 #endif /*COBJMACROS*/ 183 184 #undef INTERFACE 185 #define INTERFACE IVssDifferentialSoftwareSnapshotMgmt3 186 #ifdef __GNUC__ 187 #warning COM interfaces layout in this header has not been verified. 188 #warning COM interfaces with incorrect layout may not work at all. 189 __MINGW_BROKEN_INTERFACE(INTERFACE) 190 #endif 191 DECLARE_INTERFACE_(IVssDifferentialSoftwareSnapshotMgmt3,IVssDifferentialSoftwareSnapshotMgmt2) 192 { 193 BEGIN_INTERFACE 194 195 /* IUnknown methods */ 196 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 197 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 198 STDMETHOD_(ULONG, Release)(THIS) PURE; 199 200 /* IVssDifferentialSoftwareSnapshotMgmt methods */ 201 STDMETHOD_(HRESULT,AddDiffArea)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) PURE; 202 STDMETHOD_(HRESULT,ChangeDiffAreaMaximumSize)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) PURE; 203 STDMETHOD_(HRESULT,QueryVolumesSupportedForDiffAreas)(THIS_ VSS_PWSZ pwszOriginalVolumeName,IVssEnumMgmtObject **ppEnum) PURE; 204 STDMETHOD_(HRESULT,QueryDiffAreasForVolume)(THIS_ VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) PURE; 205 STDMETHOD_(HRESULT,QueryDiffAreasOnVolume)(THIS_ VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) PURE; 206 STDMETHOD_(HRESULT,QueryDiffAreasForSnapshot)(THIS_ VSS_ID SnapshotId,IVssEnumMgmtObject **ppEnum) PURE; 207 208 /* IVssDifferentialSoftwareSnapshotMgmt2 methods */ 209 STDMETHOD_(HRESULT,ChangeDiffAreaMaximumSizeEx)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace,WINBOOL bVolatile) PURE; 210 STDMETHOD_(HRESULT,MigrateDiffAreas)(THIS) PURE; /*Unsupported*/ 211 STDMETHOD_(HRESULT,QueryMigrationStatus)(THIS) PURE; /*Unsupported*/ 212 STDMETHOD_(HRESULT,SetSnapshotPriority)(THIS) PURE; /*Unsupported*/ 213 214 /* IVssDifferentialSoftwareSnapshotMgmt3 methods */ 215 STDMETHOD_(HRESULT,SetVolumeProtectLevel)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PROTECTION_LEVEL protectionLevel) PURE; 216 STDMETHOD_(HRESULT,GetVolumeProtectLevel)(THIS_ VSS_PWSZ pwszVolumeName,VSS_VOLUME_PROTECTION_INFO *protectionLevel) PURE; 217 STDMETHOD_(HRESULT,ClearVolumeProtectFault)(THIS_ VSS_PWSZ pwszVolumeName) PURE; 218 STDMETHOD_(HRESULT,DeleteUnusedDiffAreas)(THIS_ VSS_PWSZ pwszDiffAreaVolumeName) PURE; 219 STDMETHOD_(HRESULT,QuerySnapshotDeltaBitmap)(THIS) PURE; /*Unsupported*/ 220 221 END_INTERFACE 222 }; 223 #ifdef COBJMACROS 224 #define IVssDifferentialSoftwareSnapshotMgmt3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 225 #define IVssDifferentialSoftwareSnapshotMgmt3_AddRef(This) (This)->lpVtbl->AddRef(This) 226 #define IVssDifferentialSoftwareSnapshotMgmt3_Release(This) (This)->lpVtbl->Release(This) 227 #define IVssDifferentialSoftwareSnapshotMgmt3_AddDiffArea(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) (This)->lpVtbl->AddDiffArea(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) 228 #define IVssDifferentialSoftwareSnapshotMgmt3_ChangeDiffAreaMaximumSize(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) (This)->lpVtbl->ChangeDiffAreaMaximumSize(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) 229 #define IVssDifferentialSoftwareSnapshotMgmt3_QueryVolumesSupportedForDiffAreas(This,pwszOriginalVolumeName,ppEnum) (This)->lpVtbl->QueryVolumesSupportedForDiffAreas(This,pwszOriginalVolumeName,ppEnum) 230 #define IVssDifferentialSoftwareSnapshotMgmt3_QueryDiffAreasForVolume(This,pwszVolumeName,ppEnum) (This)->lpVtbl->QueryDiffAreasForVolume(This,pwszVolumeName,ppEnum) 231 #define IVssDifferentialSoftwareSnapshotMgmt3_QueryDiffAreasOnVolume(This,pwszVolumeName,ppEnum) (This)->lpVtbl->QueryDiffAreasOnVolume(This,pwszVolumeName,ppEnum) 232 #define IVssDifferentialSoftwareSnapshotMgmt3_QueryDiffAreasForSnapshot(This,SnapshotId,ppEnum) (This)->lpVtbl->QueryDiffAreasForSnapshot(This,SnapshotId,ppEnum) 233 #define IVssDifferentialSoftwareSnapshotMgmt3_ChangeDiffAreaMaximumSizeEx(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace,bVolatile) (This)->lpVtbl->ChangeDiffAreaMaximumSizeEx(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace,bVolatile) 234 #define IVssDifferentialSoftwareSnapshotMgmt3_MigrateDiffAreas() (This)->lpVtbl->MigrateDiffAreas(This) 235 #define IVssDifferentialSoftwareSnapshotMgmt3_QueryMigrationStatus() (This)->lpVtbl->QueryMigrationStatus(This) 236 #define IVssDifferentialSoftwareSnapshotMgmt3_SetSnapshotPriority() (This)->lpVtbl->SetSnapshotPriority(This) 237 #define IVssDifferentialSoftwareSnapshotMgmt3_SetVolumeProtectLevel(This,pwszVolumeName,protectionLevel) (This)->lpVtbl->SetVolumeProtectLevel(This,pwszVolumeName,protectionLevel) 238 #define IVssDifferentialSoftwareSnapshotMgmt3_GetVolumeProtectLevel(This,pwszVolumeName,protectionLevel) (This)->lpVtbl->GetVolumeProtectLevel(This,pwszVolumeName,protectionLevel) 239 #define IVssDifferentialSoftwareSnapshotMgmt3_ClearVolumeProtectFault(This,pwszVolumeName) (This)->lpVtbl->ClearVolumeProtectFault(This,pwszVolumeName) 240 #define IVssDifferentialSoftwareSnapshotMgmt3_DeleteUnusedDiffAreas(This,pwszDiffAreaVolumeName) (This)->lpVtbl->DeleteUnusedDiffAreas(This,pwszDiffAreaVolumeName) 241 #define IVssDifferentialSoftwareSnapshotMgmt3_QuerySnapshotDeltaBitmap() (This)->lpVtbl->QuerySnapshotDeltaBitmap(This) 242 #endif /*COBJMACROS*/ 243 244 #undef INTERFACE 245 #define INTERFACE IVssEnumMgmtObject 246 /*IID_IVssEnumMgmtObject is defined as 01954E6B-9254-4e6e-808C-C9E05D007696*/ 247 #ifdef __GNUC__ 248 #warning COM interfaces layout in this header has not been verified. 249 #warning COM interfaces with incorrect layout may not work at all. 250 __MINGW_BROKEN_INTERFACE(INTERFACE) 251 #endif 252 DECLARE_INTERFACE_(IVssEnumMgmtObject,IUnknown) 253 { 254 BEGIN_INTERFACE 255 256 /* IUnknown methods */ 257 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 258 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 259 STDMETHOD_(ULONG, Release)(THIS) PURE; 260 261 /* IVssEnumMgmtObject methods */ 262 STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt,VSS_MGMT_OBJECT_PROP *rgelt,ULONG *pceltFetched) PURE; 263 STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; 264 STDMETHOD_(HRESULT,Reset)(THIS) PURE; 265 STDMETHOD_(HRESULT,Clone)(THIS_ IVssEnumMgmtObject **ppenum) PURE; 266 267 END_INTERFACE 268 }; 269 #ifdef COBJMACROS 270 #define IVssEnumMgmtObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 271 #define IVssEnumMgmtObject_AddRef(This) (This)->lpVtbl->AddRef(This) 272 #define IVssEnumMgmtObject_Release(This) (This)->lpVtbl->Release(This) 273 #define IVssEnumMgmtObject_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched) 274 #define IVssEnumMgmtObject_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) 275 #define IVssEnumMgmtObject_Reset() (This)->lpVtbl->Reset(This) 276 #define IVssEnumMgmtObject_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) 277 #endif /*COBJMACROS*/ 278 279 #endif /* (_WIN32_WINNT >= 0x0600) */ 280 281 #undef INTERFACE 282 #define INTERFACE IVssSnapshotMgmt 283 /*IID_IVssSnapshotMgmt is defined as FA7DF749-66E7-4986-A27F-E2F04AE53772*/ 284 #ifdef __GNUC__ 285 #warning COM interfaces layout in this header has not been verified. 286 #warning COM interfaces with incorrect layout may not work at all. 287 __MINGW_BROKEN_INTERFACE(INTERFACE) 288 #endif 289 DECLARE_INTERFACE_(IVssSnapshotMgmt,IUnknown) 290 { 291 BEGIN_INTERFACE 292 293 /* IUnknown methods */ 294 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 295 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 296 STDMETHOD_(ULONG, Release)(THIS) PURE; 297 298 /* IVssSnapshotMgmt methods */ 299 STDMETHOD_(HRESULT,GetProviderMgmtInterface)(THIS_ VSS_ID ProviderId,REFIID InterfaceId,IUnknown **ppItf) PURE; 300 STDMETHOD_(HRESULT,QueryVolumesSupportedForSnapshots)(THIS) PURE; /*Unsupported*/ 301 STDMETHOD_(HRESULT,QuerySnapshotsByVolume)(THIS) PURE; /*Unsupported*/ 302 303 END_INTERFACE 304 }; 305 #ifdef COBJMACROS 306 #define IVssSnapshotMgmt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 307 #define IVssSnapshotMgmt_AddRef(This) (This)->lpVtbl->AddRef(This) 308 #define IVssSnapshotMgmt_Release(This) (This)->lpVtbl->Release(This) 309 #define IVssSnapshotMgmt_GetProviderMgmtInterface(This,ProviderId,InterfaceId,ppItf) (This)->lpVtbl->GetProviderMgmtInterface(This,ProviderId,InterfaceId,ppItf) 310 #define IVssSnapshotMgmt_QueryVolumesSupportedForSnapshots() (This)->lpVtbl->QueryVolumesSupportedForSnapshots(This) 311 #define IVssSnapshotMgmt_QuerySnapshotsByVolume() (This)->lpVtbl->QuerySnapshotsByVolume(This) 312 #endif /*COBJMACROS*/ 313 314 #undef INTERFACE 315 #define INTERFACE IVssSnapshotMgmt2 316 DECLARE_INTERFACE_(IVssSnapshotMgmt2,IUnknown) 317 { 318 BEGIN_INTERFACE 319 320 /* IUnknown methods */ 321 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 322 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 323 STDMETHOD_(ULONG, Release)(THIS) PURE; 324 325 /* IVssSnapshotMgmt2 methods */ 326 STDMETHOD_(HRESULT,GetMinDiffAreaSize)(THIS_ LONGLONG *pllMinDiffAreaSize) PURE; 327 328 END_INTERFACE 329 }; 330 #ifdef COBJMACROS 331 #define IVssSnapshotMgmt2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 332 #define IVssSnapshotMgmt2_AddRef(This) (This)->lpVtbl->AddRef(This) 333 #define IVssSnapshotMgmt2_Release(This) (This)->lpVtbl->Release(This) 334 #define IVssSnapshotMgmt2_GetMinDiffAreaSize(This,pllMinDiffAreaSize) (This)->lpVtbl->GetMinDiffAreaSize(This,pllMinDiffAreaSize) 335 #endif /*COBJMACROS*/ 336 337 #endif /*_INC_VSMGT*/ 338