| virtdisk.h (6.3.9600.17415-Windows 8.1) | | virtdisk.h (10.0.10586.0-Windows 10 1511 10586.494) |
| | |
| skipping to change at line 25 | | skipping to change at line 25 |
| | |
| User mode | | User mode |
| | |
| --*/ | | --*/ |
| | |
| #ifndef VIRT_DISK_API_DEF | | #ifndef VIRT_DISK_API_DEF |
| #define VIRT_DISK_API_DEF | | #define VIRT_DISK_API_DEF |
| | |
| #include <winapifamily.h> | | #include <winapifamily.h> |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or VHD Package |
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PKG_VHD) |
| | |
| #if ((WINVER >= _WIN32_WINNT_WIN7) || defined(VIRTDISK_DEFINE_FLAGS)) | | #if ((WINVER >= _WIN32_WINNT_WIN7) || defined(VIRTDISK_DEFINE_FLAGS)) |
| | |
|
| | #if _MSC_VER >= 1200 |
| #pragma warning(push) | | #pragma warning(push) |
|
| #pragma warning(disable : 4200) | | #pragma warning(disable:4820) /* padding added after data member */ |
| #pragma warning(disable : 4201) | | #endif |
| | #pragma warning(disable:4200) /* nonstandard extension used : zero-sized array i |
| | n struct/union */ |
| | #pragma warning(disable:4201) /* nonstandard extension used : nameless struct/un |
| | ion */ |
| | |
| #ifdef __cplusplus | | #ifdef __cplusplus |
| extern "C" { | | extern "C" { |
| #endif | | #endif |
| | |
| // | | // |
| // Identifiers for virtual storage types and providers | | // Identifiers for virtual storage types and providers |
| // | | // |
| | |
| #ifndef _VIRTUAL_STORAGE_TYPE_DEFINED | | #ifndef _VIRTUAL_STORAGE_TYPE_DEFINED |
| | |
| skipping to change at line 62 | | skipping to change at line 65 |
| DEFINE_GUID(VIRTUAL_STORAGE_TYPE_VENDOR_UNKNOWN, 0x00000000, 0x0000, 0x0000, 0x0
0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); | | DEFINE_GUID(VIRTUAL_STORAGE_TYPE_VENDOR_UNKNOWN, 0x00000000, 0x0000, 0x0000, 0x0
0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); |
| | |
| // {EC984AEC-A0F9-47e9-901F-71415A66345B} | | // {EC984AEC-A0F9-47e9-901F-71415A66345B} |
| DEFINE_GUID(VIRTUAL_STORAGE_TYPE_VENDOR_MICROSOFT, 0xec984aec, 0xa0f9, 0x47e9, 0
x90, 0x1f, 0x71, 0x41, 0x5a, 0x66, 0x34, 0x5b); | | DEFINE_GUID(VIRTUAL_STORAGE_TYPE_VENDOR_MICROSOFT, 0xec984aec, 0xa0f9, 0x47e9, 0
x90, 0x1f, 0x71, 0x41, 0x5a, 0x66, 0x34, 0x5b); |
| #endif | | #endif |
| | |
| #define VIRTUAL_STORAGE_TYPE_DEVICE_UNKNOWN 0 | | #define VIRTUAL_STORAGE_TYPE_DEVICE_UNKNOWN 0 |
| #define VIRTUAL_STORAGE_TYPE_DEVICE_ISO 1 | | #define VIRTUAL_STORAGE_TYPE_DEVICE_ISO 1 |
| #define VIRTUAL_STORAGE_TYPE_DEVICE_VHD 2 | | #define VIRTUAL_STORAGE_TYPE_DEVICE_VHD 2 |
| #define VIRTUAL_STORAGE_TYPE_DEVICE_VHDX 3 | | #define VIRTUAL_STORAGE_TYPE_DEVICE_VHDX 3 |
|
| | #define VIRTUAL_STORAGE_TYPE_DEVICE_VHDSET 4 |
| | |
| #if !defined(VIRTDISK_DEFINE_FLAGS) | | #if !defined(VIRTDISK_DEFINE_FLAGS) |
| | |
| // The default RW Depth parameter value | | // The default RW Depth parameter value |
| #define OPEN_VIRTUAL_DISK_RW_DEPTH_DEFAULT 1 | | #define OPEN_VIRTUAL_DISK_RW_DEPTH_DEFAULT 1 |
| | |
| // Version definitions | | // Version definitions |
| typedef enum _OPEN_VIRTUAL_DISK_VERSION | | typedef enum _OPEN_VIRTUAL_DISK_VERSION |
| { | | { |
| OPEN_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, | | OPEN_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, |
| OPEN_VIRTUAL_DISK_VERSION_1 = 1, | | OPEN_VIRTUAL_DISK_VERSION_1 = 1, |
| OPEN_VIRTUAL_DISK_VERSION_2 = 2, | | OPEN_VIRTUAL_DISK_VERSION_2 = 2, |
|
| | OPEN_VIRTUAL_DISK_VERSION_3 = 3, |
| | |
| } OPEN_VIRTUAL_DISK_VERSION; | | } OPEN_VIRTUAL_DISK_VERSION; |
| | |
| // Versioned OpenVirtualDisk parameter structure | | // Versioned OpenVirtualDisk parameter structure |
| typedef struct _OPEN_VIRTUAL_DISK_PARAMETERS | | typedef struct _OPEN_VIRTUAL_DISK_PARAMETERS |
| { | | { |
| OPEN_VIRTUAL_DISK_VERSION Version; | | OPEN_VIRTUAL_DISK_VERSION Version; |
| | |
| union | | union |
| { | | { |
| struct | | struct |
| { | | { |
| ULONG RWDepth; | | ULONG RWDepth; |
| } Version1; | | } Version1; |
| struct | | struct |
| { | | { |
| BOOL GetInfoOnly; | | BOOL GetInfoOnly; |
| BOOL ReadOnly; | | BOOL ReadOnly; |
| GUID ResiliencyGuid; | | GUID ResiliencyGuid; |
| } Version2; | | } Version2; |
|
| | struct |
| | { |
| | BOOL GetInfoOnly; |
| | BOOL ReadOnly; |
| | GUID ResiliencyGuid; |
| | GUID SnapshotId; |
| | } Version3; |
| }; | | }; |
| } OPEN_VIRTUAL_DISK_PARAMETERS, *POPEN_VIRTUAL_DISK_PARAMETERS; | | } OPEN_VIRTUAL_DISK_PARAMETERS, *POPEN_VIRTUAL_DISK_PARAMETERS; |
| | |
| #endif // VIRTDISK_DEFINE_FLAGS | | #endif // VIRTDISK_DEFINE_FLAGS |
| | |
| // | | // |
| // Access Mask for OpenVirtualDisk and CreateVirtualDisk. The virtual | | // Access Mask for OpenVirtualDisk and CreateVirtualDisk. The virtual |
| // disk drivers expose file objects as handles therefore we map | | // disk drivers expose file objects as handles therefore we map |
| // it into that AccessMask space. | | // it into that AccessMask space. |
| // | | // |
| | |
| skipping to change at line 162 | | skipping to change at line 174 |
| | |
| // Open the backing store without opening any differencing chain parents. | | // Open the backing store without opening any differencing chain parents. |
| // This allows one to fixup broken parent links temporarily without updating | | // This allows one to fixup broken parent links temporarily without updating |
| // the parent locator. | | // the parent locator. |
| OPEN_VIRTUAL_DISK_FLAG_CUSTOM_DIFF_CHAIN = 0x00000010, | | OPEN_VIRTUAL_DISK_FLAG_CUSTOM_DIFF_CHAIN = 0x00000010, |
| | |
| // This flag causes all backing stores except the leaf backing store to | | // This flag causes all backing stores except the leaf backing store to |
| // be opened in cached mode. | | // be opened in cached mode. |
| OPEN_VIRTUAL_DISK_FLAG_PARENT_CACHED_IO = 0x00000020, | | OPEN_VIRTUAL_DISK_FLAG_PARENT_CACHED_IO = 0x00000020, |
| | |
|
| | // This flag causes a Vhd Set file to be opened without any virtual disk. |
| | OPEN_VIRTUAL_DISK_FLAG_VHDSET_FILE_ONLY = 0x00000040, |
| | |
| } OPEN_VIRTUAL_DISK_FLAG; | | } OPEN_VIRTUAL_DISK_FLAG; |
| | |
| #if !defined(VIRTDISK_DEFINE_FLAGS) | | #if !defined(VIRTDISK_DEFINE_FLAGS) |
| | |
| #ifdef DEFINE_ENUM_FLAG_OPERATORS | | #ifdef DEFINE_ENUM_FLAG_OPERATORS |
| DEFINE_ENUM_FLAG_OPERATORS(OPEN_VIRTUAL_DISK_FLAG); | | DEFINE_ENUM_FLAG_OPERATORS(OPEN_VIRTUAL_DISK_FLAG); |
| #endif | | #endif |
| | |
| DWORD | | DWORD |
| WINAPI | | WINAPI |
| | |
| skipping to change at line 203 | | skipping to change at line 218 |
| | |
| // Default logical sector size is 512B | | // Default logical sector size is 512B |
| #define CREATE_VIRTUAL_DISK_PARAMETERS_DEFAULT_SECTOR_SIZE 0 | | #define CREATE_VIRTUAL_DISK_PARAMETERS_DEFAULT_SECTOR_SIZE 0 |
| | |
| // Version definitions | | // Version definitions |
| typedef enum _CREATE_VIRTUAL_DISK_VERSION | | typedef enum _CREATE_VIRTUAL_DISK_VERSION |
| { | | { |
| CREATE_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, | | CREATE_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, |
| CREATE_VIRTUAL_DISK_VERSION_1 = 1, | | CREATE_VIRTUAL_DISK_VERSION_1 = 1, |
| CREATE_VIRTUAL_DISK_VERSION_2 = 2, | | CREATE_VIRTUAL_DISK_VERSION_2 = 2, |
|
| | | CREATE_VIRTUAL_DISK_VERSION_3 = 3, |
| } CREATE_VIRTUAL_DISK_VERSION; | | } CREATE_VIRTUAL_DISK_VERSION; |
| | |
| // Versioned CreateVirtualDisk parameter structure | | // Versioned CreateVirtualDisk parameter structure |
| typedef struct _CREATE_VIRTUAL_DISK_PARAMETERS | | typedef struct _CREATE_VIRTUAL_DISK_PARAMETERS |
| { | | { |
| CREATE_VIRTUAL_DISK_VERSION Version; | | CREATE_VIRTUAL_DISK_VERSION Version; |
| | |
| union | | union |
| { | | { |
| struct | | struct |
| | |
| skipping to change at line 237 | | skipping to change at line 252 |
| ULONG BlockSizeInBytes; | | ULONG BlockSizeInBytes; |
| ULONG SectorSizeInBytes; | | ULONG SectorSizeInBytes; |
| ULONG PhysicalSectorSizeInBytes; | | ULONG PhysicalSectorSizeInBytes; |
| PCWSTR ParentPath; | | PCWSTR ParentPath; |
| PCWSTR SourcePath; | | PCWSTR SourcePath; |
| OPEN_VIRTUAL_DISK_FLAG OpenFlags; | | OPEN_VIRTUAL_DISK_FLAG OpenFlags; |
| VIRTUAL_STORAGE_TYPE ParentVirtualStorageType; | | VIRTUAL_STORAGE_TYPE ParentVirtualStorageType; |
| VIRTUAL_STORAGE_TYPE SourceVirtualStorageType; | | VIRTUAL_STORAGE_TYPE SourceVirtualStorageType; |
| GUID ResiliencyGuid; | | GUID ResiliencyGuid; |
| } Version2; | | } Version2; |
|
| | |
| | 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; |
| | PCWSTR SourceLimitPath; |
| | VIRTUAL_STORAGE_TYPE BackingStorageType; |
| | } Version3; |
| }; | | }; |
| } CREATE_VIRTUAL_DISK_PARAMETERS, *PCREATE_VIRTUAL_DISK_PARAMETERS; | | } CREATE_VIRTUAL_DISK_PARAMETERS, *PCREATE_VIRTUAL_DISK_PARAMETERS; |
| | |
| // Flags for CreateVirtualDisk | | // Flags for CreateVirtualDisk |
| typedef enum _CREATE_VIRTUAL_DISK_FLAG | | typedef enum _CREATE_VIRTUAL_DISK_FLAG |
| { | | { |
| CREATE_VIRTUAL_DISK_FLAG_NONE = 0x0, | | CREATE_VIRTUAL_DISK_FLAG_NONE = 0x0, |
| | |
| // Pre-allocate all physical space necessary for the virtual | | // Pre-allocate all physical space necessary for the virtual |
| // size of the disk (e.g. a fixed VHD). | | // size of the disk (e.g. a fixed VHD). |
| | |
| skipping to change at line 265 | | skipping to change at line 297 |
| // offline or read-only. This flag is optional, but highly recommended for | | // offline or read-only. This flag is optional, but highly recommended for |
| // creates from source disk. No effect for other types of create (no effect | | // creates from source disk. No effect for other types of create (no effect |
| // for create from source VHD; no effect for create without SourcePath). | | // for create from source VHD; no effect for create without SourcePath). |
| CREATE_VIRTUAL_DISK_FLAG_PREVENT_WRITES_TO_SOURCE_DISK = 0x2, | | CREATE_VIRTUAL_DISK_FLAG_PREVENT_WRITES_TO_SOURCE_DISK = 0x2, |
| | |
| // Do not copy initial virtual disk metadata or block states from the | | // Do not copy initial virtual disk metadata or block states from the |
| // parent VHD; this is useful if the parent VHD is a stand-in file and the | | // parent VHD; this is useful if the parent VHD is a stand-in file and the |
| // real parent will be explicitly set later. | | // real parent will be explicitly set later. |
| CREATE_VIRTUAL_DISK_FLAG_DO_NOT_COPY_METADATA_FROM_PARENT = 0x4, | | CREATE_VIRTUAL_DISK_FLAG_DO_NOT_COPY_METADATA_FROM_PARENT = 0x4, |
| | |
|
| | // Create the backing storage disk. |
| | CREATE_VIRTUAL_DISK_FLAG_CREATE_BACKING_STORAGE = 0x8, |
| | |
| | // If set, the SourceLimitPath is an change tracking ID, and all data that h |
| | as changed |
| | // since that change tracking ID will be copied from the source. If clear, t |
| | he |
| | // SourceLimitPath is a VHD file path in the source VHD's chain, and |
| | // all data that is present in the children of that VHD in the chain |
| | // will be copied from the source. |
| | CREATE_VIRTUAL_DISK_FLAG_USE_CHANGE_TRACKING_SOURCE_LIMIT = 0x10, |
| | |
| | // If set and the parent VHD has change tracking enabled, the child will |
| | // have change tracking enabled and will recognize all change tracking |
| | // IDs that currently exist in the parent. If clear or if the parent VHD |
| | // does not have change tracking available, then change tracking will |
| | // not be enabled in the new VHD. |
| | CREATE_VIRTUAL_DISK_FLAG_PRESERVE_PARENT_CHANGE_TRACKING_STATE = 0x20, |
| | |
| } CREATE_VIRTUAL_DISK_FLAG; | | } CREATE_VIRTUAL_DISK_FLAG; |
| | |
|
| | #define CREATE_VIRTUAL_DISK_FLAG_USE_RCT_SOURCE_LIMIT CREATE_VIRTUAL_DISK_FLAG_U |
| | SE_CHANGE_TRACKING_SOURCE_LIMIT |
| | |
| #ifdef DEFINE_ENUM_FLAG_OPERATORS | | #ifdef DEFINE_ENUM_FLAG_OPERATORS |
| DEFINE_ENUM_FLAG_OPERATORS(CREATE_VIRTUAL_DISK_FLAG); | | DEFINE_ENUM_FLAG_OPERATORS(CREATE_VIRTUAL_DISK_FLAG); |
| #endif | | #endif |
| | |
| DWORD | | DWORD |
| WINAPI | | WINAPI |
| CreateVirtualDisk( | | CreateVirtualDisk( |
| _In_ PVIRTUAL_STORAGE_TYPE VirtualStorageType, | | _In_ PVIRTUAL_STORAGE_TYPE VirtualStorageType, |
| _In_ PCWSTR Path, | | _In_ PCWSTR Path, |
| _In_ VIRTUAL_DISK_ACCESS_MASK VirtualDiskAccessMask, | | _In_ VIRTUAL_DISK_ACCESS_MASK VirtualDiskAccessMask, |
| | |
| skipping to change at line 334 | | skipping to change at line 385 |
| | |
| // Will decouple the disk lifetime from that of the VirtualDiskHandle. | | // Will decouple the disk lifetime from that of the VirtualDiskHandle. |
| // The disk will be attached until an explicit call is made to | | // The disk will be attached until an explicit call is made to |
| // DetachVirtualDisk, even if all handles are closed. | | // DetachVirtualDisk, even if all handles are closed. |
| ATTACH_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME = 0x00000004, | | ATTACH_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME = 0x00000004, |
| | |
| // Indicates that the drive will not be attached to | | // Indicates that the drive will not be attached to |
| // the local system (but rather to a VM). | | // the local system (but rather to a VM). |
| ATTACH_VIRTUAL_DISK_FLAG_NO_LOCAL_HOST = 0x00000008, | | ATTACH_VIRTUAL_DISK_FLAG_NO_LOCAL_HOST = 0x00000008, |
| | |
|
| | // Do not assign a custom security descriptor to the disk; use the |
| | // system default. |
| | ATTACH_VIRTUAL_DISK_FLAG_NO_SECURITY_DESCRIPTOR = 0x00000010, |
| | |
| } ATTACH_VIRTUAL_DISK_FLAG; | | } ATTACH_VIRTUAL_DISK_FLAG; |
| | |
| #if !defined(VIRTDISK_DEFINE_FLAGS) | | #if !defined(VIRTDISK_DEFINE_FLAGS) |
| | |
| #ifdef DEFINE_ENUM_FLAG_OPERATORS | | #ifdef DEFINE_ENUM_FLAG_OPERATORS |
| DEFINE_ENUM_FLAG_OPERATORS(ATTACH_VIRTUAL_DISK_FLAG); | | DEFINE_ENUM_FLAG_OPERATORS(ATTACH_VIRTUAL_DISK_FLAG); |
| #endif | | #endif |
| | |
| DWORD | | DWORD |
| WINAPI | | WINAPI |
| | |
| skipping to change at line 399 | | skipping to change at line 454 |
| _Out_writes_bytes_(*DiskPathSizeInBytes) PWSTR DiskPath | | _Out_writes_bytes_(*DiskPathSizeInBytes) PWSTR DiskPath |
| ); | | ); |
| | |
| // | | // |
| // GetAllAttachedVirtualDiskPhysicalPaths | | // GetAllAttachedVirtualDiskPhysicalPaths |
| // | | // |
| | |
| DWORD | | DWORD |
| WINAPI | | WINAPI |
| GetAllAttachedVirtualDiskPhysicalPaths( | | GetAllAttachedVirtualDiskPhysicalPaths( |
|
| __inout PULONG PathsBufferSizeInBytes, | | _Inout_ PULONG PathsBufferSizeInBytes, |
| __out_bcount(*PathsBufferSizeInBytes) PWSTR PathsBuffer | | _Out_writes_bytes_(*PathsBufferSizeInBytes) PWSTR PathsBuffer |
| ); | | ); |
| | |
| #endif // VIRTDISK_DEFINE_FLAGS | | #endif // VIRTDISK_DEFINE_FLAGS |
| | |
| // | | // |
| // GetStorageDependencyInformation | | // GetStorageDependencyInformation |
| // | | // |
| | |
| // Flags for dependent disks | | // Flags for dependent disks |
| typedef enum _DEPENDENT_DISK_FLAG | | typedef enum _DEPENDENT_DISK_FLAG |
| | |
| skipping to change at line 566 | | skipping to change at line 621 |
| GET_VIRTUAL_DISK_INFO_PARENT_IDENTIFIER = 4, | | GET_VIRTUAL_DISK_INFO_PARENT_IDENTIFIER = 4, |
| GET_VIRTUAL_DISK_INFO_PARENT_TIMESTAMP = 5, | | GET_VIRTUAL_DISK_INFO_PARENT_TIMESTAMP = 5, |
| GET_VIRTUAL_DISK_INFO_VIRTUAL_STORAGE_TYPE = 6, | | GET_VIRTUAL_DISK_INFO_VIRTUAL_STORAGE_TYPE = 6, |
| GET_VIRTUAL_DISK_INFO_PROVIDER_SUBTYPE = 7, | | GET_VIRTUAL_DISK_INFO_PROVIDER_SUBTYPE = 7, |
| GET_VIRTUAL_DISK_INFO_IS_4K_ALIGNED = 8, | | GET_VIRTUAL_DISK_INFO_IS_4K_ALIGNED = 8, |
| GET_VIRTUAL_DISK_INFO_PHYSICAL_DISK = 9, | | GET_VIRTUAL_DISK_INFO_PHYSICAL_DISK = 9, |
| GET_VIRTUAL_DISK_INFO_VHD_PHYSICAL_SECTOR_SIZE = 10, | | GET_VIRTUAL_DISK_INFO_VHD_PHYSICAL_SECTOR_SIZE = 10, |
| GET_VIRTUAL_DISK_INFO_SMALLEST_SAFE_VIRTUAL_SIZE = 11, | | GET_VIRTUAL_DISK_INFO_SMALLEST_SAFE_VIRTUAL_SIZE = 11, |
| GET_VIRTUAL_DISK_INFO_FRAGMENTATION = 12, | | GET_VIRTUAL_DISK_INFO_FRAGMENTATION = 12, |
| GET_VIRTUAL_DISK_INFO_IS_LOADED = 13, | | GET_VIRTUAL_DISK_INFO_IS_LOADED = 13, |
|
| GET_VIRTUAL_DISK_INFO_VIRTUAL_DISK_ID = 14 | | GET_VIRTUAL_DISK_INFO_VIRTUAL_DISK_ID = 14, |
| | GET_VIRTUAL_DISK_INFO_CHANGE_TRACKING_STATE = 15, |
| | |
| } GET_VIRTUAL_DISK_INFO_VERSION; | | } GET_VIRTUAL_DISK_INFO_VERSION; |
| | |
| // Versioned parameter structure for GetVirtualDiskInformation | | // Versioned parameter structure for GetVirtualDiskInformation |
| typedef struct _GET_VIRTUAL_DISK_INFO | | typedef struct _GET_VIRTUAL_DISK_INFO |
| { | | { |
| GET_VIRTUAL_DISK_INFO_VERSION Version; | | GET_VIRTUAL_DISK_INFO_VERSION Version; |
| | |
| union | | union |
| { | | { |
| | |
| skipping to change at line 621 | | skipping to change at line 677 |
| | |
| ULONG VhdPhysicalSectorSize; | | ULONG VhdPhysicalSectorSize; |
| | |
| ULONGLONG SmallestSafeVirtualSize; | | ULONGLONG SmallestSafeVirtualSize; |
| | |
| // GET_VIRTUAL_DISK_INFO_FRAGMENTATION | | // GET_VIRTUAL_DISK_INFO_FRAGMENTATION |
| ULONG FragmentationPercentage; | | ULONG FragmentationPercentage; |
| | |
| // GET_VIRTUAL_DISK_INFO_VIRTUAL_DISK_ID | | // GET_VIRTUAL_DISK_INFO_VIRTUAL_DISK_ID |
| GUID VirtualDiskId; | | GUID VirtualDiskId; |
|
| | |
| | struct |
| | { |
| | BOOL Enabled; |
| | BOOL NewerChanges; |
| | WCHAR MostRecentId[1]; |
| | } ChangeTrackingState; |
| }; | | }; |
| } GET_VIRTUAL_DISK_INFO, *PGET_VIRTUAL_DISK_INFO; | | } GET_VIRTUAL_DISK_INFO, *PGET_VIRTUAL_DISK_INFO; |
| | |
|
| | #define VIRTUAL_DISK_MAXIMUM_CHANGE_TRACKING_ID_LENGTH 256 |
| | |
| _Success_(return == ERROR_SUCCESS) | | _Success_(return == ERROR_SUCCESS) |
| DWORD | | DWORD |
| WINAPI | | WINAPI |
| GetVirtualDiskInformation( | | GetVirtualDiskInformation( |
| _In_ HANDLE VirtualDiskHa
ndle, | | _In_ HANDLE VirtualDiskHa
ndle, |
| _Inout_ PULONG VirtualDiskIn
foSize, | | _Inout_ PULONG VirtualDiskIn
foSize, |
| _Inout_updates_bytes_to_(*VirtualDiskInfoSize, *VirtualDiskInfoSize) PGET_VI
RTUAL_DISK_INFO VirtualDiskInfo, | | _Inout_updates_bytes_to_(*VirtualDiskInfoSize, *VirtualDiskInfoSize) PGET_VI
RTUAL_DISK_INFO VirtualDiskInfo, |
| _Out_opt_ PULONG SizeUsed | | _Out_opt_ PULONG SizeUsed |
| ); | | ); |
| | |
| | |
| skipping to change at line 646 | | skipping to change at line 711 |
| // | | // |
| | |
| // Version definitions | | // Version definitions |
| typedef enum _SET_VIRTUAL_DISK_INFO_VERSION | | typedef enum _SET_VIRTUAL_DISK_INFO_VERSION |
| { | | { |
| SET_VIRTUAL_DISK_INFO_UNSPECIFIED = 0, | | SET_VIRTUAL_DISK_INFO_UNSPECIFIED = 0, |
| SET_VIRTUAL_DISK_INFO_PARENT_PATH = 1, | | SET_VIRTUAL_DISK_INFO_PARENT_PATH = 1, |
| SET_VIRTUAL_DISK_INFO_IDENTIFIER = 2, | | SET_VIRTUAL_DISK_INFO_IDENTIFIER = 2, |
| SET_VIRTUAL_DISK_INFO_PARENT_PATH_WITH_DEPTH = 3, | | SET_VIRTUAL_DISK_INFO_PARENT_PATH_WITH_DEPTH = 3, |
| SET_VIRTUAL_DISK_INFO_PHYSICAL_SECTOR_SIZE = 4, | | SET_VIRTUAL_DISK_INFO_PHYSICAL_SECTOR_SIZE = 4, |
|
| SET_VIRTUAL_DISK_INFO_VIRTUAL_DISK_ID = 5 | | SET_VIRTUAL_DISK_INFO_VIRTUAL_DISK_ID = 5, |
| | SET_VIRTUAL_DISK_INFO_CHANGE_TRACKING_STATE = 6, |
| | SET_VIRTUAL_DISK_INFO_PARENT_LOCATOR = 7, |
| | |
| } SET_VIRTUAL_DISK_INFO_VERSION; | | } SET_VIRTUAL_DISK_INFO_VERSION; |
| | |
| // Versioned parameter structure for SetVirtualDiskInformation | | // Versioned parameter structure for SetVirtualDiskInformation |
| typedef struct _SET_VIRTUAL_DISK_INFO | | typedef struct _SET_VIRTUAL_DISK_INFO |
| { | | { |
| SET_VIRTUAL_DISK_INFO_VERSION Version; | | SET_VIRTUAL_DISK_INFO_VERSION Version; |
| | |
| union | | union |
| { | | { |
| | |
| skipping to change at line 671 | | skipping to change at line 738 |
| struct | | struct |
| { | | { |
| ULONG ChildDepth; | | ULONG ChildDepth; |
| PCWSTR ParentFilePath; | | PCWSTR ParentFilePath; |
| } ParentPathWithDepthInfo; | | } ParentPathWithDepthInfo; |
| | |
| ULONG VhdPhysicalSectorSize; | | ULONG VhdPhysicalSectorSize; |
| | |
| // SET_VIRTUAL_DISK_INFO_VIRTUAL_DISK_ID | | // SET_VIRTUAL_DISK_INFO_VIRTUAL_DISK_ID |
| GUID VirtualDiskId; | | GUID VirtualDiskId; |
|
| | |
| | BOOL ChangeTrackingEnabled; |
| | |
| | struct |
| | { |
| | GUID LinkageId; |
| | PCWSTR ParentFilePath; |
| | } ParentLocator; |
| }; | | }; |
| } SET_VIRTUAL_DISK_INFO, *PSET_VIRTUAL_DISK_INFO; | | } SET_VIRTUAL_DISK_INFO, *PSET_VIRTUAL_DISK_INFO; |
| | |
| DWORD | | DWORD |
| WINAPI | | WINAPI |
| SetVirtualDiskInformation( | | SetVirtualDiskInformation( |
| _In_ HANDLE VirtualDiskHandle, | | _In_ HANDLE VirtualDiskHandle, |
| _In_ PSET_VIRTUAL_DISK_INFO VirtualDiskInfo | | _In_ PSET_VIRTUAL_DISK_INFO VirtualDiskInfo |
| ); | | ); |
| | |
| | |
| skipping to change at line 1004 | | skipping to change at line 1079 |
| | |
| // | | // |
| // BreakMirrorVirtualDisk | | // BreakMirrorVirtualDisk |
| // | | // |
| | |
| #if (NTDDI_VERSION >= NTDDI_WIN8) | | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| | |
| DWORD | | DWORD |
| WINAPI | | WINAPI |
| BreakMirrorVirtualDisk( | | BreakMirrorVirtualDisk( |
|
| _In_ HANDLE VirtualDiskHandle | | _In_ HANDLE VirtualDiskHandle |
| ); | | ); |
| | |
| #endif // NTDDI_VERSION >= NTDDI_WIN8 | | #endif // NTDDI_VERSION >= NTDDI_WIN8 |
| | |
| // | | // |
| // AddVirtualDiskParent | | // AddVirtualDiskParent |
| // | | // |
| | |
| #if (NTDDI_VERSION >= NTDDI_WIN8) | | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| | |
| DWORD | | DWORD |
| WINAPI | | WINAPI |
| AddVirtualDiskParent( | | AddVirtualDiskParent( |
| _In_ HANDLE VirtualDiskHandle, | | _In_ HANDLE VirtualDiskHandle, |
| _In_ PCWSTR ParentPath | | _In_ PCWSTR ParentPath |
| ); | | ); |
| | |
| #endif // NTDDI_VERSION >= NTDDI_WIN8 | | #endif // NTDDI_VERSION >= NTDDI_WIN8 |
| | |
|
| | typedef struct _QUERY_CHANGES_VIRTUAL_DISK_RANGE { |
| | ULONG64 ByteOffset; |
| | ULONG64 ByteLength; |
| | ULONG64 Reserved; |
| | } QUERY_CHANGES_VIRTUAL_DISK_RANGE, *PQUERY_CHANGES_VIRTUAL_DISK_RANGE; |
| | |
| | // Flags for QueryChangesVirtualDisk |
| | typedef enum _QUERY_CHANGES_VIRTUAL_DISK_FLAG |
| | { |
| | QUERY_CHANGES_VIRTUAL_DISK_FLAG_NONE = 0x00000000, |
| | |
| | } QUERY_CHANGES_VIRTUAL_DISK_FLAG; |
| | |
| | #ifdef DEFINE_ENUM_FLAG_OPERATORS |
| | DEFINE_ENUM_FLAG_OPERATORS(QUERY_CHANGES_VIRTUAL_DISK_FLAG); |
| | #endif |
| | |
| | typedef enum _TAKE_SNAPSHOT_VHDSET_FLAG |
| | { |
| | TAKE_SNAPSHOT_VHDSET_FLAG_NONE = 0x00000000, |
| | TAKE_SNAPSHOT_VHDSET_FLAG_WRITEABLE = 0x00000001, |
| | |
| | } TAKE_SNAPSHOT_VHDSET_FLAG, *PTAKE_SNAPSHOT_VHDSET_FLAG; |
| | |
| | #ifdef DEFINE_ENUM_FLAG_OPERATORS |
| | DEFINE_ENUM_FLAG_OPERATORS(TAKE_SNAPSHOT_VHDSET_FLAG); |
| | #endif |
| | |
| | typedef enum _TAKE_SNAPSHOT_VHDSET_VERSION |
| | { |
| | TAKE_SNAPSHOT_VHDSET_VERSION_UNSPECIFIED = 0, |
| | TAKE_SNAPSHOT_VHDSET_VERSION_1 = 1, |
| | |
| | } TAKE_SNAPSHOT_VHDSET_VERSION; |
| | |
| | typedef struct _TAKE_SNAPSHOT_VHDSET_PARAMETERS |
| | { |
| | TAKE_SNAPSHOT_VHDSET_VERSION Version; |
| | |
| | union |
| | { |
| | struct |
| | { |
| | GUID SnapshotId; |
| | } Version1; |
| | }; |
| | } TAKE_SNAPSHOT_VHDSET_PARAMETERS, *PTAKE_SNAPSHOT_VHDSET_PARAMETERS; |
| | |
| | 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; |
| | |
| | #ifdef DEFINE_ENUM_FLAG_OPERATORS |
| | DEFINE_ENUM_FLAG_OPERATORS(DELETE_SNAPSHOT_VHDSET_FLAG); |
| | #endif |
| | |
| | typedef enum _DELETE_SNAPSHOT_VHDSET_VERSION |
| | { |
| | DELETE_SNAPSHOT_VHDSET_VERSION_UNSPECIFIED = 0, |
| | DELETE_SNAPSHOT_VHDSET_VERSION_1 = 1, |
| | |
| | } DELETE_SNAPSHOT_VHDSET_VERSION; |
| | |
| | typedef struct _DELETE_SNAPSHOT_VHDSET_PARAMETERS |
| | { |
| | DELETE_SNAPSHOT_VHDSET_VERSION Version; |
| | |
| | union |
| | { |
| | struct |
| | { |
| | GUID SnapshotId; |
| | } Version1; |
| | }; |
| | } DELETE_SNAPSHOT_VHDSET_PARAMETERS, *PDELETE_SNAPSHOT_VHDSET_PARAMETERS; |
| | |
| | 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 _MODIFY_VHDSET_FLAG |
| | { |
| | MODIFY_VHDSET_FLAG_NONE = 0x00000000, |
| | MODIFY_VHDSET_FLAG_WRITEABLE_SNAPSHOT = 0x00000001, |
| | |
| | } MODIFY_VHDSET_FLAG, *PMODIFY_VHDSET_FLAG; |
| | |
| | #ifdef DEFINE_ENUM_FLAG_OPERATORS |
| | DEFINE_ENUM_FLAG_OPERATORS(MODIFY_VHDSET_FLAG); |
| | #endif |
| | |
| | typedef struct _MODIFY_VHDSET_PARAMETERS |
| | { |
| | MODIFY_VHDSET_VERSION Version; |
| | |
| | union |
| | { |
| | struct |
| | { |
| | GUID SnapshotId; |
| | PCWSTR SnapshotFilePath; |
| | } SnapshotPath; |
| | |
| | GUID SnapshotId; |
| | |
| | PCWSTR DefaultFilePath; |
| | }; |
| | } MODIFY_VHDSET_PARAMETERS, *PMODIFY_VHDSET_PARAMETERS; |
| | |
| | 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; |
| | |
| | #ifdef DEFINE_ENUM_FLAG_OPERATORS |
| | DEFINE_ENUM_FLAG_OPERATORS(APPLY_SNAPSHOT_VHDSET_FLAG); |
| | #endif |
| | |
| | typedef enum _APPLY_SNAPSHOT_VHDSET_VERSION |
| | { |
| | APPLY_SNAPSHOT_VHDSET_VERSION_UNSPECIFIED = 0, |
| | APPLY_SNAPSHOT_VHDSET_VERSION_1 = 1, |
| | |
| | } APPLY_SNAPSHOT_VHDSET_VERSION; |
| | |
| | typedef struct _APPLY_SNAPSHOT_VHDSET_PARAMETERS |
| | { |
| | APPLY_SNAPSHOT_VHDSET_VERSION Version; |
| | |
| | union |
| | { |
| | struct |
| | { |
| | GUID SnapshotId; |
| | GUID LeafSnapshotId; |
| | } Version1; |
| | }; |
| | } APPLY_SNAPSHOT_VHDSET_PARAMETERS, *PAPPLY_SNAPSHOT_VHDSET_PARAMETERS; |
| | |
| | #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) |
| | |
| | DWORD |
| | WINAPI |
| | QueryChangesVirtualDisk ( |
| | _In_ HANDLE VirtualDiskHandle, |
| | _In_ PCWSTR ChangeTrackingId, |
| | _In_ ULONG64 ByteOffset, |
| | _In_ ULONG64 ByteLength, |
| | _In_ QUERY_CHANGES_VIRTUAL_DISK_FLAG Flags, |
| | _Out_writes_to_(*RangeCount, *RangeCount) PQUERY_CHANGES_VIRTUAL_DISK_RANGE |
| | Ranges, |
| | _Inout_ PULONG RangeCount, |
| | _Out_ PULONG64 ProcessedLength |
| | ); |
| | |
| | DWORD |
| | WINAPI |
| | TakeSnapshotVhdSet ( |
| | _In_ HANDLE VirtualDiskHandle, |
| | _In_ const PTAKE_SNAPSHOT_VHDSET_PARAMETERS Parameters, |
| | _In_ TAKE_SNAPSHOT_VHDSET_FLAG Flags |
| | ); |
| | |
| | DWORD |
| | WINAPI |
| | DeleteSnapshotVhdSet ( |
| | _In_ HANDLE VirtualDiskHandle, |
| | _In_ const PDELETE_SNAPSHOT_VHDSET_PARAMETERS Parameters, |
| | _In_ DELETE_SNAPSHOT_VHDSET_FLAG Flags |
| | ); |
| | |
| | DWORD |
| | WINAPI |
| | ModifyVhdSet ( |
| | _In_ HANDLE VirtualDiskHandle, |
| | _In_ const PMODIFY_VHDSET_PARAMETERS Parameters, |
| | _In_ MODIFY_VHDSET_FLAG Flags |
| | ); |
| | |
| | DWORD |
| | WINAPI |
| | ApplySnapshotVhdSet ( |
| | _In_ HANDLE VirtualDiskHandle, |
| | _In_ const PAPPLY_SNAPSHOT_VHDSET_PARAMETERS Parameters, |
| | _In_ APPLY_SNAPSHOT_VHDSET_FLAG Flags |
| | ); |
| | |
| | #endif // NTDDI_VERSION >= NTDDI_WINTHRESHOLD |
| #endif // VIRTDISK_DEFINE_FLAGS | | #endif // VIRTDISK_DEFINE_FLAGS |
| | |
| // | | // |
| // The Surface and Unsurface API names are deprecated. Use Attach/Detach versi
ons | | // The Surface and Unsurface API names are deprecated. Use Attach/Detach versi
ons |
| // instead. If you use any of these defines below your code will break post Wi
n7. | | // instead. If you use any of these defines below your code will break post Wi
n7. |
| // | | // |
| | |
| #define SurfaceVirtualDisk AttachVirtualDisk | | #define SurfaceVirtualDisk AttachVirtualDisk |
| #define UnsurfaceVirtualDisk DetachVirtualDisk | | #define UnsurfaceVirtualDisk DetachVirtualDisk |
| #define VIRTUAL_DISK_ACCESS_SURFACE_RO VIRTUAL_DISK_ACCESS_ATTACH_
RO | | #define VIRTUAL_DISK_ACCESS_SURFACE_RO VIRTUAL_DISK_ACCESS_ATTACH_
RO |
| | |
| skipping to change at line 1052 | | skipping to change at line 1324 |
| #define _SURFACE_VIRTUAL_DISK_PARAMETERS _ATTACH_VIRTUAL_DISK_PARAME
TERS | | #define _SURFACE_VIRTUAL_DISK_PARAMETERS _ATTACH_VIRTUAL_DISK_PARAME
TERS |
| | |
| #if !defined(__midl) | | #if !defined(__midl) |
| | |
| #define _SURFACE_VIRTUAL_DISK_FLAG _ATTACH_VIRTUAL_
DISK_FLAG | | #define _SURFACE_VIRTUAL_DISK_FLAG _ATTACH_VIRTUAL_
DISK_FLAG |
| #define SURFACE_VIRTUAL_DISK_FLAG_NONE ATTACH_VIRTUAL_D
ISK_FLAG_NONE | | #define SURFACE_VIRTUAL_DISK_FLAG_NONE ATTACH_VIRTUAL_D
ISK_FLAG_NONE |
| #define SURFACE_VIRTUAL_DISK_FLAG_READ_ONLY ATTACH_VIRTUAL_D
ISK_FLAG_READ_ONLY | | #define SURFACE_VIRTUAL_DISK_FLAG_READ_ONLY ATTACH_VIRTUAL_D
ISK_FLAG_READ_ONLY |
| #define SURFACE_VIRTUAL_DISK_FLAG_NO_DRIVE_LETTER ATTACH_VIRTUAL_D
ISK_FLAG_NO_DRIVE_LETTER | | #define SURFACE_VIRTUAL_DISK_FLAG_NO_DRIVE_LETTER ATTACH_VIRTUAL_D
ISK_FLAG_NO_DRIVE_LETTER |
| #define SURFACE_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME ATTACH_VIRTUAL_D
ISK_FLAG_PERMANENT_LIFETIME | | #define SURFACE_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME ATTACH_VIRTUAL_D
ISK_FLAG_PERMANENT_LIFETIME |
| #define SURFACE_VIRTUAL_DISK_FLAG_NO_LOCAL_HOST ATTACH_VIRTUAL_D
ISK_FLAG_NO_LOCAL_HOST | | #define SURFACE_VIRTUAL_DISK_FLAG_NO_LOCAL_HOST ATTACH_VIRTUAL_D
ISK_FLAG_NO_LOCAL_HOST |
|
| | #define SURFACE_VIRTUAL_DISK_FLAG_NO_SECURITY_DESCRIPTOR ATTACH_VIRTUAL_D
ISK_FLAG_NO_SECURITY_DESCRIPTOR |
| #define SURFACE_VIRTUAL_DISK_FLAG ATTACH_VIRTUAL_D
ISK_FLAG | | #define SURFACE_VIRTUAL_DISK_FLAG ATTACH_VIRTUAL_D
ISK_FLAG |
| #define _UNSURFACE_VIRTUAL_DISK_FLAG _DETACH_VIRTUAL_
DISK_FLAG | | #define _UNSURFACE_VIRTUAL_DISK_FLAG _DETACH_VIRTUAL_
DISK_FLAG |
| #define UNSURFACE_VIRTUAL_DISK_FLAG_NONE DETACH_VIRTUAL_D
ISK_FLAG_NONE | | #define UNSURFACE_VIRTUAL_DISK_FLAG_NONE DETACH_VIRTUAL_D
ISK_FLAG_NONE |
| #define UNSURFACE_VIRTUAL_DISK_FLAG DETACH_VIRTUAL_D
ISK_FLAG | | #define UNSURFACE_VIRTUAL_DISK_FLAG DETACH_VIRTUAL_D
ISK_FLAG |
| | |
| #else | | #else |
| | |
| typedef enum _SURFACE_VIRTUAL_DISK_FLAG | | typedef enum _SURFACE_VIRTUAL_DISK_FLAG |
| { | | { |
| SURFACE_VIRTUAL_DISK_FLAG_NONE = 0x00000000, | | SURFACE_VIRTUAL_DISK_FLAG_NONE = 0x00000000, |
| SURFACE_VIRTUAL_DISK_FLAG_READ_ONLY = 0x00000001, | | SURFACE_VIRTUAL_DISK_FLAG_READ_ONLY = 0x00000001, |
| SURFACE_VIRTUAL_DISK_FLAG_NO_DRIVE_LETTER = 0x00000002, | | SURFACE_VIRTUAL_DISK_FLAG_NO_DRIVE_LETTER = 0x00000002, |
| SURFACE_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME = 0x00000004, | | SURFACE_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME = 0x00000004, |
| SURFACE_VIRTUAL_DISK_FLAG_NO_LOCAL_HOST = 0x00000008, | | SURFACE_VIRTUAL_DISK_FLAG_NO_LOCAL_HOST = 0x00000008, |
|
| | SURFACE_VIRTUAL_DISK_FLAG_NO_SECURITY_DESCRIPTOR = 0x00000010, |
| } SURFACE_VIRTUAL_DISK_FLAG; | | } SURFACE_VIRTUAL_DISK_FLAG; |
| | |
| typedef enum _UNSURFACE_VIRTUAL_DISK_FLAG | | typedef enum _UNSURFACE_VIRTUAL_DISK_FLAG |
| { | | { |
| UNSURFACE_VIRTUAL_DISK_FLAG_NONE = 0x00000000, | | UNSURFACE_VIRTUAL_DISK_FLAG_NONE = 0x00000000, |
| } UNSURFACE_VIRTUAL_DISK_FLAG; | | } UNSURFACE_VIRTUAL_DISK_FLAG; |
| | |
| #if !defined(VIRTDISK_DEFINE_FLAGS) | | #if !defined(VIRTDISK_DEFINE_FLAGS) |
| | |
| #ifdef DEFINE_ENUM_FLAG_OPERATORS | | #ifdef DEFINE_ENUM_FLAG_OPERATORS |
| | |
| skipping to change at line 1091 | | skipping to change at line 1365 |
| #endif | | #endif |
| | |
| #endif | | #endif |
| | |
| // End deprecated APIs | | // End deprecated APIs |
| | |
| #ifdef __cplusplus | | #ifdef __cplusplus |
| } | | } |
| #endif | | #endif |
| | |
|
| | #if _MSC_VER >= 1200 |
| #pragma warning(pop) | | #pragma warning(pop) |
|
| | #endif |
| | |
| #endif // WIN32_WINNT_WIN7 | | #endif // WIN32_WINNT_WIN7 |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PK
G_VHD) */ |
| #pragma endregion | | #pragma endregion |
| | |
| #endif // VIRT_DISK_API_DEF | | #endif // VIRT_DISK_API_DEF |
| | |
| // VirtDisk.h EOF | | // VirtDisk.h EOF |
| | |
| End of changes. 25 change blocks. |
| 11 lines changed or deleted | | 293 lines changed or added |
|