#define EFI_2_00_SYSTEM_TABLE_REVISION ((2 << 16) | (00))\r
#define EFI_1_10_SYSTEM_TABLE_REVISION ((1 << 16) | (10))\r
#define EFI_1_02_SYSTEM_TABLE_REVISION ((1 << 16) | (02))\r
-#define EFI_SYSTEM_TABLE_REVISION EFI_2_31_SYSTEM_TABLE_REVISION\r
+#define EFI_SYSTEM_TABLE_REVISION EFI_2_40_SYSTEM_TABLE_REVISION\r
+#define EFI_SPECIFICATION_VERSION EFI_SYSTEM_TABLE_REVISION\r
\r
#define EFI_RUNTIME_SERVICES_SIGNATURE SIGNATURE_64 ('R','U','N','T','S','E','R','V')\r
-#define EFI_RUNTIME_SERVICES_REVISION EFI_2_31_SYSTEM_TABLE_REVISION\r
+#define EFI_RUNTIME_SERVICES_REVISION EFI_SPECIFICATION_VERSION\r
\r
///\r
/// EFI Runtime Services Table.\r
\r
\r
#define EFI_BOOT_SERVICES_SIGNATURE SIGNATURE_64 ('B','O','O','T','S','E','R','V')\r
-#define EFI_BOOT_SERVICES_REVISION EFI_2_31_SYSTEM_TABLE_REVISION\r
+#define EFI_BOOT_SERVICES_REVISION EFI_SPECIFICATION_VERSION\r
\r
///\r
/// EFI Boot Services Table.\r
///\r
/// EFI Boot Key Data\r
///\r
-typedef UINT32 EFI_BOOT_KEY_DATA;\r
-///\r
-/// Indicates the revision of the EFI_KEY_OPTION structure. This revision level should be 0.\r
-///\r
-#define EFI_KEY_OPTION_REVISION_MASK 0x000000FF\r
-///\r
-/// Either the left or right Shift keys must be pressed (1) or must not be pressed (0).\r
-///\r
-#define EFI_KEY_OPTION_SHIFT_PRESSED_MASK BIT8\r
-///\r
-/// Either the left or right Control keys must be pressed (1) or must not be pressed (0).\r
-///\r
-#define EFI_KEY_OPTION_CONTROL_PRESSED_MASK BIT9\r
-///\r
-/// Either the left or right Alt keys must be pressed (1) or must not be pressed (0).\r
-///\r
-#define EFI_KEY_OPTION_ALT_PRESSED_MASK BIT10\r
-///\r
-/// Either the left or right Logo keys must be pressed (1) or must not be pressed (0).\r
-///\r
-#define EFI_KEY_OPTION_LOGO_PRESSED_MASK BIT11\r
-///\r
-/// The Menu key must be pressed (1) or must not be pressed (0).\r
-///\r
-#define EFI_KEY_OPTION_MENU_PRESSED_MASK BIT12\r
-///\r
-/// The SysReq key must be pressed (1) or must not be pressed (0).\r
-///\r
-#define EFI_KEY_OPTION_SYS_REQ_PRESSED_MASK BIT13\r
-///\r
-/// Specifies the actual number of entries in EFI_KEY_OPTION.Keys, from 0-3. If\r
-/// zero, then only the shift state is considered. If more than one, then the boot option will\r
-/// only be launched if all of the specified keys are pressed with the same shift state.\r
-///\r
-#define EFI_KEY_OPTION_INPUT_KEY_COUNT_MASK (BIT30 | BIT31)\r
+typedef union {\r
+ struct {\r
+ ///\r
+ /// Indicates the revision of the EFI_KEY_OPTION structure. This revision level should be 0.\r
+ ///\r
+ UINT32 Revision : 8;\r
+ ///\r
+ /// Either the left or right Shift keys must be pressed (1) or must not be pressed (0).\r
+ ///\r
+ UINT32 ShiftPressed : 1;\r
+ ///\r
+ /// Either the left or right Control keys must be pressed (1) or must not be pressed (0).\r
+ ///\r
+ UINT32 ControlPressed : 1;\r
+ ///\r
+ /// Either the left or right Alt keys must be pressed (1) or must not be pressed (0).\r
+ ///\r
+ UINT32 AltPressed : 1;\r
+ ///\r
+ /// Either the left or right Logo keys must be pressed (1) or must not be pressed (0).\r
+ ///\r
+ UINT32 LogoPressed : 1;\r
+ ///\r
+ /// The Menu key must be pressed (1) or must not be pressed (0).\r
+ ///\r
+ UINT32 MenuPressed : 1;\r
+ ///\r
+ /// The SysReq key must be pressed (1) or must not be pressed (0).\r
+ ///\r
+ UINT32 SysReqPressed : 1;\r
+ UINT32 Reserved : 16;\r
+ ///\r
+ /// Specifies the actual number of entries in EFI_KEY_OPTION.Keys, from 0-3. If\r
+ /// zero, then only the shift state is considered. If more than one, then the boot option will\r
+ /// only be launched if all of the specified keys are pressed with the same shift state.\r
+ ///\r
+ UINT32 InputKeyCount : 2;\r
+ } Options;\r
+ UINT32 PackedValue;\r
+} EFI_BOOT_KEY_DATA;\r
\r
///\r
/// EFI Key Option.\r