| 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 |
|
| 7 |
cpp_quote("#include <winapifamily.h>") |
| 8 |
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") |
| 9 |
|
| 10 |
import "oaidl.idl"; |
| 11 |
import "ocidl.idl"; |
| 12 |
|
| 13 |
cpp_quote("#include \"vsserror.h\" ") |
| 14 |
|
| 15 |
cpp_quote("") |
| 16 |
typedef WCHAR *VSS_PWSZ; |
| 17 |
typedef LONGLONG VSS_TIMESTAMP; |
| 18 |
typedef GUID VSS_ID; |
| 19 |
|
| 20 |
cpp_quote("") |
| 21 |
typedef enum _VSS_OBJECT_TYPE { |
| 22 |
VSS_OBJECT_UNKNOWN = 0, |
| 23 |
VSS_OBJECT_NONE, |
| 24 |
VSS_OBJECT_SNAPSHOT_SET, |
| 25 |
VSS_OBJECT_SNAPSHOT, |
| 26 |
VSS_OBJECT_PROVIDER, |
| 27 |
VSS_OBJECT_TYPE_COUNT |
| 28 |
} VSS_OBJECT_TYPE, *PVSS_OBJECT_TYPE; |
| 29 |
|
| 30 |
cpp_quote("") |
| 31 |
typedef enum _VSS_SNAPSHOT_STATE { |
| 32 |
VSS_SS_UNKNOWN = 0, |
| 33 |
VSS_SS_PREPARING, |
| 34 |
VSS_SS_PROCESSING_PREPARE, |
| 35 |
VSS_SS_PREPARED, |
| 36 |
VSS_SS_PROCESSING_PRECOMMIT, |
| 37 |
VSS_SS_PRECOMMITTED, |
| 38 |
VSS_SS_PROCESSING_COMMIT, |
| 39 |
VSS_SS_COMMITTED, |
| 40 |
VSS_SS_PROCESSING_POSTCOMMIT, |
| 41 |
VSS_SS_PROCESSING_PREFINALCOMMIT, |
| 42 |
VSS_SS_PREFINALCOMMITTED, |
| 43 |
VSS_SS_PROCESSING_POSTFINALCOMMIT, |
| 44 |
VSS_SS_CREATED, |
| 45 |
VSS_SS_ABORTED, |
| 46 |
VSS_SS_DELETED, |
| 47 |
VSS_SS_POSTCOMMITTED, |
| 48 |
VSS_SS_COUNT |
| 49 |
} VSS_SNAPSHOT_STATE, *PVSS_SNAPSHOT_STATE; |
| 50 |
|
| 51 |
cpp_quote("") |
| 52 |
typedef enum _VSS_VOLUME_SNAPSHOT_ATTRIBUTES { |
| 53 |
VSS_VOLSNAP_ATTR_PERSISTENT = 0x00000001, |
| 54 |
VSS_VOLSNAP_ATTR_NO_AUTORECOVERY = 0x00000002, |
| 55 |
VSS_VOLSNAP_ATTR_CLIENT_ACCESSIBLE = 0x00000004, |
| 56 |
VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE = 0x00000008, |
| 57 |
VSS_VOLSNAP_ATTR_NO_WRITERS = 0x00000010, |
| 58 |
VSS_VOLSNAP_ATTR_TRANSPORTABLE = 0x00000020, |
| 59 |
VSS_VOLSNAP_ATTR_NOT_SURFACED = 0x00000040, |
| 60 |
VSS_VOLSNAP_ATTR_NOT_TRANSACTED = 0x00000080, |
| 61 |
VSS_VOLSNAP_ATTR_HARDWARE_ASSISTED = 0x00010000, |
| 62 |
VSS_VOLSNAP_ATTR_DIFFERENTIAL = 0x00020000, |
| 63 |
VSS_VOLSNAP_ATTR_PLEX = 0x00040000, |
| 64 |
VSS_VOLSNAP_ATTR_IMPORTED = 0x00080000, |
| 65 |
VSS_VOLSNAP_ATTR_EXPOSED_LOCALLY = 0x00100000, |
| 66 |
VSS_VOLSNAP_ATTR_EXPOSED_REMOTELY = 0x00200000, |
| 67 |
VSS_VOLSNAP_ATTR_AUTORECOVER = 0x00400000, |
| 68 |
VSS_VOLSNAP_ATTR_ROLLBACK_RECOVERY = 0x00800000, |
| 69 |
VSS_VOLSNAP_ATTR_DELAYED_POSTSNAPSHOT = 0x01000000, |
| 70 |
VSS_VOLSNAP_ATTR_TXF_RECOVERY = 0x02000000, |
| 71 |
VSS_VOLSNAP_ATTR_FILE_SHARE = 0x04000000 |
| 72 |
} VSS_VOLUME_SNAPSHOT_ATTRIBUTES, *PVSS_VOLUME_SNAPSHOT_ATTRIBUTES; |
| 73 |
|
| 74 |
cpp_quote("") |
| 75 |
typedef enum _VSS_SNAPSHOT_CONTEXT { |
| 76 |
VSS_CTX_BACKUP = 0x00000000, |
| 77 |
VSS_CTX_FILE_SHARE_BACKUP = VSS_VOLSNAP_ATTR_NO_WRITERS, |
| 78 |
VSS_CTX_NAS_ROLLBACK = VSS_VOLSNAP_ATTR_PERSISTENT | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE | VSS_VOLSNAP_ATTR_NO_WRITERS, |
| 79 |
VSS_CTX_APP_ROLLBACK = VSS_VOLSNAP_ATTR_PERSISTENT | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE, |
| 80 |
VSS_CTX_CLIENT_ACCESSIBLE = VSS_VOLSNAP_ATTR_PERSISTENT | VSS_VOLSNAP_ATTR_CLIENT_ACCESSIBLE | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE | VSS_VOLSNAP_ATTR_NO_WRITERS, |
| 81 |
VSS_CTX_CLIENT_ACCESSIBLE_WRITERS = VSS_VOLSNAP_ATTR_PERSISTENT | VSS_VOLSNAP_ATTR_CLIENT_ACCESSIBLE | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE, |
| 82 |
VSS_CTX_ALL = 0xFFFFFFFF |
| 83 |
} VSS_SNAPSHOT_CONTEXT, *PVSS_SNAPSHOT_CONTEXT; |
| 84 |
|
| 85 |
cpp_quote("") |
| 86 |
typedef enum _VSS_PROVIDER_CAPABILITIES { |
| 87 |
VSS_PRV_CAPABILITY_LEGACY = 0x00000001, |
| 88 |
VSS_PRV_CAPABILITY_COMPLIANT = 0x00000002, |
| 89 |
VSS_PRV_CAPABILITY_LUN_REPOINT = 0x00000004, |
| 90 |
VSS_PRV_CAPABILITY_LUN_RESYNC = 0x00000008, |
| 91 |
VSS_PRV_CAPABILITY_OFFLINE_CREATION = 0x00000010, |
| 92 |
VSS_PRV_CAPABILITY_MULTIPLE_IMPORT = 0x00000020, |
| 93 |
VSS_PRV_CAPABILITY_RECYCLING = 0x00000040, |
| 94 |
VSS_PRV_CAPABILITY_PLEX = 0x00000080, |
| 95 |
VSS_PRV_CAPABILITY_DIFFERENTIAL = 0x00000100, |
| 96 |
VSS_PRV_CAPABILITY_CLUSTERED = 0x00000200 |
| 97 |
} VSS_PROVIDER_CAPABILITIES, *PVSS_PROVIDER_CAPABILITIES; |
| 98 |
|
| 99 |
cpp_quote("") |
| 100 |
typedef enum _VSS_HARDWARE_OPTIONS { |
| 101 |
VSS_BREAKEX_FLAG_MASK_LUNS = 0x00000001, |
| 102 |
VSS_BREAKEX_FLAG_MAKE_READ_WRITE = 0x00000002, |
| 103 |
VSS_BREAKEX_FLAG_REVERT_IDENTITY_ALL = 0x00000004, |
| 104 |
VSS_BREAKEX_FLAG_REVERT_IDENTITY_NONE = 0x00000008, |
| 105 |
VSS_ONLUNSTATECHANGE_NOTIFY_READ_WRITE = 0x00000100, |
| 106 |
VSS_ONLUNSTATECHANGE_NOTIFY_LUN_PRE_RECOVERY = 0x00000200, |
| 107 |
VSS_ONLUNSTATECHANGE_NOTIFY_LUN_POST_RECOVERY = 0x00000400, |
| 108 |
VSS_ONLUNSTATECHANGE_DO_MASK_LUNS = 0x00000800 |
| 109 |
} VSS_HARDWARE_OPTIONS, *PVSS_HARDWARE_OPTIONS; |
| 110 |
|
| 111 |
cpp_quote("") |
| 112 |
typedef enum _VSS_RECOVERY_OPTIONS { |
| 113 |
VSS_RECOVERY_REVERT_IDENTITY_ALL = 0x00000100, |
| 114 |
VSS_RECOVERY_NO_VOLUME_CHECK = 0x00000200 |
| 115 |
} VSS_RECOVERY_OPTIONS, *PVSS_RECOVERY_OPTIONS; |
| 116 |
|
| 117 |
cpp_quote("") |
| 118 |
typedef enum _VSS_WRITER_STATE { |
| 119 |
VSS_WS_UNKNOWN = 0, |
| 120 |
VSS_WS_STABLE, |
| 121 |
VSS_WS_WAITING_FOR_FREEZE, |
| 122 |
VSS_WS_WAITING_FOR_THAW, |
| 123 |
VSS_WS_WAITING_FOR_POST_SNAPSHOT, |
| 124 |
VSS_WS_WAITING_FOR_BACKUP_COMPLETE, |
| 125 |
VSS_WS_FAILED_AT_IDENTIFY, |
| 126 |
VSS_WS_FAILED_AT_PREPARE_BACKUP, |
| 127 |
VSS_WS_FAILED_AT_PREPARE_SNAPSHOT, |
| 128 |
VSS_WS_FAILED_AT_FREEZE, |
| 129 |
VSS_WS_FAILED_AT_THAW, |
| 130 |
VSS_WS_FAILED_AT_POST_SNAPSHOT, |
| 131 |
VSS_WS_FAILED_AT_BACKUP_COMPLETE, |
| 132 |
VSS_WS_FAILED_AT_PRE_RESTORE, |
| 133 |
VSS_WS_FAILED_AT_POST_RESTORE, |
| 134 |
VSS_WS_FAILED_AT_BACKUPSHUTDOWN, |
| 135 |
VSS_WS_COUNT |
| 136 |
} VSS_WRITER_STATE, *PVSS_WRITER_STATE; |
| 137 |
|
| 138 |
cpp_quote("") |
| 139 |
typedef enum _VSS_BACKUP_TYPE { |
| 140 |
VSS_BT_UNDEFINED, |
| 141 |
VSS_BT_FULL, |
| 142 |
VSS_BT_INCREMENTAL, |
| 143 |
VSS_BT_DIFFERENTIAL, |
| 144 |
VSS_BT_LOG, |
| 145 |
VSS_BT_COPY, |
| 146 |
VSS_BT_OTHER |
| 147 |
} VSS_BACKUP_TYPE, *PVSS_BACKUP_TYPE; |
| 148 |
|
| 149 |
cpp_quote("") |
| 150 |
typedef enum _VSS_RESTORE_TYPE { |
| 151 |
VSS_RTYPE_UNDEFINED, |
| 152 |
VSS_RTYPE_BY_COPY, |
| 153 |
VSS_RTYPE_IMPORT, |
| 154 |
VSS_RTYPE_OTHER |
| 155 |
} VSS_RESTORE_TYPE, *PVSS_RESTORE_TYPE; |
| 156 |
|
| 157 |
cpp_quote("") |
| 158 |
typedef enum _VSS_ROLLFORWARD_TYPE { |
| 159 |
VSS_RF_UNDEFINED, |
| 160 |
VSS_RF_NONE, |
| 161 |
VSS_RF_ALL, |
| 162 |
VSS_RF_PARTIAL |
| 163 |
} VSS_ROLLFORWARD_TYPE, *PVSS_ROLLFORWARD_TYPE; |
| 164 |
|
| 165 |
cpp_quote("") |
| 166 |
typedef enum _VSS_PROVIDER_TYPE { |
| 167 |
VSS_PROV_UNKNOWN = 0, |
| 168 |
VSS_PROV_SYSTEM = 1, |
| 169 |
VSS_PROV_SOFTWARE = 2, |
| 170 |
VSS_PROV_HARDWARE = 3, |
| 171 |
VSS_PROV_FILESHARE = 4 |
| 172 |
} VSS_PROVIDER_TYPE, *PVSS_PROVIDER_TYPE; |
| 173 |
|
| 174 |
cpp_quote("") |
| 175 |
typedef enum _VSS_APPLICATION_LEVEL { |
| 176 |
VSS_APP_UNKNOWN = 0, |
| 177 |
VSS_APP_SYSTEM = 1, |
| 178 |
VSS_APP_BACK_END = 2, |
| 179 |
VSS_APP_FRONT_END = 3, |
| 180 |
VSS_APP_SYSTEM_RM = 4, |
| 181 |
VSS_APP_AUTO = -1 |
| 182 |
} VSS_APPLICATION_LEVEL, *PVSS_APPLICATION_LEVEL; |
| 183 |
|
| 184 |
cpp_quote("") |
| 185 |
typedef enum _VSS_SNAPSHOT_COMPATIBILITY { |
| 186 |
VSS_SC_DISABLE_DEFRAG = 0x1, |
| 187 |
VSS_SC_DISABLE_CONTENTINDEX = 0x2 |
| 188 |
} VSS_SNAPSHOT_COMPATIBILITY; |
| 189 |
|
| 190 |
cpp_quote("") |
| 191 |
typedef enum _VSS_SNAPSHOT_PROPERTY_ID { |
| 192 |
VSS_SPROPID_UNKNOWN = 0x00000000, |
| 193 |
VSS_SPROPID_SNAPSHOT_ID = 0x00000001, |
| 194 |
VSS_SPROPID_SNAPSHOT_SET_ID = 0x00000002, |
| 195 |
VSS_SPROPID_SNAPSHOTS_COUNT = 0x00000003, |
| 196 |
VSS_SPROPID_SNAPSHOT_DEVICE = 0x00000004, |
| 197 |
VSS_SPROPID_ORIGINAL_VOLUME = 0x00000005, |
| 198 |
VSS_SPROPID_ORIGINATING_MACHINE = 0x00000006, |
| 199 |
VSS_SPROPID_SERVICE_MACHINE = 0x00000007, |
| 200 |
VSS_SPROPID_EXPOSED_NAME = 0x00000008, |
| 201 |
VSS_SPROPID_EXPOSED_PATH = 0x00000009, |
| 202 |
VSS_SPROPID_PROVIDER_ID = 0x0000000A, |
| 203 |
VSS_SPROPID_SNAPSHOT_ATTRIBUTES = 0x0000000B, |
| 204 |
VSS_SPROPID_CREATION_TIMESTAMP = 0x0000000C, |
| 205 |
VSS_SPROPID_STATUS = 0x0000000D |
| 206 |
} VSS_SNAPSHOT_PROPERTY_ID, *PVSS_SNAPSHOT_PROPERTY_ID; |
| 207 |
|
| 208 |
cpp_quote("") |
| 209 |
typedef enum _VSS_FILE_SPEC_BACKUP_TYPE { |
| 210 |
VSS_FSBT_FULL_BACKUP_REQUIRED = 0x00000001, |
| 211 |
VSS_FSBT_DIFFERENTIAL_BACKUP_REQUIRED = 0x00000002, |
| 212 |
VSS_FSBT_INCREMENTAL_BACKUP_REQUIRED = 0x00000004, |
| 213 |
VSS_FSBT_LOG_BACKUP_REQUIRED = 0x00000008, |
| 214 |
VSS_FSBT_FULL_SNAPSHOT_REQUIRED = 0x00000100, |
| 215 |
VSS_FSBT_DIFFERENTIAL_SNAPSHOT_REQUIRED = 0x00000200, |
| 216 |
VSS_FSBT_INCREMENTAL_SNAPSHOT_REQUIRED = 0x00000400, |
| 217 |
VSS_FSBT_LOG_SNAPSHOT_REQUIRED = 0x00000800, |
| 218 |
VSS_FSBT_CREATED_DURING_BACKUP = 0x00010000, |
| 219 |
VSS_FSBT_ALL_BACKUP_REQUIRED = 0x0000000F, |
| 220 |
VSS_FSBT_ALL_SNAPSHOT_REQUIRED = 0x00000F00 |
| 221 |
} VSS_FILE_SPEC_BACKUP_TYPE, *PVSS_FILE_SPEC_BACKUP_TYPE; |
| 222 |
|
| 223 |
cpp_quote("") |
| 224 |
typedef enum _VSS_BACKUP_SCHEMA { |
| 225 |
VSS_BS_UNDEFINED = 0x00000000, |
| 226 |
VSS_BS_DIFFERENTIAL = 0x00000001, |
| 227 |
VSS_BS_INCREMENTAL = 0x00000002, |
| 228 |
VSS_BS_EXCLUSIVE_INCREMENTAL_DIFFERENTIAL = 0x00000004, |
| 229 |
VSS_BS_LOG = 0x00000008, |
| 230 |
VSS_BS_COPY = 0x00000010, |
| 231 |
VSS_BS_TIMESTAMPED = 0x00000020, |
| 232 |
VSS_BS_LAST_MODIFY = 0x00000040, |
| 233 |
VSS_BS_LSN = 0x00000080, |
| 234 |
VSS_BS_WRITER_SUPPORTS_NEW_TARGET = 0x00000100, |
| 235 |
VSS_BS_WRITER_SUPPORTS_RESTORE_WITH_MOVE = 0x00000200, |
| 236 |
VSS_BS_INDEPENDENT_SYSTEM_STATE = 0x00000400, |
| 237 |
VSS_BS_ROLLFORWARD_RESTORE = 0x00001000, |
| 238 |
VSS_BS_RESTORE_RENAME = 0x00002000, |
| 239 |
VSS_BS_AUTHORITATIVE_RESTORE = 0x00004000, |
| 240 |
VSS_BS_WRITER_SUPPORTS_PARALLEL_RESTORES = 0x00008000 |
| 241 |
} VSS_BACKUP_SCHEMA, *PVSS_BACKUP_SCHEMA; |
| 242 |
|
| 243 |
cpp_quote("") |
| 244 |
typedef struct _VSS_SNAPSHOT_PROP { |
| 245 |
VSS_ID m_SnapshotId; |
| 246 |
VSS_ID m_SnapshotSetId; |
| 247 |
LONG m_lSnapshotsCount; |
| 248 |
VSS_PWSZ m_pwszSnapshotDeviceObject; |
| 249 |
VSS_PWSZ m_pwszOriginalVolumeName; |
| 250 |
VSS_PWSZ m_pwszOriginatingMachine; |
| 251 |
VSS_PWSZ m_pwszServiceMachine; |
| 252 |
VSS_PWSZ m_pwszExposedName; |
| 253 |
VSS_PWSZ m_pwszExposedPath; |
| 254 |
VSS_ID m_ProviderId; |
| 255 |
LONG m_lSnapshotAttributes; |
| 256 |
VSS_TIMESTAMP m_tsCreationTimestamp; |
| 257 |
VSS_SNAPSHOT_STATE m_eStatus; |
| 258 |
} VSS_SNAPSHOT_PROP, *PVSS_SNAPSHOT_PROP; |
| 259 |
|
| 260 |
cpp_quote("") |
| 261 |
typedef struct _VSS_PROVIDER_PROP { |
| 262 |
VSS_ID m_ProviderId; |
| 263 |
VSS_PWSZ m_pwszProviderName; |
| 264 |
VSS_PROVIDER_TYPE m_eProviderType; |
| 265 |
VSS_PWSZ m_pwszProviderVersion; |
| 266 |
VSS_ID m_ProviderVersionId; |
| 267 |
CLSID m_ClassId; |
| 268 |
} VSS_PROVIDER_PROP, *PVSS_PROVIDER_PROP; |
| 269 |
|
| 270 |
cpp_quote("") |
| 271 |
[switch_type(VSS_OBJECT_TYPE)] |
| 272 |
typedef union { |
| 273 |
[case(VSS_OBJECT_SNAPSHOT)] VSS_SNAPSHOT_PROP Snap; |
| 274 |
[case(VSS_OBJECT_PROVIDER)] VSS_PROVIDER_PROP Prov; |
| 275 |
[default]; |
| 276 |
} VSS_OBJECT_UNION; |
| 277 |
|
| 278 |
cpp_quote("") |
| 279 |
typedef struct _VSS_OBJECT_PROP { |
| 280 |
VSS_OBJECT_TYPE Type; |
| 281 |
[switch_is(Type)] VSS_OBJECT_UNION Obj; |
| 282 |
} VSS_OBJECT_PROP, *PVSS_OBJECT_PROP; |
| 283 |
|
| 284 |
cpp_quote("") |
| 285 |
[ |
| 286 |
object, |
| 287 |
uuid(ae1c7110-2f60-11d3-8a39-00c04f72d8e3), |
| 288 |
pointer_default(unique) |
| 289 |
] |
| 290 |
interface IVssEnumObject : IUnknown { |
| 291 |
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] VSS_OBJECT_PROP *rgelt, [out] ULONG *pceltFetched); |
| 292 |
HRESULT Skip([in] ULONG celt); |
| 293 |
HRESULT Reset(); |
| 294 |
HRESULT Clone([in, out] IVssEnumObject **ppenum); |
| 295 |
}; |
| 296 |
|
| 297 |
cpp_quote("") |
| 298 |
[ |
| 299 |
object, |
| 300 |
uuid(507c37b4-cf5b-4e95-b0af-14eb9767467e), |
| 301 |
pointer_default(unique) |
| 302 |
] |
| 303 |
interface IVssAsync : IUnknown { |
| 304 |
HRESULT Cancel(); |
| 305 |
HRESULT Wait([in, defaultvalue(0xFFFFFFFF)] DWORD dwMilliseconds); |
| 306 |
HRESULT QueryStatus([out] HRESULT *pHrResult, [in, out, unique] INT *pReserved); |
| 307 |
}; |
| 308 |
|
| 309 |
cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */") |