summaryrefslogtreecommitdiffstats
path: root/vendor/winapi/src/um/vsbackup.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
commit698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch)
tree173a775858bd501c378080a10dca74132f05bc50 /vendor/winapi/src/um/vsbackup.rs
parentInitial commit. (diff)
downloadrustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz
rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/winapi/src/um/vsbackup.rs')
-rw-r--r--vendor/winapi/src/um/vsbackup.rs520
1 files changed, 520 insertions, 0 deletions
diff --git a/vendor/winapi/src/um/vsbackup.rs b/vendor/winapi/src/um/vsbackup.rs
new file mode 100644
index 000000000..0a7f2602c
--- /dev/null
+++ b/vendor/winapi/src/um/vsbackup.rs
@@ -0,0 +1,520 @@
+// Licensed under the Apache License, Version 2.0
+// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// All files in the project carrying such notice may not be copied, modified, or distributed
+// except according to those terms.
+//! Declaration of backup interfaces.
+use ctypes::c_void;
+use shared::guiddef::IID;
+use shared::minwindef::{BOOL, BYTE, DWORD, UINT};
+use shared::wtypes::BSTR;
+use um::unknwnbase::{IUnknown, IUnknownVtbl};
+use um::vss::{
+ IVssAsync, IVssEnumObject, VSS_BACKUP_TYPE, VSS_ID, VSS_OBJECT_TYPE, VSS_PWSZ,
+ VSS_RESTORE_TYPE, VSS_ROLLFORWARD_TYPE, VSS_SNAPSHOT_PROP, VSS_WRITER_STATE
+};
+use um::vswriter::{
+ IVssWMDependency, IVssWMFiledesc, IVssWriterComponentsVtbl, VSS_COMPONENT_TYPE,
+ VSS_FILE_RESTORE_STATUS, VSS_RESTOREMETHOD_ENUM, VSS_SOURCE_TYPE, VSS_USAGE_TYPE,
+ VSS_WRITERRESTORE_ENUM
+};
+use um::winnt::{HRESULT, LONG, LPCWSTR};
+DEFINE_GUID!{IID_IVssExamineWriterMetadata,
+ 0x902fcf7f, 0xb7fd, 0x42f8, 0x81, 0xf1, 0xb2, 0xe4, 0x00, 0xb1, 0xe5, 0xbd}
+DEFINE_GUID!{IID_IVssExamineWriterMetadataEx,
+ 0x0c0e5ec0, 0xca44, 0x472b, 0xb7, 0x02, 0xe6, 0x52, 0xdb, 0x1c, 0x04, 0x51}
+DEFINE_GUID!{IID_IVssBackupComponents,
+ 0x665c1d5f, 0xc218, 0x414d, 0xa0, 0x5d, 0x7f, 0xef, 0x5f, 0x9d, 0x5c, 0x86}
+DEFINE_GUID!{IID_IVssBackupComponentsEx,
+ 0x963f03ad, 0x9e4c, 0x4a34, 0xac, 0x15, 0xe4, 0xb6, 0x17, 0x4e, 0x50, 0x36}
+STRUCT!{struct VSS_COMPONENTINFO {
+ type_: VSS_COMPONENT_TYPE, // type is a keyword in rust
+ bstrLogicalPath: BSTR,
+ bstrComponentName: BSTR,
+ bstrCaption: BSTR,
+ pbIcon: *mut BYTE,
+ cbIcon: UINT,
+ bRestoreMetadata: bool,
+ bNotifyOnBackupComplete: bool,
+ bSelectable: bool,
+ bSelectableForRestore: bool,
+ dwComponentFlags: DWORD,
+ cFileCount: UINT,
+ cDatabases: UINT,
+ cLogFiles: UINT,
+ cDependencies: UINT,
+}}
+pub type PVSSCOMPONENTINFO = *const VSS_COMPONENTINFO;
+RIDL!{#[uuid(0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)]
+interface IVssWMComponent(IVssWMComponentVtbl): IUnknown(IUnknownVtbl) {
+ fn GetComponentInfo(
+ ppInfo: *mut PVSSCOMPONENTINFO,
+ ) -> HRESULT,
+ fn FreeComponentInfo(
+ pInfo: PVSSCOMPONENTINFO,
+ ) -> HRESULT,
+ fn GetFile(
+ iFile: UINT,
+ ppFiledesc: *mut *mut IVssWMFiledesc,
+ ) -> HRESULT,
+ fn GetDatabaseFile(
+ iDBFile: UINT,
+ ppFiledesc: *mut *mut IVssWMFiledesc,
+ ) -> HRESULT,
+ fn GetDatabaseLogFile(
+ iDbLogFile: UINT,
+ ppFiledesc: *mut *mut IVssWMFiledesc,
+ ) -> HRESULT,
+ fn GetDependency(
+ iDependency: UINT,
+ ppDependency: *mut *mut IVssWMDependency,
+ ) -> HRESULT,
+}}
+RIDL!{#[uuid(0x902fcf7f, 0xb7fd, 0x42f8, 0x81, 0xf1, 0xb2, 0xe4, 0x00, 0xb1, 0xe5, 0xbd)]
+interface IVssExamineWriterMetadata(IVssExamineWriterMetadataVtbl): IUnknown(IUnknownVtbl) {
+ fn GetIdentity(
+ pidInstance: *mut VSS_ID,
+ pidWriter: *mut VSS_ID,
+ pbstrWriterName: *mut BSTR,
+ pUsage: *mut VSS_USAGE_TYPE,
+ pSource: *mut VSS_SOURCE_TYPE,
+ ) -> HRESULT,
+ fn GetFileCounts(
+ pcIncludeFiles: *mut UINT,
+ pcExcludeFiles: *mut UINT,
+ pcComponents: *mut UINT,
+ ) -> HRESULT,
+ fn GetIncludeFile(
+ iFile: UINT,
+ ppFiledesc: *mut *mut IVssWMFiledesc,
+ ) -> HRESULT,
+ fn GetExcludeFile(
+ iFile: UINT,
+ ppFiledesc: *mut *mut IVssWMFiledesc,
+ ) -> HRESULT,
+ fn GetComponent(
+ iComponent: UINT,
+ ppComponent: *mut *mut IVssWMComponent,
+ ) -> HRESULT,
+ fn GetRestoreMethod(
+ pMethod: *mut VSS_RESTOREMETHOD_ENUM,
+ pbstrService: *mut BSTR,
+ pbstrUserProcedure: *mut BSTR,
+ pwriterRestore: *mut VSS_WRITERRESTORE_ENUM,
+ pbRebootRequired: *mut bool,
+ pcMappings: *mut UINT,
+ ) -> HRESULT,
+ fn GetAlternateLocationMapping(
+ iMapping: UINT,
+ ppFiledesc: *mut *mut IVssWMFiledesc,
+ ) -> HRESULT,
+ fn GetBackupSchema(
+ pdwSchemaMask: *mut DWORD,
+ ) -> HRESULT,
+ fn GetDocument(
+ pDoc: *mut c_void,
+ ) -> HRESULT, //TODO IXMLDOMDocument,
+ fn SaveAsXML(
+ pbstrXML: *mut BSTR,
+ ) -> HRESULT,
+ fn LoadFromXML(
+ pbstrXML: *mut BSTR,
+ ) -> HRESULT,
+}}
+RIDL!{#[uuid(0x0c0e5ec0, 0xca44, 0x472b, 0xb7, 0x02, 0xe6, 0x52, 0xdb, 0x1c, 0x04, 0x51)]
+interface IVssExamineWriterMetadataEx(IVssExamineWriterMetadataExVtbl):
+ IVssExamineWriterMetadata(IVssExamineWriterMetadataVtbl) {
+ fn GetIdentityEx(
+ pidInstance: *mut VSS_ID,
+ pidWriter: *mut VSS_ID,
+ pbstrWriterName: *mut BSTR,
+ pbstrInstanceName: *mut BSTR,
+ pUsage: *mut VSS_USAGE_TYPE,
+ pSource: *mut VSS_SOURCE_TYPE,
+ ) -> HRESULT,
+}}
+RIDL!{#[uuid(0xce115780, 0xa611, 0x431b, 0xb5, 0x7f, 0xc3, 0x83, 0x03, 0xab, 0x6a, 0xee)]
+interface IVssExamineWriterMetadataEx2(IVssExamineWriterMetadataEx2Vtbl):
+ IVssExamineWriterMetadataEx(IVssExamineWriterMetadataExVtbl) {
+ fn GetVersion(
+ pdwMajorVersion: *mut DWORD,
+ pdwMinorVersion: *mut DWORD,
+ ) -> HRESULT,
+ fn GetExcludeFromSnapshotCount(
+ pcExcludedFromSnapshot: *mut UINT,
+ ) -> HRESULT,
+ fn GetExcludeFromSnapshotFile(
+ iFile: UINT,
+ ppFiledesc: *mut *mut IVssWMFiledesc,
+ ) -> HRESULT,
+}}
+#[repr(C)]
+pub struct IVssWriterComponentsExt {
+ pub lpVtbl: *const IVssWriterComponentsExtVtbl,
+}
+#[repr(C)]
+pub struct IVssWriterComponentsExtVtbl {
+ pub parent1: IVssWriterComponentsVtbl,
+ pub parent2: IUnknownVtbl,
+}
+RIDL!{#[uuid(0x665c1d5f, 0xc218, 0x414d, 0xa0, 0x5d, 0x7f, 0xef, 0x5f, 0x9d, 0x5c, 0x86)]
+interface IVssBackupComponents(IVssBackupComponentsVtbl): IUnknown(IUnknownVtbl) {
+ fn GetWriterComponentsCount(
+ pcComponents: *mut UINT,
+ ) -> HRESULT,
+ fn GetWriterComponents(
+ iWriter: UINT,
+ ppWriter: *mut *mut IVssWriterComponentsExt,
+ ) -> HRESULT,
+ fn InitializeForBackup(
+ bstrXML: BSTR,
+ ) -> HRESULT,
+ fn SetBackupState(
+ bSelectComponents: bool,
+ bBackupBootableSystemState: bool,
+ backupType: VSS_BACKUP_TYPE,
+ bPartialFileSupport: bool,
+ ) -> HRESULT,
+ fn InitializeForRestore(
+ bstrXML: BSTR,
+ ) -> HRESULT,
+ fn SetRestoreState(
+ restoreType: VSS_RESTORE_TYPE,
+ ) -> HRESULT,
+ fn GatherWriterMetadata(
+ pAsync: *mut *mut IVssAsync,
+ ) -> HRESULT,
+ fn GetWriterMetadataCount(
+ pcWriters: *mut UINT,
+ ) -> HRESULT,
+ fn GetWriterMetadata(
+ iWriter: UINT,
+ pidInstance: *mut VSS_ID,
+ ppMetadata: *mut *mut IVssExamineWriterMetadata,
+ ) -> HRESULT,
+ fn FreeWriterMetadata() -> HRESULT,
+ fn AddComponent(
+ instanceId: VSS_ID,
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ ) -> HRESULT,
+ fn PrepareForBackup(
+ ppAsync: *mut *mut IVssAsync,
+ ) -> HRESULT,
+ fn AbortBackup() -> HRESULT,
+ fn GatherWriterStatus(
+ ppAsync: *mut *mut IVssAsync,
+ ) -> HRESULT,
+ fn GetWriterStatusCount(
+ pcWriters: *mut UINT,
+ ) -> HRESULT,
+ fn FreeWriterStatus() -> HRESULT,
+ fn GetWriterStatus(
+ iWriter: UINT,
+ pidInstance: *mut VSS_ID,
+ pidWriter: *mut VSS_ID,
+ pbstrWriter: *mut BSTR,
+ pnStatus: *mut VSS_WRITER_STATE,
+ phResultFailure: *mut HRESULT,
+ ) -> HRESULT,
+ fn SetBackupSucceeded(
+ instanceId: VSS_ID,
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ bSucceded: bool,
+ ) -> HRESULT,
+ fn SetBackupOptions(
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ wszBackupOptions: LPCWSTR,
+ ) -> HRESULT,
+ fn SetSelectedForRestore(
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ bSelectedForRestore: bool,
+ ) -> HRESULT,
+ fn SetRestoreOptions(
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ wszRestoreOptions: LPCWSTR,
+ ) -> HRESULT,
+ fn SetAdditionalRestores(
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ bAdditionalRestores: bool,
+ ) -> HRESULT,
+ fn SetPreviousBackupStamp(
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ wszPreviousBackupStamp: LPCWSTR,
+ ) -> HRESULT,
+ fn SaveAsXML(
+ pbstrXML: *mut BSTR,
+ ) -> HRESULT,
+ fn BackupComplete(
+ ppAsync: *mut *mut IVssAsync,
+ ) -> HRESULT,
+ fn AddAlternativeLocationMapping(
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ wszPath: LPCWSTR,
+ wszFilespec: LPCWSTR,
+ bRecursive: bool,
+ wszDestination: LPCWSTR,
+ ) -> HRESULT,
+ fn AddRestoreSubcomponent(
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ wszSubComponentLogicalPath: LPCWSTR,
+ wszSubComponentName: LPCWSTR,
+ bRepair: bool,
+ ) -> HRESULT,
+ fn SetFileRestoreStatus(
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ status: VSS_FILE_RESTORE_STATUS,
+ ) -> HRESULT,
+ fn AddNewTarget(
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ wszPath: LPCWSTR,
+ wszFileName: LPCWSTR,
+ bRecursive: bool,
+ wszAlternatePath: LPCWSTR,
+ ) -> HRESULT,
+ fn SetRangesFilePath(
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ iPartialFile: UINT,
+ wszRangesFile: LPCWSTR,
+ ) -> HRESULT,
+ fn PreRestore(
+ ppAsync: *mut *mut IVssAsync,
+ ) -> HRESULT,
+ fn PostRestore(
+ ppAsync: *mut *mut IVssAsync,
+ ) -> HRESULT,
+ fn SetContext(
+ lContext: LONG,
+ ) -> HRESULT,
+ fn StartSnapshotSet(
+ pSnapshotSetId: *mut VSS_ID,
+ ) -> HRESULT,
+ fn AddToSnapshotSet(
+ pwszVolumeName: VSS_PWSZ,
+ ProviderId: VSS_ID,
+ pidSnapshot: *mut VSS_ID,
+ ) -> HRESULT,
+ fn DoSnapshotSet(
+ ppAsync: *mut *mut IVssAsync,
+ ) -> HRESULT,
+ fn DeleteSnapshots(
+ SourceObjectId: VSS_ID,
+ eSourceObjectType: VSS_OBJECT_TYPE,
+ bForceDelete: BOOL,
+ plDeletedSnapshots: *mut LONG,
+ pNondeletedSnapshotID: *mut VSS_ID,
+ ) -> HRESULT,
+ fn ImportSnapshots(
+ ppAsync: *mut *mut IVssAsync,
+ ) -> HRESULT,
+ fn BreakSnapshotSet(
+ SnapshotSetId: VSS_ID,
+ ) -> HRESULT,
+ fn GetSnapshotProperties(
+ SnapshotId: VSS_ID,
+ pProp: *mut VSS_SNAPSHOT_PROP,
+ ) -> HRESULT,
+ fn Query(
+ QueriedObjectId: VSS_ID,
+ eQueriedObjectType: VSS_OBJECT_TYPE,
+ eReturnedObjectsType: VSS_OBJECT_TYPE,
+ ppEnum: *mut *mut IVssEnumObject,
+ ) -> HRESULT,
+ fn IsVolumeSupported(
+ ProviderId: VSS_ID,
+ pwszVolumeName: VSS_PWSZ,
+ pbSupportedByThisProvider: *mut BOOL,
+ ) -> HRESULT,
+ fn DisableWriterClasses(
+ rgWriterClassId: *const VSS_ID,
+ cClassId: UINT,
+ ) -> HRESULT,
+ fn EnableWriterClasses(
+ rgWriterClassId: *const VSS_ID,
+ cClassId: UINT,
+ ) -> HRESULT,
+ fn DisableWriterInstances(
+ rgWriterInstanceId: *const VSS_ID,
+ cInstanceId: UINT,
+ ) -> HRESULT,
+ fn ExposeSnapshot(
+ SnapshotId: VSS_ID,
+ wszPathFromRoot: VSS_PWSZ,
+ lAttributes: LONG,
+ wszExpose: VSS_PWSZ,
+ pwszExposed: VSS_PWSZ,
+ ) -> HRESULT,
+ fn RevertToSnapshot(
+ SnapshotId: VSS_ID,
+ bForceDismount: BOOL,
+ ) -> HRESULT,
+ fn QueryRevertStatus(
+ pwszVolume: VSS_PWSZ,
+ ppAsync: *mut *mut IVssAsync,
+ ) -> HRESULT,
+}}
+RIDL!{#[uuid(0x963f03ad, 0x9e4c, 0x4a34, 0xac, 0x15, 0xe4, 0xb6, 0x17, 0x4e, 0x50, 0x36)]
+interface IVssBackupComponentsEx(IVssBackupComponentsExVtbl):
+ IVssBackupComponents(IVssBackupComponentsVtbl) {
+ fn GetWriterMetadataEx(
+ iWriter: UINT,
+ pidInstance: *mut VSS_ID,
+ ppMetadata: *mut *mut IVssExamineWriterMetadataEx,
+ ) -> HRESULT,
+ fn SetSelectedForRestoreEx(
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ bSelectedForRestore: bool,
+ instanceId: VSS_ID,
+ ) -> HRESULT,
+}}
+RIDL!{#[uuid(0xacfe2b3a, 0x22c9, 0x4ef8, 0xbd, 0x03, 0x2f, 0x9c, 0xa2, 0x30, 0x08, 0x4e)]
+interface IVssBackupComponentsEx2(IVssBackupComponentsEx2Vtbl):
+ IVssBackupComponentsEx(IVssBackupComponentsExVtbl) {
+ fn UnexposeSnapshot(
+ snapshotId: VSS_ID,
+ ) -> HRESULT,
+ fn SetAuthoritativeRestore(
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ bAuth: bool,
+ ) -> HRESULT,
+ fn SetRollForward(
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ rollType: VSS_ROLLFORWARD_TYPE,
+ wszRollForwardPoint: LPCWSTR,
+ ) -> HRESULT,
+ fn SetRestoreName(
+ writerId: VSS_ID,
+ ct: VSS_COMPONENT_TYPE,
+ wszLogicalPath: LPCWSTR,
+ wszComponentName: LPCWSTR,
+ wszRestoreName: LPCWSTR,
+ ) -> HRESULT,
+ fn BreakSnapshotSetEx(
+ SnapshotSetID: VSS_ID,
+ dwBreakFlags: DWORD,
+ ppAsync: *mut *mut IVssAsync,
+ ) -> HRESULT,
+ fn PreFastRecovery(
+ SnapshotSetID: VSS_ID,
+ dwPreFastRecoveryFlags: DWORD,
+ ppAsync: *mut *mut IVssAsync,
+ ) -> HRESULT,
+ fn FastRecovery(
+ SnapshotSetID: VSS_ID,
+ dwFastRecoveryFlags: DWORD,
+ ppAsync: *mut *mut IVssAsync,
+ ) -> HRESULT,
+}}
+RIDL!{#[uuid(0xc191bfbc, 0xb602, 0x4675, 0x8b, 0xd1, 0x67, 0xd6, 0x42, 0xf5, 0x29, 0xd5)]
+interface IVssBackupComponentsEx3(IVssBackupComponentsEx3Vtbl):
+ IVssBackupComponentsEx2(IVssBackupComponentsEx2Vtbl) {
+ fn GetWriterStatusEx(
+ iWriter: UINT,
+ pidInstance: *mut VSS_ID,
+ pidWriter: *mut VSS_ID,
+ pbstrWriter: *mut BSTR,
+ pnStatus: *mut VSS_WRITER_STATE,
+ phrFailureWriter: *mut HRESULT,
+ phrApplication: *mut HRESULT,
+ pbstrApplicationMessage: *mut BSTR,
+ ) -> HRESULT,
+ fn AddSnapshotToRecoverySet(
+ snapshotId: VSS_ID,
+ dwFlags: DWORD,
+ pwszDestinationVolume: VSS_PWSZ,
+ ) -> HRESULT,
+ fn RecoverSet(
+ dwFlags: DWORD,
+ ppAsync: *mut *mut IVssAsync,
+ ) -> HRESULT,
+ fn GetSessionId(
+ idSession: *mut VSS_ID,
+ ) -> HRESULT,
+}}
+RIDL!{#[uuid(0xf434c2fd, 0xb553, 0x4961, 0xa9, 0xf9, 0xa8, 0xe9, 0x0b, 0x67, 0x3e, 0x53)]
+interface IVssBackupComponentsEx4(IVssBackupComponentsEx4Vtbl):
+ IVssBackupComponentsEx3(IVssBackupComponentsEx3Vtbl) {
+ fn GetRootAndLogicalPrefixPaths(
+ pwszFilePath: VSS_PWSZ,
+ ppwszRootPath: *mut VSS_PWSZ,
+ ppwszLogicalPrefix: *mut VSS_PWSZ,
+ bNormalizeFQDNforRootPath: BOOL,
+ ) -> HRESULT,
+}}
+pub const VSS_SW_BOOTABLE_STATE: DWORD = 1;
+extern "system" {
+ #[link_name="CreateVssBackupComponentsInternal"]
+ pub fn CreateVssBackupComponents(
+ ppBackup: *mut *mut IVssBackupComponents,
+ ) -> HRESULT;
+ #[link_name="CreateVssExamineWriterMetadataInternal"]
+ pub fn CreateVssExamineWriterMetadata(
+ bstrXML: BSTR,
+ ppMetadata: *mut *mut IVssExamineWriterMetadata,
+ ) -> HRESULT;
+ #[link_name="IsVolumeSnapshottedInternal"]
+ pub fn IsVolumeSnapshotted(
+ pwszVolumeName: VSS_PWSZ,
+ pbSnapshotsPresent: *mut BOOL,
+ plSnapshotCapability: *mut LONG,
+ ) -> HRESULT;
+ #[link_name="VssFreeSnapshotPropertiesInternal"]
+ pub fn VssFreeSnapshotProperties(
+ pProp: *mut VSS_SNAPSHOT_PROP,
+ );
+ #[link_name="GetProviderMgmtInterfaceInternal"]
+ pub fn GetProviderMgmtInterface(
+ ProviderId: VSS_ID,
+ InterfaceId: IID,
+ ppItf: *mut *mut IUnknown,
+ ) -> HRESULT;
+ #[link_name="ShouldBlockRevertInternal"]
+ pub fn ShouldBlockRevert(
+ wszVolumeName: LPCWSTR,
+ pbBlock: *mut bool,
+ ) -> HRESULT;
+}