Advertisement
MagicAndre1981

VHD gets new format 3 in #Windows10

Apr 4th, 2015
423
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.61 KB | None | 0 0
  1. typedef
  2. enum _OPEN_VIRTUAL_DISK_VERSION
  3. {
  4. OPEN_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0,
  5. OPEN_VIRTUAL_DISK_VERSION_1 = 1,
  6. OPEN_VIRTUAL_DISK_VERSION_2 = 2,
  7. OPEN_VIRTUAL_DISK_VERSION_3 = 3
  8. } OPEN_VIRTUAL_DISK_VERSION;
  9.  
  10.  
  11. typedef struct _OPEN_VIRTUAL_DISK_PARAMETERS
  12. {
  13. OPEN_VIRTUAL_DISK_VERSION Version;
  14. union
  15. {
  16. struct
  17. {
  18. ULONG RWDepth;
  19. } Version1;
  20. struct
  21. {
  22. BOOL GetInfoOnly;
  23. BOOL ReadOnly;
  24. GUID ResiliencyGuid;
  25. } Version2;
  26. struct
  27. {
  28. BOOL GetInfoOnly;
  29. BOOL ReadOnly;
  30. GUID ResiliencyGuid;
  31. GUID SnapshotId;
  32. } Version3;
  33. } ;
  34. } OPEN_VIRTUAL_DISK_PARAMETERS;
  35.  
  36.  
  37. OPEN_VIRTUAL_DISK_FLAG_VHDSET_FILE_ONLY = 0x40
  38.  
  39. struct
  40. {
  41. GUID UniqueId;
  42. ULONGLONG MaximumSize;
  43. ULONG BlockSizeInBytes;
  44. ULONG SectorSizeInBytes;
  45. ULONG PhysicalSectorSizeInBytes;
  46. PCWSTR ParentPath;
  47. PCWSTR SourcePath;
  48. OPEN_VIRTUAL_DISK_FLAG OpenFlags;
  49. VIRTUAL_STORAGE_TYPE ParentVirtualStorageType;
  50. VIRTUAL_STORAGE_TYPE SourceVirtualStorageType;
  51. GUID ResiliencyGuid;
  52. PCWSTR SourceLimitPath;
  53. VIRTUAL_STORAGE_TYPE BackingStorageType;
  54. } Version3;
  55.  
  56.  
  57. typedef
  58. enum _CREATE_VIRTUAL_DISK_FLAG
  59. {
  60. CREATE_VIRTUAL_DISK_FLAG_NONE = 0,
  61. CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION = 0x1,
  62. CREATE_VIRTUAL_DISK_FLAG_PREVENT_WRITES_TO_SOURCE_DISK = 0x2,
  63. CREATE_VIRTUAL_DISK_FLAG_DO_NOT_COPY_METADATA_FROM_PARENT = 0x4,
  64. CREATE_VIRTUAL_DISK_FLAG_CREATE_BACKING_STORAGE = 0x8,
  65. CREATE_VIRTUAL_DISK_FLAG_USE_CHANGE_TRACKING_SOURCE_LIMIT = 0x10,
  66. CREATE_VIRTUAL_DISK_FLAG_PRESERVE_PARENT_CHANGE_TRACKING_STATE = 0x20
  67. } CREATE_VIRTUAL_DISK_FLAG;
  68.  
  69.  
  70. typedef struct _QUERY_CHANGES_VIRTUAL_DISK_RANGE
  71. {
  72. ULONG64 ByteOffset;
  73. ULONG64 ByteLength;
  74. ULONG64 Reserved;
  75. } QUERY_CHANGES_VIRTUAL_DISK_RANGE;
  76.  
  77. typedef struct _QUERY_CHANGES_VIRTUAL_DISK_RANGE *PQUERY_CHANGES_VIRTUAL_DISK_RANGE;
  78.  
  79. typedef
  80. enum _QUERY_CHANGES_VIRTUAL_DISK_FLAG
  81. {
  82. QUERY_CHANGES_VIRTUAL_DISK_FLAG_NONE = 0
  83. } QUERY_CHANGES_VIRTUAL_DISK_FLAG;
  84.  
  85. typedef
  86. enum _TAKE_SNAPSHOT_VHDSET_FLAG
  87. {
  88. TAKE_SNAPSHOT_VHDSET_FLAG_NONE = 0
  89. } TAKE_SNAPSHOT_VHDSET_FLAG;
  90.  
  91. typedef enum _TAKE_SNAPSHOT_VHDSET_FLAG *PTAKE_SNAPSHOT_VHDSET_FLAG;
  92.  
  93. typedef
  94. enum _TAKE_SNAPSHOT_VHDSET_VERSION
  95. {
  96. TAKE_SNAPSHOT_VHDSET_VERSION_UNSPECIFIED = 0,
  97. TAKE_SNAPSHOT_VHDSET_VERSION_1 = 1
  98. } TAKE_SNAPSHOT_VHDSET_VERSION;
  99.  
  100. typedef struct _TAKE_SNAPSHOT_VHDSET_PARAMETERS
  101. {
  102. TAKE_SNAPSHOT_VHDSET_VERSION Version;
  103. union
  104. {
  105. struct
  106. {
  107. GUID SnapshotId;
  108. } Version1;
  109. } ;
  110. } TAKE_SNAPSHOT_VHDSET_PARAMETERS;
  111.  
  112. typedef struct _TAKE_SNAPSHOT_VHDSET_PARAMETERS *PTAKE_SNAPSHOT_VHDSET_PARAMETERS;
  113.  
  114. typedef
  115. enum _DELETE_SNAPSHOT_VHDSET_FLAG
  116. {
  117. DELETE_SNAPSHOT_VHDSET_FLAG_NONE = 0,
  118. DELETE_SNAPSHOT_VHDSET_FLAG_PERSIST_RCT = 0x1
  119. } DELETE_SNAPSHOT_VHDSET_FLAG;
  120.  
  121. typedef enum _DELETE_SNAPSHOT_VHDSET_FLAG *PDELETE_SNAPSHOT_VHDSET_FLAG;
  122.  
  123. typedef
  124. enum _DELETE_SNAPSHOT_VHDSET_VERSION
  125. {
  126. DELETE_SNAPSHOT_VHDSET_VERSION_UNSPECIFIED = 0,
  127. DELETE_SNAPSHOT_VHDSET_VERSION_1 = 1
  128. } DELETE_SNAPSHOT_VHDSET_VERSION;
  129.  
  130. typedef struct _DELETE_SNAPSHOT_VHDSET_PARAMETERS
  131. {
  132. DELETE_SNAPSHOT_VHDSET_VERSION Version;
  133. union
  134. {
  135. struct
  136. {
  137. GUID SnapshotId;
  138. } Version1;
  139. } ;
  140. } DELETE_SNAPSHOT_VHDSET_PARAMETERS;
  141.  
  142. typedef struct _DELETE_SNAPSHOT_VHDSET_PARAMETERS *PDELETE_SNAPSHOT_VHDSET_PARAMETERS;
  143.  
  144. DWORD __stdcall QueryChangesVirtualDisk(
  145. HANDLE VirtualDiskHandle,
  146. PCWSTR ChangeTrackingId,
  147. ULONG64 ByteOffset,
  148. ULONG64 ByteLength,
  149. QUERY_CHANGES_VIRTUAL_DISK_FLAG Flags,
  150. PQUERY_CHANGES_VIRTUAL_DISK_RANGE Ranges,
  151. PULONG RangeCount,
  152. PULONG64 ProcessedLength);
  153.  
  154. DWORD __stdcall TakeSnapshotVhdSet(
  155. HANDLE VirtualDiskHandle,
  156. const PTAKE_SNAPSHOT_VHDSET_PARAMETERS Parameters,
  157. TAKE_SNAPSHOT_VHDSET_FLAG Flags);
  158.  
  159. DWORD __stdcall DeleteSnapshotVhdSet(
  160. HANDLE VirtualDiskHandle,
  161. const PDELETE_SNAPSHOT_VHDSET_PARAMETERS Parameters,
  162. DELETE_SNAPSHOT_VHDSET_FLAG Flags);
  163.  
  164. typedef
  165. enum _MODIFY_VHDSET_VERSION
  166. {
  167. MODIFY_VHDSET_UNSPECIFIED = 0,
  168. MODIFY_VHDSET_SNAPSHOT_PATH = 1,
  169. MODIFY_VHDSET_REMOVE_SNAPSHOT = 2,
  170. MODIFY_VHDSET_DEFAULT_SNAPSHOT_PATH = 3
  171. } MODIFY_VHDSET_VERSION;
  172.  
  173. typedef enum _MODIFY_VHDSET_VERSION *PMODIFY_VHDSET_VERSION;
  174.  
  175. typedef
  176. enum _MODIFY_VHDSET_FLAG
  177. {
  178. MODIFY_VHDSET_FLAG_NONE = 0
  179. } MODIFY_VHDSET_FLAG;
  180.  
  181. typedef enum _MODIFY_VHDSET_FLAG *PMODIFY_VHDSET_FLAG;
  182.  
  183. typedef struct _MODIFY_VHDSET_PARAMETERS
  184. {
  185. MODIFY_VHDSET_VERSION Version;
  186. union
  187. {
  188. struct
  189. {
  190. GUID SnapshotId;
  191. PCWSTR SnapshotFilePath;
  192. } SnapshotPath;
  193. GUID SnapshotId;
  194. PCWSTR DefaultFilePath;
  195. } ;
  196. } MODIFY_VHDSET_PARAMETERS;
  197.  
  198. typedef struct _MODIFY_VHDSET_PARAMETERS *PMODIFY_VHDSET_PARAMETERS;
  199.  
  200. DWORD __stdcall ModifyVhdSet(
  201. HANDLE VirtualDiskHandle,
  202. const PMODIFY_VHDSET_PARAMETERS Parameters,
  203. MODIFY_VHDSET_FLAG Flags);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement