{"id":52,"date":"2012-05-23T19:47:28","date_gmt":"2012-05-23T11:47:28","guid":{"rendered":"http:\/\/www.datarelab.com\/blog\/?p=52"},"modified":"2012-05-23T19:47:28","modified_gmt":"2012-05-23T11:47:28","slug":"vhdx%20%e8%99%9a%e6%8b%9f%e7%a3%81%e7%9b%98%e6%a0%bc%e5%bc%8f%e7%bb%93%e6%9e%84","status":"publish","type":"post","link":"https:\/\/www.datarelab.com\/blog\/Technical_literature\/52.html","title":{"rendered":"VHDX \u865a\u62df\u78c1\u76d8\u683c\u5f0f\u7ed3\u6784"},"content":{"rendered":"<p><span closure_uid_q16z4z=\"173\">Windows 8\u4e2d\u652f\u6301\u7684VHDX\u865a\u62df\u78c1\u76d8\u683c\u5f0f\uff0c\u4ee5\u4e0b\u662f\u865a\u62df\u78c1\u76d8\u7ed3\u6784\u4ee3\u7801\u3002<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span closure_uid_q16z4z=\"173\"><\/p>\n<pre class=\"brush:cpp; toolbar: true; auto-links: true;\">\/\/Structure 1: File Type Identifier\r\nstruct VHDX_FILE_IDENTIFIER {\r\n\tUINT64 \tSignature;\r\n\tUINT16 \tCreator[256];\r\n};\r\n\r\n\/\/Structure 2: Header\r\nstruct VHDX_HEADER {\r\n\tUINT32 \tSignature;\r\n\tUINT32 \tChecksum;\r\n\tUINT64 \tSequenceNumber;\r\n\tGUID \t\tFileWriteGuid;\r\n\tGUID \t\tDataWriteGuid;\r\n\tGUID \t\tLogGuid;\r\n\tUINT16 \tLogVersion;\r\n\tUINT16 \tVersion;\r\n\tUINT32 \tLogLength;\r\n\tUINT64 \tLogOffset;\r\n\tUINT8[502] \tReserved;\r\n};\r\n\r\n\/\/Structure 3: Region Table Header\r\nstruct VHDX_REGION_TABLE_HEADER {\r\n\tUINT32 \tSignature;\r\n\tUINT32 \tChecksum;\r\n\tUINT32 \tEntryCount;\r\n\tUINT32 \tReserved;\r\n};\r\n\r\n\/\/Structure 4: Region Table Entry\r\nstruct VHDX_REGION_TABLE_ENTRY {\r\n\tGUID \t\tGuid;\r\n\tUINT64 \tFileOffset;\r\n\tUINT32 \tLength;\r\n\tUINT32 \tRequired:1;\r\n\tUINT32 \tReserved:31;\r\n};\r\n\r\n\/\/Structure 5: Log Entry Header\r\nstruct VHDX_LOG_ENTRY_HEADER {\r\n\tUINT32 \tSignature;\r\n\tUINT32 \tChecksum;\r\n\tUINT32 \tEntryLength;\r\n\tUINT32 \tTail;\r\n\tUINT64 \tSequenceNumber;\r\n\tUINT32 \tDescriptorCount;\r\n\tUINT32 \tReserved;\r\n\tGUID \t\tLogGuid;\r\n\tUINT64 \tFlushedFileOffset;\r\n\tUINT64 \tLastFileOffset;\r\n};\r\n\r\n\/\/Structure 6: Log Zero Descriptor\r\nstruct VHDX_LOG_ZERO_DESCRIPTOR {\r\n\tUINT32 \tZeroSignature;\r\n\tUINT32 \tReserved;\r\n\tUINT64 \tZeroLength;\r\n\tUINT64 \tFileOffset;\r\n\tUINT64 \tSequenceNumber;\r\n};\r\n\r\n\/\/Structure 7: Log Data Descriptor\r\nstruct VHDX_LOG_DATA_DESCRIPTOR {\r\n\tUINT32 \tDataSignature;\r\n\tUINT32 \tTrailingBytes;\r\n\tUINT64 \tLeadingBytes;\r\n\tUINT64 \tFileOffset;\r\n\tUINT64 \tSequenceNumber;\r\n};\r\n\r\n\/\/Structure 8: Log Data Sector\r\nstruct VHDX_LOG_DATA_SECTOR {\r\n\tUINT32 \tDataSignature;\r\n\tUINT32 \tSequenceHigh;\r\n\tUINT8 \tData[4084];\r\n\tUINT32 \tSequenceLow;\r\n};\r\n\r\n\/\/Structure 9: BAT Entry\r\nstruct VHDX_BAT_ENTRY {\r\n\tUINT64 \tState:3;\r\n\tUINT64 \tReserved:17;\r\n\tUINT64 \tFileOffsetMB:44;\r\n};\r\n\r\n\/\/Structure 10: Metadata Table Header\r\nstruct VHDX_METADATA_TABLE_HEADER {\r\n\tUINT64 \tSignature;\r\n\tUINT16 \tReserved;\r\n\tUINT16 \tEntryCount;\r\n\tUINT32 \tReserved2[5];\r\n};\r\n\r\n\/\/Structure 11: Metadata Table Entry\r\nstruct VHDX_METADATA_TABLE_ENTRY {\r\n\tGUID\t \tItemId;\r\n\tUINT32 \tOffset;\r\n\tUINT32 \tLength;\r\n\tUINT32 \tIsUser:1;\r\n\tUINT32 \tIsVirtualDisk:1;\r\n\tUINT32 \tIsRequired:1;\r\n\tUINT32 \tReserved:29;\r\n\tUINT32 \tReserved2;\r\n};\r\n\r\n\/\/Structure 12: File Parameters Metadata Item\r\nstruct VHDX_FILE_PARAMETERS {\r\n\tUINT32 \tBlockSize;\r\n\tUINT32 \tLeaveBlocksAllocated:1;\r\n\tUINT32 \tHasParent:1;\r\n\tUINT32 \tReserved:30;\r\n};\r\n\r\n\/\/Structure 13: Virtual Disk Size Metadata Item\r\nstruct VHDX_VIRTUAL_DISK_SIZE {\r\n\tUINT64 \tVirtualDiskSize;\r\n};\r\n\r\n\/\/Structure 14: Page 83 Data Metadata Item\r\nstruct VHDX_PAGE83_DATA {\r\n\tGUID \t\tPage83Data;\r\n};\r\n\r\n\/\/Structure 15: Logical Sector Size Metadata Item\r\nstruct VHDX_VIRTUAL_DISK_LOGICAL_SECTOR_SIZE {\r\n\tUINT32 \tLogicalSectorSize;\r\n};\r\n\r\n\/\/Structure 16: Logical Sector Size Metadata Item\r\nstruct VHDX_VIRTUAL_DISK_PHYSICAL_SECTOR_SIZE {\r\n\tUINT32 \tPhysicalSectorSize;\r\n};\r\n\r\n\/\/Structure 17: Parent Locator Header\r\nstruct VHDX_PARENT_LOCATOR_HEADER {\r\n\tGUID \t\tLocatorType;\r\n\tUINT16 \tReserved;\r\n\tUINT16 \tKeyValueCount;\r\n};\r\n\r\n\/\/Structure 18: Parent Locator Entry\r\nstruct VHDX_PARENT_LOCATOR_ENTRY {\r\n\tUINT32 \tKeyOffset;\r\n\tUINT32 \tValueOffset;\r\n\tUINT16 \tKeyLength;\r\n\tUINT16 \tValueLength;\r\n};<\/pre>\n<p><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Windows 8\u4e2d\u652f\u6301\u7684VHDX\u865a\u62df\u78c1\u76d8\u683c\u5f0f\uff0c\u4ee5\u4e0b\u662f\u865a\u62df\u78c1\u76d8\u7ed3\u6784\u4ee3\u7801\u3002 &nbsp; \/\/Structure [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[101,102],"class_list":["post-52","post","type-post","status-publish","format-standard","hentry","category-Technical_literature","tag-vhdx","tag-102"],"views":1853,"_links":{"self":[{"href":"https:\/\/www.datarelab.com\/blog\/wp-json\/wp\/v2\/posts\/52","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.datarelab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.datarelab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.datarelab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.datarelab.com\/blog\/wp-json\/wp\/v2\/comments?post=52"}],"version-history":[{"count":0,"href":"https:\/\/www.datarelab.com\/blog\/wp-json\/wp\/v2\/posts\/52\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.datarelab.com\/blog\/wp-json\/wp\/v2\/media?parent=52"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.datarelab.com\/blog\/wp-json\/wp\/v2\/categories?post=52"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.datarelab.com\/blog\/wp-json\/wp\/v2\/tags?post=52"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}