| /** | |
| * This file has no copyright assigned and is placed in the Public Domain. | |
| * This file is part of the mingw-w64 runtime package. | |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. | |
| */ | |
| #ifndef _INC_VIRTDISK | |
| #define _INC_VIRTDISK | |
| #if (_WIN32_WINNT >= 0x0601) | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| #define VIRTDISKAPI DECLSPEC_IMPORT | |
| #define VIRTUAL_STORAGE_TYPE_DEVICE_UNKNOWN 0 | |
| #define VIRTUAL_STORAGE_TYPE_DEVICE_ISO 1 | |
| #define VIRTUAL_STORAGE_TYPE_DEVICE_VHD 2 | |
| #if (_WIN32_WINNT >= 0x0A00) | |
| #define VIRTUAL_STORAGE_TYPE_DEVICE_VHDX 3 | |
| #endif /* _WIN32_WINNT >= 0x0A00 */ | |
| typedef enum _ATTACH_VIRTUAL_DISK_FLAG { | |
| ATTACH_VIRTUAL_DISK_FLAG_NONE = 0x00000000, | |
| ATTACH_VIRTUAL_DISK_FLAG_READ_ONLY = 0x00000001, | |
| ATTACH_VIRTUAL_DISK_FLAG_NO_DRIVE_LETTER = 0x00000002, | |
| ATTACH_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME = 0x00000004, | |
| ATTACH_VIRTUAL_DISK_FLAG_NO_LOCAL_HOST = 0x00000008 | |
| } ATTACH_VIRTUAL_DISK_FLAG; | |
| typedef enum _ATTACH_VIRTUAL_DISK_VERSION { | |
| ATTACH_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, | |
| ATTACH_VIRTUAL_DISK_VERSION_1 = 1 | |
| } ATTACH_VIRTUAL_DISK_VERSION; | |
| typedef enum _COMPACT_VIRTUAL_DISK_FLAG { | |
| COMPACT_VIRTUAL_DISK_FLAG_NONE = 0x00000000 | |
| } COMPACT_VIRTUAL_DISK_FLAG; | |
| typedef enum _COMPACT_VIRTUAL_DISK_VERSION { | |
| COMPACT_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, | |
| COMPACT_VIRTUAL_DISK_VERSION_1 = 1 | |
| } COMPACT_VIRTUAL_DISK_VERSION; | |
| typedef enum _CREATE_VIRTUAL_DISK_FLAG { | |
| CREATE_VIRTUAL_DISK_FLAG_NONE = 0x00000000, | |
| CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION = 0x00000001 | |
| #if (_WIN32_WINNT >= 0x0602) | |
| , | |
| CREATE_VIRTUAL_DISK_FLAG_PREVENT_WRITES_TO_SOURCE_DISK = 0x2, | |
| CREATE_VIRTUAL_DISK_FLAG_DO_NOT_COPY_METADATA_FROM_PARENT = 0x4 | |
| #endif /* _WIN32_WINNT >= 0x0602 */ | |
| } CREATE_VIRTUAL_DISK_FLAG; | |
| typedef enum _CREATE_VIRTUAL_DISK_VERSION { | |
| CREATE_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, | |
| CREATE_VIRTUAL_DISK_VERSION_1 = 1 | |
| #if (_WIN32_WINNT >= 0x0602) | |
| , | |
| CREATE_VIRTUAL_DISK_VERSION_2 = 2 | |
| #endif /* _WIN32_WINNT >= 0x0602 */ | |
| } CREATE_VIRTUAL_DISK_VERSION; | |
| typedef enum _DEPENDENT_DISK_FLAG { | |
| DEPENDENT_DISK_FLAG_NONE = 0x00000000, | |
| DEPENDENT_DISK_FLAG_MULT_BACKING_FILES = 0x00000001, | |
| DEPENDENT_DISK_FLAG_FULLY_ALLOCATED = 0x00000002, | |
| DEPENDENT_DISK_FLAG_READ_ONLY = 0x00000004, | |
| DEPENDENT_DISK_FLAG_REMOTE = 0x00000008, | |
| DEPENDENT_DISK_FLAG_SYSTEM_VOLUME = 0x00000010, | |
| DEPENDENT_DISK_FLAG_SYSTEM_VOLUME_PARENT = 0x00000020, | |
| DEPENDENT_DISK_FLAG_REMOVABLE = 0x00000040, | |
| DEPENDENT_DISK_FLAG_NO_DRIVE_LETTER = 0x00000080, | |
| DEPENDENT_DISK_FLAG_PARENT = 0x00000100, | |
| DEPENDENT_DISK_FLAG_NO_HOST_DISK = 0x00000200, | |
| DEPENDENT_DISK_FLAG_PERMANENT_LIFETIME = 0x00000400 | |
| } DEPENDENT_DISK_FLAG; | |
| typedef enum _EXPAND_VIRTUAL_DISK_VERSION { | |
| EXPAND_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, | |
| EXPAND_VIRTUAL_DISK_VERSION_1 = 1 | |
| } EXPAND_VIRTUAL_DISK_VERSION; | |
| typedef enum _DETACH_VIRTUAL_DISK_FLAG { | |
| DETACH_VIRTUAL_DISK_FLAG_NONE = 0x00000000 | |
| } DETACH_VIRTUAL_DISK_FLAG; | |
| typedef enum _EXPAND_VIRTUAL_DISK_FLAG { | |
| EXPAND_VIRTUAL_DISK_FLAG_NONE = 0x00000000 | |
| } EXPAND_VIRTUAL_DISK_FLAG; | |
| typedef enum _GET_STORAGE_DEPENDENCY_FLAG { | |
| GET_STORAGE_DEPENDENCY_FLAG_NONE = 0x00000000, | |
| GET_STORAGE_DEPENDENCY_FLAG_HOST_VOLUMES = 0x00000001, | |
| GET_STORAGE_DEPENDENCY_FLAG_DISK_HANDLE = 0x00000002 | |
| } GET_STORAGE_DEPENDENCY_FLAG; | |
| typedef enum _GET_VIRTUAL_DISK_INFO_VERSION { | |
| GET_VIRTUAL_DISK_INFO_UNSPECIFIED = 0, | |
| GET_VIRTUAL_DISK_INFO_SIZE = 1, | |
| GET_VIRTUAL_DISK_INFO_IDENTIFIER = 2, | |
| GET_VIRTUAL_DISK_INFO_PARENT_LOCATION = 3, | |
| GET_VIRTUAL_DISK_INFO_PARENT_IDENTIFIER = 4, | |
| GET_VIRTUAL_DISK_INFO_PARENT_TIMESTAMP = 5, | |
| GET_VIRTUAL_DISK_INFO_VIRTUAL_STORAGE_TYPE = 6, | |
| GET_VIRTUAL_DISK_INFO_PROVIDER_SUBTYPE = 7 | |
| #if (_WIN32_WINNT >= 0x0602) | |
| , | |
| GET_VIRTUAL_DISK_INFO_IS_4K_ALIGNED = 8, | |
| GET_VIRTUAL_DISK_INFO_PHYSICAL_DISK = 9, | |
| GET_VIRTUAL_DISK_INFO_VHD_PHYSICAL_SECTOR_SIZE = 10, | |
| GET_VIRTUAL_DISK_INFO_SMALLEST_SAFE_VIRTUAL_SIZE = 11, | |
| GET_VIRTUAL_DISK_INFO_FRAGMENTATION = 12 | |
| #endif /* _WIN32_WINNT >= 0x0602 */ | |
| #if (_WIN32_WINNT >= 0x0603) | |
| , | |
| GET_VIRTUAL_DISK_INFO_IS_LOADED = 13, | |
| GET_VIRTUAL_DISK_INFO_VIRTUAL_DISK_ID = 14 | |
| #endif /* _WIN32_WINNT >= 0x0603 */ | |
| #if (_WIN32_WINNT >= 0x0A00) | |
| , | |
| GET_VIRTUAL_DISK_INFO_CHANGE_TRACKING_STATE = 15 | |
| #endif /* _WIN32_WINNT >= 0x0A00 */ | |
| } GET_VIRTUAL_DISK_INFO_VERSION; | |
| typedef enum _MIRROR_VIRTUAL_DISK_FLAG { | |
| MIRROR_VIRTUAL_DISK_FLAG_NONE = 0x00000000, | |
| MIRROR_VIRTUAL_DISK_FLAG_EXISTING_FILE = 0x00000001 | |
| } MIRROR_VIRTUAL_DISK_FLAG; | |
| typedef enum _MIRROR_VIRTUAL_DISK_VERSION { | |
| MIRROR_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, | |
| MIRROR_VIRTUAL_DISK_VERSION_1 = 1 | |
| } MIRROR_VIRTUAL_DISK_VERSION; | |
| typedef enum _MERGE_VIRTUAL_DISK_FLAG { | |
| MERGE_VIRTUAL_DISK_FLAG_NONE = 0x00000000 | |
| } MERGE_VIRTUAL_DISK_FLAG; | |
| typedef enum _MERGE_VIRTUAL_DISK_VERSION { | |
| MERGE_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, | |
| MERGE_VIRTUAL_DISK_VERSION_1 = 1 | |
| #if (_WIN32_WINNT >= 0x0602) | |
| , | |
| MERGE_VIRTUAL_DISK_VERSION_2 = 2 | |
| #endif /* _WIN32_WINNT >= 0x0A00 */ | |
| } MERGE_VIRTUAL_DISK_VERSION; | |
| typedef enum _OPEN_VIRTUAL_DISK_FLAG { | |
| OPEN_VIRTUAL_DISK_FLAG_NONE = 0x00000000, | |
| OPEN_VIRTUAL_DISK_FLAG_NO_PARENTS = 0x00000001, | |
| OPEN_VIRTUAL_DISK_FLAG_BLANK_FILE = 0x00000002, | |
| OPEN_VIRTUAL_DISK_FLAG_BOOT_DRIVE = 0x00000004 | |
| #if (_WIN32_WINNT >= 0x0602) | |
| , | |
| OPEN_VIRTUAL_DISK_FLAG_CACHED_IO = 0x00000008, | |
| OPEN_VIRTUAL_DISK_FLAG_CUSTOM_DIFF_CHAIN = 0x00000010 | |
| #endif /* _WIN32_WINNT >= 0x0602 */ | |
| } OPEN_VIRTUAL_DISK_FLAG; | |
| typedef enum _OPEN_VIRTUAL_DISK_VERSION { | |
| OPEN_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, | |
| OPEN_VIRTUAL_DISK_VERSION_1 = 1 | |
| #if (_WIN32_WINNT >= 0x0602) | |
| , | |
| OPEN_VIRTUAL_DISK_VERSION_2 = 2 | |
| #endif /* _WIN32_WINNT >= 0x0602 */ | |
| } OPEN_VIRTUAL_DISK_VERSION; | |
| typedef enum _SET_VIRTUAL_DISK_INFO_VERSION { | |
| SET_VIRTUAL_DISK_INFO_UNSPECIFIED = 0, | |
| SET_VIRTUAL_DISK_INFO_PARENT_PATH = 1, | |
| SET_VIRTUAL_DISK_INFO_IDENTIFIER = 2 | |
| #if (_WIN32_WINNT >= 0x0602) | |
| , | |
| SET_VIRTUAL_DISK_INFO_PARENT_PATH_WITH_DEPTH = 3, | |
| SET_VIRTUAL_DISK_INFO_PHYSICAL_SECTOR_SIZE = 4 | |
| #endif /* (_WIN32_WINNT >= 0x0602) */ | |
| #if (_WIN32_WINNT >= 0x0603) | |
| , | |
| SET_VIRTUAL_DISK_INFO_VIRTUAL_DISK_ID = 5 | |
| #endif /* (_WIN32_WINNT >= 0x0603) */ | |
| #if (_WIN32_WINNT >= 0x0A00) | |
| , | |
| SET_VIRTUAL_DISK_INFO_CHANGE_TRACKING_STATE = 6, | |
| SET_VIRTUAL_DISK_INFO_PARENT_LOCATOR = 7 | |
| #endif /* (_WIN32_WINNT >= 0x0A00) */ | |
| } SET_VIRTUAL_DISK_INFO_VERSION; | |
| typedef enum _STORAGE_DEPENDENCY_INFO_VERSION { | |
| STORAGE_DEPENDENCY_INFO_VERSION_UNSPECIFIED = 0, | |
| STORAGE_DEPENDENCY_INFO_VERSION_1 = 1, | |
| STORAGE_DEPENDENCY_INFO_VERSION_2 = 2 | |
| } STORAGE_DEPENDENCY_INFO_VERSION; | |
| typedef enum _VIRTUAL_DISK_ACCESS_MASK { | |
| VIRTUAL_DISK_ACCESS_NONE = 0x00000000, | |
| VIRTUAL_DISK_ACCESS_ATTACH_RO = 0x00010000, | |
| VIRTUAL_DISK_ACCESS_ATTACH_RW = 0x00020000, | |
| VIRTUAL_DISK_ACCESS_DETACH = 0x00040000, | |
| VIRTUAL_DISK_ACCESS_GET_INFO = 0x00080000, | |
| VIRTUAL_DISK_ACCESS_CREATE = 0x00100000, | |
| VIRTUAL_DISK_ACCESS_METAOPS = 0x00200000, | |
| VIRTUAL_DISK_ACCESS_READ = 0x000d0000, | |
| VIRTUAL_DISK_ACCESS_ALL = 0x003f0000, | |
| VIRTUAL_DISK_ACCESS_WRITABLE = 0x00320000 | |
| } VIRTUAL_DISK_ACCESS_MASK; | |
| #if (_WIN32_WINNT >= 0x0602) | |
| typedef enum _RESIZE_VIRTUAL_DISK_FLAG { | |
| RESIZE_VIRTUAL_DISK_FLAG_NONE = 0x0, | |
| RESIZE_VIRTUAL_DISK_FLAG_ALLOW_UNSAFE_VIRTUAL_SIZE = 0x1, | |
| RESIZE_VIRTUAL_DISK_FLAG_RESIZE_TO_SMALLEST_SAFE_VIRTUAL_SIZE = 0x2 | |
| } RESIZE_VIRTUAL_DISK_FLAG; | |
| typedef enum _RESIZE_VIRTUAL_DISK_VERSION { | |
| RESIZE_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, | |
| RESIZE_VIRTUAL_DISK_VERSION_1 = 1 | |
| } RESIZE_VIRTUAL_DISK_VERSION; | |
| #endif /* (_WIN32_WINNT >= 0x0602) */ | |
| #if (_WIN32_WINNT >= 0x0A00) | |
| typedef enum _APPLY_SNAPSHOT_VHDSET_FLAG { | |
| APPLY_SNAPSHOT_VHDSET_FLAG_NONE = 0x00000000, | |
| APPLY_SNAPSHOT_VHDSET_FLAG_WRITEABLE = 0x00000001 | |
| } APPLY_SNAPSHOT_VHDSET_FLAG, *PAPPLY_SNAPSHOT_VHDSET_FLAG; | |
| typedef enum _APPLY_SNAPSHOT_VHDSET_VERSION { | |
| APPLY_SNAPSHOT_VHDSET_VERSION_UNSPECIFIED = 0, | |
| APPLY_SNAPSHOT_VHDSET_VERSION_1 = 1 | |
| } APPLY_SNAPSHOT_VHDSET_VERSION; | |
| typedef enum _DELETE_SNAPSHOT_VHDSET_FLAG { | |
| DELETE_SNAPSHOT_VHDSET_FLAG_NONE = 0x00000000, | |
| DELETE_SNAPSHOT_VHDSET_FLAG_PERSIST_RCT = 0x00000001 | |
| } DELETE_SNAPSHOT_VHDSET_FLAG, *PDELETE_SNAPSHOT_VHDSET_FLAG; | |
| typedef enum _DELETE_SNAPSHOT_VHDSET_VERSION { | |
| DELETE_SNAPSHOT_VHDSET_VERSION_UNSPECIFIED = 0x00000000, | |
| DELETE_SNAPSHOT_VHDSET_VERSION_1 = 0x00000001 | |
| } DELETE_SNAPSHOT_VHDSET_VERSION, *PDELETE_SNAPSHOT_VHDSET_VERSION; | |
| typedef enum _MODIFY_VHDSET_FLAG { | |
| MODIFY_VHDSET_FLAG_NONE = 0x00000000 | |
| } MODIFY_VHDSET_FLAG, *PMODIFY_VHDSET_FLAG; | |
| typedef enum _MODIFY_VHDSET_VERSION { | |
| MODIFY_VHDSET_UNSPECIFIED = 0, | |
| MODIFY_VHDSET_SNAPSHOT_PATH = 1, | |
| MODIFY_VHDSET_REMOVE_SNAPSHOT = 2, | |
| MODIFY_VHDSET_DEFAULT_SNAPSHOT_PATH = 3 | |
| } MODIFY_VHDSET_VERSION, *PMODIFY_VHDSET_VERSION; | |
| typedef enum _QUERY_CHANGES_VIRTUAL_DISK_FLAG { | |
| QUERY_CHANGES_VIRTUAL_DISK_FLAG_NONE = 0x00000000 | |
| } QUERY_CHANGES_VIRTUAL_DISK_FLAG; | |
| typedef enum _TAKE_SNAPSHOT_VHDSET_FLAG { | |
| TAKE_SNAPSHOT_VHDSET_FLAG_NONE = 0x00000000 | |
| } TAKE_SNAPSHOT_VHDSET_FLAG, *PTAKE_SNAPSHOT_VHDSET_FLAG; | |
| typedef enum _TAKE_SNAPSHOT_VHDSET_VERSION { | |
| TAKE_SNAPSHOT_VHDSET_VERSION_UNSPECIFIED = 0, | |
| TAKE_SNAPSHOT_VHDSET_VERSION_1 = 1 | |
| } TAKE_SNAPSHOT_VHDSET_VERSION; | |
| #endif /* _WIN32_WINNT >= 0x0A00 */ | |
| typedef struct _VIRTUAL_STORAGE_TYPE { | |
| ULONG DeviceId; | |
| GUID VendorId; | |
| } VIRTUAL_STORAGE_TYPE, *PVIRTUAL_STORAGE_TYPE; | |
| typedef struct _ATTACH_VIRTUAL_DISK_PARAMETERS { | |
| ATTACH_VIRTUAL_DISK_VERSION Version; | |
| __C89_NAMELESS union { | |
| struct { | |
| ULONG Reserved; | |
| } Version1; | |
| } DUMMYUNIONNAME; | |
| } ATTACH_VIRTUAL_DISK_PARAMETERS, *PATTACH_VIRTUAL_DISK_PARAMETERS; | |
| typedef struct _COMPACT_VIRTUAL_DISK_PARAMETERS { | |
| COMPACT_VIRTUAL_DISK_VERSION Version; | |
| __C89_NAMELESS union { | |
| struct { | |
| ULONG Reserved; | |
| } Version1; | |
| } DUMMYUNIONNAME; | |
| } COMPACT_VIRTUAL_DISK_PARAMETERS, *PCOMPACT_VIRTUAL_DISK_PARAMETERS; | |
| typedef struct _CREATE_VIRTUAL_DISK_PARAMETERS { | |
| CREATE_VIRTUAL_DISK_VERSION Version; | |
| __C89_NAMELESS union { | |
| struct { | |
| GUID UniqueId; | |
| ULONGLONG MaximumSize; | |
| ULONG BlockSizeInBytes; | |
| ULONG SectorSizeInBytes; | |
| PCWSTR ParentPath; | |
| PCWSTR SourcePath; | |
| } Version1; | |
| #if (_WIN32_WINNT >= 0x0602) | |
| struct { | |
| GUID UniqueId; | |
| ULONGLONG MaximumSize; | |
| ULONG BlockSizeInBytes; | |
| ULONG SectorSizeInBytes; | |
| ULONG PhysicalSectorSizeInBytes; | |
| PCWSTR ParentPath; | |
| PCWSTR SourcePath; | |
| OPEN_VIRTUAL_DISK_FLAG OpenFlags; | |
| VIRTUAL_STORAGE_TYPE ParentVirtualStorageType; | |
| VIRTUAL_STORAGE_TYPE SourceVirtualStorageType; | |
| GUID ResiliencyGuid; | |
| } Version2; | |
| #endif /* _WIN32_WINNT >= 0x0602 */ | |
| } DUMMYUNIONNAME; | |
| } CREATE_VIRTUAL_DISK_PARAMETERS, *PCREATE_VIRTUAL_DISK_PARAMETERS; | |
| typedef struct _EXPAND_VIRTUAL_DISK_PARAMETERS { | |
| EXPAND_VIRTUAL_DISK_VERSION Version; | |
| __C89_NAMELESS union { | |
| struct { | |
| ULONGLONG NewSize; | |
| } Version1; | |
| } DUMMYUNIONNAME; | |
| } EXPAND_VIRTUAL_DISK_PARAMETERS, *PEXPAND_VIRTUAL_DISK_PARAMETERS; | |
| typedef struct _GET_VIRTUAL_DISK_INFO { | |
| GET_VIRTUAL_DISK_INFO_VERSION Version; | |
| __C89_NAMELESS union { | |
| struct { | |
| ULONGLONG VirtualSize; | |
| ULONGLONG PhysicalSize; | |
| ULONG BlockSize; | |
| ULONG SectorSize; | |
| } Size; | |
| GUID Identifier; | |
| struct { | |
| WINBOOL ParentResolved; | |
| WCHAR ParentLocationBuffer[1]; | |
| } ParentLocation; | |
| GUID ParentIdentifier; | |
| ULONG ParentTimestamp; | |
| VIRTUAL_STORAGE_TYPE VirtualStorageType; | |
| ULONG ProviderSubtype; | |
| #if (_WIN32_WINNT >= 0x0602) | |
| WINBOOL Is4kAligned; | |
| WINBOOL IsLoaded; | |
| struct { | |
| ULONG LogicalSectorSize; | |
| ULONG PhysicalSectorSize; | |
| WINBOOL IsRemote; | |
| } PhysicalDisk; | |
| ULONG VhdPhysicalSectorSize; | |
| ULONGLONG SmallestSafeVirtualSize; | |
| ULONG FragmentationPercentage; | |
| #endif /* _WIN32_WINNT >= 0x0602 */ | |
| #if (_WIN32_WINNT >= 0x0603) | |
| GUID VirtualDiskId; | |
| struct { | |
| WINBOOL Enabled; | |
| WINBOOL NewerChanges; | |
| WCHAR MostRecentId[1]; | |
| } ChangeTrackingState; | |
| #endif /* _WIN32_WINNT >= 0x0603 */ | |
| } DUMMYUNIONNAME; | |
| } GET_VIRTUAL_DISK_INFO, *PGET_VIRTUAL_DISK_INFO; | |
| typedef struct _MERGE_VIRTUAL_DISK_PARAMETERS { | |
| MERGE_VIRTUAL_DISK_VERSION Version; | |
| __C89_NAMELESS union { | |
| struct { | |
| ULONG MergeDepth; | |
| } Version1; | |
| #if (_WIN32_WINNT >= 0x0602) | |
| struct { | |
| ULONG MergeSourceDepth; | |
| ULONG MergeTargetDepth; | |
| } Version2; | |
| #endif /* _WIN32_WINNT >= 0x0602 */ | |
| } DUMMYUNIONNAME; | |
| } MERGE_VIRTUAL_DISK_PARAMETERS, *PMERGE_VIRTUAL_DISK_PARAMETERS; | |
| typedef struct _OPEN_VIRTUAL_DISK_PARAMETERS { | |
| OPEN_VIRTUAL_DISK_VERSION Version; | |
| __C89_NAMELESS union { | |
| struct { | |
| ULONG RWDepth; | |
| } Version1; | |
| #if (_WIN32_WINNT >= 0x0602) | |
| struct { | |
| WINBOOL GetInfoOnly; | |
| WINBOOL ReadOnly; | |
| GUID ResiliencyGuid; | |
| } Version2; | |
| #endif /* _WIN32_WINNT >= 0x0602 */ | |
| } DUMMYUNIONNAME; | |
| } OPEN_VIRTUAL_DISK_PARAMETERS, *POPEN_VIRTUAL_DISK_PARAMETERS; | |
| typedef struct _SET_VIRTUAL_DISK_INFO { | |
| SET_VIRTUAL_DISK_INFO_VERSION Version; | |
| __C89_NAMELESS union { | |
| PCWSTR ParentFilePath; | |
| GUID UniqueIdentifier; | |
| #if (_WIN32_WINNT >= 0x0602) | |
| struct { | |
| ULONG ChildDepth; | |
| PCWSTR ParentFilePath; | |
| } ParentPathWithDepthInfo; | |
| ULONG VhdPhysicalSectorSize; | |
| GUID VirtualDiskId; | |
| #endif /* _WIN32_WINNT >= 0x0602 */ | |
| #if (_WIN32_WINNT >= 0x0603) | |
| WINBOOL ChangeTrackingEnabled; | |
| struct { | |
| GUID LinkageId; | |
| PCWSTR ParentFilePath; | |
| } ParentLocator; | |
| #endif /* _WIN32_WINNT >= 0x0603 */ | |
| } DUMMYUNIONNAME; | |
| } SET_VIRTUAL_DISK_INFO, *PSET_VIRTUAL_DISK_INFO; | |
| typedef struct _STORAGE_DEPENDENCY_INFO_TYPE_1 { | |
| DEPENDENT_DISK_FLAG DependencyTypeFlags; | |
| ULONG ProviderSpecificFlags; | |
| VIRTUAL_STORAGE_TYPE VirtualStorageType; | |
| } STORAGE_DEPENDENCY_INFO_TYPE_1, *PSTORAGE_DEPENDENCY_INFO_TYPE_1; | |
| typedef struct _STORAGE_DEPENDENCY_INFO_TYPE_2 { | |
| DEPENDENT_DISK_FLAG DependencyTypeFlags; | |
| ULONG ProviderSpecificFlags; | |
| VIRTUAL_STORAGE_TYPE VirtualStorageType; | |
| ULONG AncestorLevel; | |
| PWSTR DependencyDeviceName; | |
| PWSTR HostVolumeName; | |
| PWSTR DependentVolumeName; | |
| PWSTR DependentVolumeRelativePath; | |
| } STORAGE_DEPENDENCY_INFO_TYPE_2, *PSTORAGE_DEPENDENCY_INFO_TYPE_2; | |
| /* Fixme: Suppress GCC errors about "error: flexible array member in union" */ | |
| typedef struct _STORAGE_DEPENDENCY_INFO { | |
| STORAGE_DEPENDENCY_INFO_VERSION Version; | |
| ULONG NumberEntries; | |
| __C89_NAMELESS union { | |
| STORAGE_DEPENDENCY_INFO_TYPE_1 Version1Entries[1]; | |
| STORAGE_DEPENDENCY_INFO_TYPE_2 Version2Entries[1]; | |
| } DUMMYUNIONNAME; | |
| } STORAGE_DEPENDENCY_INFO, *PSTORAGE_DEPENDENCY_INFO; | |
| typedef struct _VIRTUAL_DISK_PROGRESS { | |
| DWORD OperationStatus; | |
| ULONGLONG CurrentValue; | |
| ULONGLONG CompletionValue; | |
| } VIRTUAL_DISK_PROGRESS, *PVIRTUAL_DISK_PROGRESS; | |
| #if (_WIN32_WINNT >= 0x0602) | |
| typedef struct _MIRROR_VIRTUAL_DISK_PARAMETERS { | |
| MIRROR_VIRTUAL_DISK_VERSION Version; | |
| __C89_NAMELESS union { | |
| struct { | |
| PCWSTR MirrorVirtualDiskPath; | |
| } Version1; | |
| } DUMMYUNIONNAME; | |
| } MIRROR_VIRTUAL_DISK_PARAMETERS, *PMIRROR_VIRTUAL_DISK_PARAMETERS; | |
| typedef struct _RESIZE_VIRTUAL_DISK_PARAMETERS { | |
| RESIZE_VIRTUAL_DISK_VERSION Version; | |
| __C89_NAMELESS union { | |
| struct { | |
| ULONGLONG NewSize; | |
| } Version1; | |
| } DUMMYUNIONNAME; | |
| } RESIZE_VIRTUAL_DISK_PARAMETERS, *PRESIZE_VIRTUAL_DISK_PARAMETERS; | |
| #endif /* _WIN32_WINNT >= 0x0602 */ | |
| #if (_WIN32_WINNT >= 0x0A00) | |
| typedef struct _APPLY_SNAPSHOT_VHDSET_PARAMETERS { | |
| APPLY_SNAPSHOT_VHDSET_VERSION Version; | |
| __C89_NAMELESS union { | |
| struct { | |
| GUID SnapshotId; | |
| GUID LeafSnapshotId; | |
| } Version1; | |
| } DUMMYUNIONNAME; | |
| } APPLY_SNAPSHOT_VHDSET_PARAMETERS, *PAPPLY_SNAPSHOT_VHDSET_PARAMETERS; | |
| typedef struct _DELETE_SNAPSHOT_VHDSET_PARAMETERS { | |
| DELETE_SNAPSHOT_VHDSET_VERSION Version; | |
| __C89_NAMELESS union { | |
| struct { | |
| GUID SnapshotId; | |
| } Version1; | |
| } DUMMYUNIONNAME; | |
| } DELETE_SNAPSHOT_VHDSET_PARAMETERS, *PDELETE_SNAPSHOT_VHDSET_PARAMETERS; | |
| typedef struct _MODIFY_VHDSET_PARAMETERS { | |
| MODIFY_VHDSET_VERSION Version; | |
| __C89_NAMELESS union { | |
| struct { | |
| GUID SnapshotId; | |
| PCWSTR SnapshotFilePath; | |
| } SnapshotPath; | |
| GUID SnapshotId; | |
| PCWSTR DefaultFilePath; | |
| } DUMMYUNIONNAME; | |
| } MODIFY_VHDSET_PARAMETERS, *PMODIFY_VHDSET_PARAMETERS; | |
| typedef struct _QUERY_CHANGES_VIRTUAL_DISK_RANGE { | |
| ULONG64 ByteOffset; | |
| ULONG64 ByteLength; | |
| ULONG64 Reserved; | |
| } QUERY_CHANGES_VIRTUAL_DISK_RANGE, *PQUERY_CHANGES_VIRTUAL_DISK_RANGE; | |
| typedef struct _TAKE_SNAPSHOT_VHDSET_PARAMETERS { | |
| TAKE_SNAPSHOT_VHDSET_VERSION Version; | |
| __C89_NAMELESS union { | |
| struct { | |
| GUID SnapshotId; | |
| } Version1; | |
| } DUMMYUNIONNAME; | |
| } TAKE_SNAPSHOT_VHDSET_PARAMETERS, *PTAKE_SNAPSHOT_VHDSET_PARAMETERS; | |
| #endif /* _WIN32_WINNT >= 0x0A00 */ | |
| DEFINE_GUID(VIRTUAL_STORAGE_TYPE_VENDOR_UNKNOWN,0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); | |
| DEFINE_GUID(VIRTUAL_STORAGE_TYPE_VENDOR_MICROSOFT,0xEC984AEC,0xA0F9,0x47e9,0x90,0x1F,0x71,0x41,0x5A,0x66,0x34,0x5B); | |
| VIRTDISKAPI DWORD WINAPI AttachVirtualDisk(HANDLE VirtualDiskHandle, PSECURITY_DESCRIPTOR SecurityDescriptor, ATTACH_VIRTUAL_DISK_FLAG Flags, ULONG ProviderSpecificFlags, PATTACH_VIRTUAL_DISK_PARAMETERS Parameters, LPOVERLAPPED Overlapped); | |
| VIRTDISKAPI DWORD WINAPI CompactVirtualDisk(HANDLE VirtualDiskHandle, COMPACT_VIRTUAL_DISK_FLAG Flags, PCOMPACT_VIRTUAL_DISK_PARAMETERS Parameters, LPOVERLAPPED Overlapped); | |
| VIRTDISKAPI DWORD WINAPI CreateVirtualDisk(PVIRTUAL_STORAGE_TYPE VirtualStorageType, PCWSTR Path, VIRTUAL_DISK_ACCESS_MASK VirtualDiskAccessMask, PSECURITY_DESCRIPTOR SecurityDescriptor, CREATE_VIRTUAL_DISK_FLAG Flags, ULONG ProviderSpecificFlags, PCREATE_VIRTUAL_DISK_PARAMETERS Parameters, LPOVERLAPPED Overlapped, PHANDLE Handle); | |
| VIRTDISKAPI DWORD WINAPI DetachVirtualDisk(HANDLE VirtualDiskHandle, DETACH_VIRTUAL_DISK_FLAG Flags, ULONG ProviderSpecificFlags); | |
| VIRTDISKAPI DWORD WINAPI ExpandVirtualDisk(HANDLE VirtualDiskHandle, EXPAND_VIRTUAL_DISK_FLAG Flags, PEXPAND_VIRTUAL_DISK_PARAMETERS Parameters, LPOVERLAPPED Overlapped); | |
| VIRTDISKAPI DWORD WINAPI GetStorageDependencyInformation(HANDLE ObjectHandle, GET_STORAGE_DEPENDENCY_FLAG Flags, ULONG StorageDependencyInfoSize, PSTORAGE_DEPENDENCY_INFO StorageDependencyInfo, PULONG SizeUsed); | |
| VIRTDISKAPI DWORD WINAPI GetVirtualDiskInformation(HANDLE VirtualDiskHandle, PULONG VirtualDiskInfoSize, PGET_VIRTUAL_DISK_INFO VirtualDiskInfo, PULONG SizeUsed); | |
| VIRTDISKAPI DWORD WINAPI GetVirtualDiskOperationProgress(HANDLE VirtualDiskHandle, LPOVERLAPPED Overlapped, PVIRTUAL_DISK_PROGRESS Progress); | |
| VIRTDISKAPI DWORD WINAPI GetVirtualDiskPhysicalPath(HANDLE VirtualDiskHandle, PULONG DiskPathSizeInBytes, PWSTR DiskPath); | |
| VIRTDISKAPI DWORD WINAPI MergeVirtualDisk(HANDLE VirtualDiskHandle, MERGE_VIRTUAL_DISK_FLAG Flags, PMERGE_VIRTUAL_DISK_PARAMETERS Parameters, LPOVERLAPPED Overlapped); | |
| VIRTDISKAPI DWORD WINAPI OpenVirtualDisk(PVIRTUAL_STORAGE_TYPE VirtualStorageType, PCWSTR Path, VIRTUAL_DISK_ACCESS_MASK VirtualDiskAccessMask, OPEN_VIRTUAL_DISK_FLAG Flags, POPEN_VIRTUAL_DISK_PARAMETERS Parameters, PHANDLE Handle); | |
| VIRTDISKAPI DWORD WINAPI SetVirtualDiskInformation(HANDLE VirtualDiskHandle, PSET_VIRTUAL_DISK_INFO VirtualDiskInfo); | |
| #if (_WIN32_WINNT >= 0x0602) | |
| VIRTDISKAPI DWORD WINAPI AddVirtualDiskParent(HANDLE VirtualDiskHandle, PCWSTR ParentPath); | |
| VIRTDISKAPI DWORD WINAPI BreakMirrorVirtualDisk(HANDLE VirtualDiskHandle); | |
| VIRTDISKAPI DWORD WINAPI DeleteVirtualDiskMetadata(HANDLE VirtualDiskHandle, LPGUID Item); | |
| VIRTDISKAPI DWORD WINAPI EnumerateVirtualDiskMetadata(HANDLE VirtualDiskHandle, PULONG NumberOfItems, GUID *Items); | |
| VIRTDISKAPI DWORD WINAPI GetVirtualDiskMetadata(HANDLE VirtualDiskHandle, LPGUID Item, PULONG MetaDataSize, PVOID MetaData); | |
| VIRTDISKAPI DWORD WINAPI MirrorVirtualDisk(HANDLE VirtualDiskHandle, MIRROR_VIRTUAL_DISK_FLAG Flags, PMIRROR_VIRTUAL_DISK_PARAMETERS Parameters, LPOVERLAPPED Overlapped); | |
| VIRTDISKAPI DWORD WINAPI ResizeVirtualDisk(HANDLE VirtualDiskHandle, RESIZE_VIRTUAL_DISK_FLAG Flags, PRESIZE_VIRTUAL_DISK_PARAMETERS Parameters, LPOVERLAPPED Overlapped); | |
| VIRTDISKAPI DWORD WINAPI SetVirtualDiskMetadata(HANDLE VirtualDiskHandle, LPGUID Item, ULONG MetaDataSize, PVOID MetaData); | |
| #endif /* _WIN32_WINNT >= 0x0602 */ | |
| #if (_WIN32_WINNT >= 0x0A00) | |
| VIRTDISKAPI DWORD WINAPI ApplySnapshotVhdSet(HANDLE VirtualDiskHandle, const PAPPLY_SNAPSHOT_VHDSET_PARAMETERS Parameters, APPLY_SNAPSHOT_VHDSET_FLAG Flags); | |
| VIRTDISKAPI DWORD WINAPI DeleteSnapshotVhdSet(HANDLE VirtualDiskHandle, const PDELETE_SNAPSHOT_VHDSET_PARAMETERS Parameters, DELETE_SNAPSHOT_VHDSET_FLAG Flags); | |
| VIRTDISKAPI DWORD WINAPI ModifyVhdSet(HANDLE VirtualDiskHandle, const PMODIFY_VHDSET_PARAMETERS Parameters, MODIFY_VHDSET_FLAG Flags); | |
| VIRTDISKAPI DWORD WINAPI QueryChangesVirtualDisk(HANDLE VirtualDiskHandle, PCWSTR ChangeTrackingId, ULONG64 ByteOffset, ULONG64 ByteLength, QUERY_CHANGES_VIRTUAL_DISK_FLAG Flags, PQUERY_CHANGES_VIRTUAL_DISK_RANGE Ranges, PULONG RangeCount, PULONG64 ProcessedLength); | |
| VIRTDISKAPI WINAPI DWORD TakeSnapshotVhdSet(HANDLE VirtualDiskHandle, const PTAKE_SNAPSHOT_VHDSET_PARAMETERS Parameters, TAKE_SNAPSHOT_VHDSET_FLAG Flags); | |
| #endif /* _WIN32_WINNT >= 0x0A00 */ | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif /*(_WIN32_WINNT >= 0x0601)*/ | |
| #endif /*_INC_VIRTDISK*/ |