/// real time clock device as exposed through the EFI interfaces.\r
///\r
typedef struct {\r
+ ///\r
+ /// Provides the reporting resolution of the real-time clock device in\r
+ /// counts per second. For a normal PC-AT CMOS RTC device, this\r
+ /// value would be 1 Hz, or 1, to indicate that the device only reports\r
+ /// the time to the resolution of 1 second.\r
+ ///\r
UINT32 Resolution;\r
+ ///\r
+ /// Provides the timekeeping accuracy of the real-time clock in an\r
+ /// error rate of 1E-6 parts per million. For a clock with an accuracy\r
+ /// of 50 parts per million, the value in this field would be\r
+ /// 50,000,000.\r
+ ///\r
UINT32 Accuracy;\r
+ ///\r
+ /// A TRUE indicates that a time set operation clears the device¡¯s\r
+ /// time below the Resolution reporting level. A FALSE\r
+ /// indicates that the state below the Resolution level of the\r
+ /// device is not cleared when the time is set. Normal PC-AT CMOS\r
+ /// RTC devices set this value to FALSE.\r
+ ///\r
BOOLEAN SetsToZero;\r
} EFI_TIME_CAPABILITIES;\r
\r
/// EFI Capsule Block Descriptor\r
///\r
typedef struct {\r
+ ///\r
+ /// Length in bytes of the data pointed to by DataBlock/ContinuationPointer.\r
+ ///\r
UINT64 Length;\r
union {\r
+ ///\r
+ /// Physical address of the data block. This member of the union is\r
+ /// used if Length is not equal to zero.\r
+ ///\r
EFI_PHYSICAL_ADDRESS DataBlock;\r
+ ///\r
+ /// Physical address of another block of\r
+ /// EFI_CAPSULE_BLOCK_DESCRIPTOR structures. This\r
+ /// member of the union is used if Length is equal to zero. If\r
+ /// ContinuationPointer is zero this entry represents the end of the list.\r
+ ///\r
EFI_PHYSICAL_ADDRESS ContinuationPointer;\r
} Union;\r
} EFI_CAPSULE_BLOCK_DESCRIPTOR;\r
/// EFI Capsule Header\r
///\r
typedef struct {\r
+ ///\r
+ /// A GUID that defines the contents of a capsule.\r
+ ///\r
EFI_GUID CapsuleGuid;\r
+ ///\r
+ /// The size of the capsule header. This may be larger than the size of\r
+ /// the EFI_CAPSULE_HEADER since CapsuleGuid may imply\r
+ /// extended header entries\r
+ ///\r
UINT32 HeaderSize;\r
+ ///\r
+ /// Bit-mapped list describing the capsule attributes. The Flag values\r
+ /// of 0x0000 ¨C 0xFFFF are defined by CapsuleGuid. Flag values\r
+ /// of 0x10000 ¨C 0xFFFF0000 are defined by this specification\r
+ ///\r
UINT32 Flags;\r
+ ///\r
+ /// Size in bytes of the capsule.\r
+ ///\r
UINT32 CapsuleImageSize;\r
} EFI_CAPSULE_HEADER;\r
\r
-//\r
-// The EFI System Table entry must point to an array of capsules\r
-// that contain the same CapsuleGuid value. The array must be\r
-// prefixed by a UINT32 that represents the size of the array of capsules.\r
-//\r
+///\r
+/// The EFI System Table entry must point to an array of capsules\r
+/// that contain the same CapsuleGuid value. The array must be\r
+/// prefixed by a UINT32 that represents the size of the array of capsules.\r
+///\r
typedef struct {\r
+ ///\r
+ /// the size of the array of capsules.\r
+ ///\r
UINT32 CapsuleArrayNumber;\r
+ ///\r
+ /// Point to an array of capsules that contain the same CapsuleGuid value.\r
+ ///\r
VOID* CapsulePtr[1];\r
} EFI_CAPSULE_TABLE;\r
\r
///\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 SysReqPessed : 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 Key Option\r
///\r
typedef struct {\r
- EFI_BOOT_KEY_DATA KeyOptions;\r
+ ///\r
+ /// Specifies options about how the key will be processed.\r
+ ///\r
+ EFI_BOOT_KEY_DATA KeyData;\r
+ ///\r
+ /// The CRC-32 which should match the CRC-32 of the entire EFI_LOAD_OPTION to\r
+ /// which BootOption refers. If the CRC-32s do not match this value, then this key\r
+ /// option is ignored.\r
+ ///\r
UINT32 BootOptionCrc;\r
+ ///\r
+ /// The Boot#### option which will be invoked if this key is pressed and the boot option\r
+ /// is active (LOAD_OPTION_ACTIVE is set).\r
+ ///\r
UINT16 BootOption;\r
-//EFI_INPUT_KEY Keys[];\r
+ ///\r
+ /// The key codes to compare against those returned by the\r
+ /// EFI_SIMPLE_TEXT_INPUT and EFI_SIMPLE_TEXT_INPUT_EX protocols.\r
+ /// The number of key codes (0-3) is specified by the EFI_KEY_CODE_COUNT field in KeyOptions.\r
+ ///\r
+ //EFI_INPUT_KEY Keys[];\r
} EFI_KEY_OPTION;\r
\r
#define EFI_KEY_OPTION_SHIFT 0x00000001\r