1 /** @file 2 ElTorito Partitions Format Definition. 3 This file includes some defintions from 4 1. "El Torito" Bootable CD-ROM Format Specification, Version 1.0. 5 2. Volume and File Structure of CDROM for Information Interchange, 6 Standard ECMA-119. (IS0 9660) 7 8 Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR> 9 This program and the accompanying materials 10 are licensed and made available under the terms and conditions of the BSD License 11 which accompanies this distribution. The full text of the license may be found at 12 http://opensource.org/licenses/bsd-license.php 13 14 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 15 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 16 17 **/ 18 19 #ifndef _ELTORITO_H_ 20 #define _ELTORITO_H_ 21 22 // 23 // CDROM_VOLUME_DESCRIPTOR.Types, defined in ISO 9660 24 // 25 #define CDVOL_TYPE_STANDARD 0x0 26 #define CDVOL_TYPE_CODED 0x1 27 #define CDVOL_TYPE_END 0xFF 28 29 /// 30 /// CDROM_VOLUME_DESCRIPTOR.Id 31 /// 32 #define CDVOL_ID "CD001" 33 34 /// 35 /// CDROM_VOLUME_DESCRIPTOR.SystemId 36 /// 37 #define CDVOL_ELTORITO_ID "EL TORITO SPECIFICATION" 38 39 // 40 // Indicator types 41 // 42 #define ELTORITO_ID_CATALOG 0x01 43 #define ELTORITO_ID_SECTION_BOOTABLE 0x88 44 #define ELTORITO_ID_SECTION_NOT_BOOTABLE 0x00 45 #define ELTORITO_ID_SECTION_HEADER 0x90 46 #define ELTORITO_ID_SECTION_HEADER_FINAL 0x91 47 48 // 49 // ELTORITO_CATALOG.Boot.MediaTypes 50 // 51 #define ELTORITO_NO_EMULATION 0x00 52 #define ELTORITO_12_DISKETTE 0x01 53 #define ELTORITO_14_DISKETTE 0x02 54 #define ELTORITO_28_DISKETTE 0x03 55 #define ELTORITO_HARD_DISK 0x04 56 57 58 #pragma pack(1) 59 60 /// 61 /// CD-ROM Volume Descriptor 62 /// 63 typedef union { 64 struct { 65 UINT8 Type; 66 CHAR8 Id[5]; ///< "CD001" 67 CHAR8 Reserved[82]; 68 } Unknown; 69 70 /// 71 /// Boot Record Volume Descriptor, defined in "El Torito" Specification. 72 /// 73 struct { 74 UINT8 Type; ///< Must be 0 75 CHAR8 Id[5]; ///< "CD001" 76 UINT8 Version; ///< Must be 1 77 CHAR8 SystemId[32]; ///< "EL TORITO SPECIFICATION" 78 CHAR8 Unused[32]; ///< Must be 0 79 UINT8 EltCatalog[4]; ///< Absolute pointer to first sector of Boot Catalog 80 CHAR8 Unused2[13]; ///< Must be 0 81 } BootRecordVolume; 82 83 /// 84 /// Primary Volumn Descriptor, defined in ISO 9660. 85 /// 86 struct { 87 UINT8 Type; 88 CHAR8 Id[5]; ///< "CD001" 89 UINT8 Version; 90 UINT8 Unused; ///< Must be 0 91 CHAR8 SystemId[32]; 92 CHAR8 VolumeId[32]; 93 UINT8 Unused2[8]; ///< Must be 0 94 UINT32 VolSpaceSize[2]; ///< the number of Logical Blocks 95 } PrimaryVolume; 96 97 } CDROM_VOLUME_DESCRIPTOR; 98 99 /// 100 /// Catalog Entry 101 /// 102 typedef union { 103 struct { 104 CHAR8 Reserved[0x20]; 105 } Unknown; 106 107 /// 108 /// Catalog validation entry (Catalog header) 109 /// 110 struct { 111 UINT8 Indicator; ///< Must be 01 112 UINT8 PlatformId; 113 UINT16 Reserved; 114 CHAR8 ManufacId[24]; 115 UINT16 Checksum; 116 UINT16 Id55AA; 117 } Catalog; 118 119 /// 120 /// Initial/Default Entry or Section Entry 121 /// 122 struct { 123 UINT8 Indicator; ///< 88 = Bootable, 00 = Not Bootable 124 UINT8 MediaType : 4; 125 UINT8 Reserved1 : 4; ///< Must be 0 126 UINT16 LoadSegment; 127 UINT8 SystemType; 128 UINT8 Reserved2; ///< Must be 0 129 UINT16 SectorCount; 130 UINT32 Lba; 131 } Boot; 132 133 /// 134 /// Section Header Entry 135 /// 136 struct { 137 UINT8 Indicator; ///< 90 - Header, more header follw, 91 - Final Header 138 UINT8 PlatformId; 139 UINT16 SectionEntries; ///< Number of section entries following this header 140 CHAR8 Id[28]; 141 } Section; 142 143 } ELTORITO_CATALOG; 144 145 #pragma pack() 146 147 #endif 148