1 #ifndef _EFI_PART_H 2 #define _EFI_PART_H 3 4 /*++ 5 6 Copyright (c) 1998 Intel Corporation 7 8 Module Name: 9 10 efipart.h 11 12 Abstract: 13 Info about disk partitions and Master Boot Records 14 15 16 17 18 Revision History 19 20 --*/ 21 22 // 23 // 24 // 25 26 #define EFI_PARTITION 0xef 27 #define MBR_SIZE 512 28 29 #pragma pack(1) 30 31 typedef struct { 32 UINT8 BootIndicator; 33 UINT8 StartHead; 34 UINT8 StartSector; 35 UINT8 StartTrack; 36 UINT8 OSIndicator; 37 UINT8 EndHead; 38 UINT8 EndSector; 39 UINT8 EndTrack; 40 UINT8 StartingLBA[4]; 41 UINT8 SizeInLBA[4]; 42 } MBR_PARTITION_RECORD; 43 44 #define EXTRACT_UINT32(D) (UINT32)(D[0] | (D[1] << 8) | (D[2] << 16) | (D[3] << 24)) 45 46 #define MBR_SIGNATURE 0xaa55 47 #define MIN_MBR_DEVICE_SIZE 0x80000 48 #define MBR_ERRATA_PAD 0x40000 // 128 MB 49 50 #define MAX_MBR_PARTITIONS 4 51 typedef struct { 52 UINT8 BootStrapCode[440]; 53 UINT8 UniqueMbrSignature[4]; 54 UINT8 Unknown[2]; 55 MBR_PARTITION_RECORD Partition[MAX_MBR_PARTITIONS]; 56 UINT16 Signature; 57 } MASTER_BOOT_RECORD; 58 #pragma pack() 59 60 61 #endif 62