123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574 |
- /**
- * 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;
- 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*/
|