1 /* 2 * Copyright 2007, Marcus Overhagen. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef _VMDK_H 6 #define _VMDK_H 7 8 9 #include <stdint.h> 10 11 12 typedef uint64_t SectorType; 13 14 15 struct SparseExtentHeader { 16 uint32_t magicNumber; 17 uint32_t version; 18 uint32_t flags; 19 SectorType capacity; 20 SectorType grainSize; 21 SectorType descriptorOffset; 22 SectorType descriptorSize; 23 uint32_t numGTEsPerGT; 24 SectorType rgdOffset; 25 SectorType gdOffset; 26 SectorType overHead; 27 uint8_t uncleanShutdown; 28 char singleEndLineChar; 29 char nonEndLineChar; 30 char doubleEndLineChar1; 31 char doubleEndLineChar2; 32 uint8_t pad[435]; 33 } __attribute__((__packed__)) ; 34 35 #define VMDK_SPARSE_MAGICNUMBER 0x564d444b /* 'V' 'M' 'D' 'K' */ 36 #define VMDK_SPARSE_VERSION 1 37 38 #endif // _VMDK_H 39