]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/IndustryStandard/ElTorito.h
re-defined CDROM_VOLUME_DESCRIPTOR to be a union including Boot Record Volume Descrip...
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / ElTorito.h
index 60b7a215231bb7b363275b63e2d3095c4fc39e5d..b474dc9ba14768b5475b21e7ce66d218181c9b66 100644 (file)
@@ -1,7 +1,11 @@
 /** @file\r
-  ElTorito Partitions Format Definition.\r
+  ElTorito Partitions Format Definition. \r
+  This file includes some defintions from \r
+  1. "El Torito" Bootable CD-ROM Format Specification, Version 1.0.\r
+  2. Volume and File Structure of CDROM for Information Interchange, \r
+     Standard ECMA-119. (IS0 9660)\r
 \r
-Copyright (c) 2006, Intel Corporation                                                         \r
+Copyright (c) 2006 - 2008, Intel Corporation                                                         \r
 All rights reserved. This program and the accompanying materials                          \r
 are licensed and made available under the terms and conditions of the BSD License         \r
 which accompanies this distribution.  The full text of the license may be found at        \r
@@ -15,9 +19,9 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #ifndef _ELTORITO_H_\r
 #define _ELTORITO_H_\r
 \r
-//\r
-// CDROM_VOLUME_DESCRIPTOR.Types\r
-//\r
+///\r
+/// CDROM_VOLUME_DESCRIPTOR.Types, defined in ISO 9660\r
+///\r
 #define CDVOL_TYPE_STANDARD 0x0\r
 #define CDVOL_TYPE_CODED    0x1\r
 #define CDVOL_TYPE_END      0xFF\r
@@ -53,24 +57,43 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #pragma pack(1)\r
 \r
-///\r
+/// \r
 /// El Torito Volume Descriptor\r
 /// Note that the CDROM_VOLUME_DESCRIPTOR does not match the ISO-9660\r
 /// descriptor.  For some reason descriptor used by El Torito is\r
 /// different, but they start the same.   The El Torito descriptor\r
 /// is left shifted 1 byte starting with the SystemId.  (Note this\r
 /// causes the field to get unaligned)\r
-///\r
-typedef struct {\r
-  UINT8   Type;\r
-  CHAR8   Id[5];  // CD001\r
-  UINT8   Version;\r
-  CHAR8   SystemId[26];\r
-  CHAR8   Unused[38];\r
-  UINT8   EltCatalog[4];\r
-  CHAR8   Unused2[5];\r
-  UINT32  VolSpaceSize[2];\r
-} CDROM_VOLUME_DESCRIPTOR;\r
+/// \r
+typedef union { \r
+  struct {\r
+    UINT8   Type;     \r
+    CHAR8   Id[5];           ///< "CD001"    \r
+    CHAR8   Reserved[82];\r
+  } Unknown;\r
+\r
+  struct {\r
+    UINT8   Type;            ///< Must be 0\r
+    CHAR8   Id[5];           ///< "CD001" \r
+    UINT8   Version;         ///< Must be 1 \r
+    CHAR8   SystemId[32];    ///< "EL TORITO SPECIFICATION" \r
+    CHAR8   Unused[32];      ///< Must be 0 \r
+    UINT8   EltCatalog[4];   ///< Absolute pointer to first sector of Boot Catalog\r
+    CHAR8   Unused2[13];     ///< Must be 0\r
+  } BootRecordVolume;\r
+\r
+  struct {\r
+    UINT8   Type; \r
+    CHAR8   Id[5];           ///< "CD001"\r
+    UINT8   Version; \r
+    UINT8   Unused;          ///< Must be 0\r
+    CHAR8   SystemId[32];    \r
+    CHAR8   VolumeId[32];    \r
+    UINT8   Unused2[8];      ///< Must be 0 \r
+    UINT32  VolSpaceSize[2]; ///< the number of Logical Blocks\r
+  } PrimaryVolume;\r
+\r
+} CDROM_VOLUME_DESCRIPTOR; \r
 \r
 ///\r
 /// Catalog Entry\r