312 lines
7.4 KiB
C
312 lines
7.4 KiB
C
#ifndef EFI_RUNTIME_SERVICES_H
|
|
#define EFI_RUNTIME_SERVICES_H
|
|
|
|
#include "efi_types.h"
|
|
|
|
#define EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552
|
|
#define EFI_RUNTIME_SERVICES_REVISION EFI_SPECIFICATION_VERSION
|
|
|
|
#define EFI_VARIABLE_NON_VOLATILE 0x00000001
|
|
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
|
|
#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
|
|
#define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008
|
|
// NOTE: EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS is deprecated
|
|
// and should be considered reserved.
|
|
#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010
|
|
#define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x00000020
|
|
#define EFI_VARIABLE_APPEND_WRITE 0x00000040
|
|
#define EFI_VARIABLE_ENHANCED_AUTHENTICATED_ACCESS 0x00000080
|
|
|
|
#define EFI_VARIABLE_AUTHENTICATION_3_CERT_ID_SHA256 1
|
|
#define EFI_VARIABLE_AUTHENTICATION_3_TIMESTAMP_TYPE 1
|
|
#define EFI_VARIABLE_AUTHENTICATION_3_NONCE_TYPE 2
|
|
|
|
#define EFI_HARDWARE_ERROR_VARIABLE {0x414e6Bdd,0xe47b,0x47cc, {0xb2,0x44,0xbb,0x61,0x02,0x0c,0xf5,0x16}}
|
|
|
|
#define EFI_TIME_ADJUST_DAYLIGHT 0x01
|
|
#define EFI_TIME_IN_DAYLIGHT 0x02
|
|
#define EFI_UNSPECIFIED_TIMEZONE 0x07FF
|
|
|
|
#define EFI_OPTIONAL_PTR 0x00000001
|
|
|
|
#define CAPSULE_FLAGS_PERSIST_ACROSS_RESET 0x00010000
|
|
#define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000
|
|
#define CAPSULE_FLAGS_INITIATE_RESET 0x00040000
|
|
|
|
#define EFI_MEMORY_RANGE_CAPSULE_GUID {0xde9f0ec,0x88b6,0x428f, {0x97,0x7a,0x25,0x8f,0x1d,0xe,0x5e,0x72}}
|
|
|
|
#define EFI_OS_INDICATIONS_BOOT_TO_FW_UI 0x0000000000000001
|
|
#define EFI_OS_INDICATIONS_TIMESTAMP_REVOCATION 0x0000000000000002
|
|
#define EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED 0x0000000000000004
|
|
#define EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED 0x0000000000000008
|
|
#define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED 0x0000000000000010
|
|
#define EFI_OS_INDICATIONS_START_OS_RECOVERY 0x0000000000000020
|
|
#define EFI_OS_INDICATIONS_START_PLATFORM_RECOVERY 0x0000000000000040
|
|
#define EFI_OS_INDICATIONS_JSON_CONFIG_DATA_REFRESH 0x0000000000000080
|
|
|
|
#define EFI_CAPSULE_REPORT_GUID {0x39b68c46,0xf7fb,0x441b, {0xb6,0xec,0x16,0xb0,0xf6,0x98,0x21,0xf3}}
|
|
|
|
typedef struct _EFI_RUNTIME_SERVICES EFI_RUNTIME_SERVICES;
|
|
|
|
typedef enum {
|
|
EfiResetCold,
|
|
EfiResetWarm,
|
|
EfiResetShutdown,
|
|
EfiResetPlatformSpecific
|
|
} EFI_RESET_TYPE;
|
|
|
|
typedef struct {
|
|
EFI_UINT16 Year;
|
|
EFI_UINT8 Month;
|
|
EFI_UINT8 Day;
|
|
EFI_UINT8 Hour;
|
|
EFI_UINT8 Minute;
|
|
EFI_UINT8 Second;
|
|
EFI_UINT8 Pad1;
|
|
EFI_UINT32 Nanosecond;
|
|
EFI_INT16 TimeZone;
|
|
EFI_UINT8 Daylight;
|
|
EFI_UINT8 Pad2;
|
|
} EFI_TIME;
|
|
|
|
typedef struct {
|
|
EFI_UINT32 Resolution;
|
|
EFI_UINT32 Accuracy;
|
|
EFI_BOOLEAN SetsToZero;
|
|
} EFI_TIME_CAPABILITIES;
|
|
|
|
// NOTE: EFI_VARIABLE_AUTHENTICATION is deprecated
|
|
typedef struct {
|
|
EFI_UINT64 MonotonicCount;
|
|
//WIN_CERTIFICATE_UEFI_GUID AuthInfo;
|
|
} EFI_VARIABLE_AUTHENTICATION;
|
|
|
|
typedef struct {
|
|
EFI_TIME TimeStamp;
|
|
//WIN_CERTIFICATE_UEFI_GUID AuthInfo;
|
|
} EFI_VARIABLE_AUTHENTICATION_2;
|
|
|
|
typedef struct {
|
|
EFI_UINT8 Version;
|
|
EFI_UINT8 Type;
|
|
EFI_UINT32 MetadataSize;
|
|
EFI_UINT32 Flags;
|
|
} EFI_VARIABLE_AUTHENTICATION_3;
|
|
|
|
typedef struct {
|
|
EFI_UINT8 Type;
|
|
EFI_UINT32 IdSize;
|
|
//EFI_UINT8 Id[IdSize];
|
|
} EFI_VARIABLE_AUTHENTICATION_3_CERT_ID;
|
|
|
|
typedef struct {
|
|
EFI_UINT32 NonceSize;
|
|
//EFI_UINT8 Nonce[NonceSize];
|
|
} EFI_VARIABLE_AUTHENTICATION_3_NONCE;
|
|
|
|
typedef struct {
|
|
EFI_GUID CapsuleGuid;
|
|
EFI_UINT32 HeaderSize;
|
|
EFI_UINT32 Flags;
|
|
EFI_UINT32 CapsuleImageSize;
|
|
} EFI_CAPSULE_HEADER;
|
|
|
|
typedef struct {
|
|
EFI_UINT32 CapsuleArrayNumber;
|
|
VOID *CapsulePtr[1];
|
|
} EFI_CAPSULE_TABLE;
|
|
|
|
typedef struct {
|
|
EFI_UINT64 Length;
|
|
union {
|
|
EFI_PHYSICAL_ADDRESS DataBlock;
|
|
EFI_PHYSICAL_ADDRESS ContinuationPointer;
|
|
} Union;
|
|
} EFI_CAPSULE_BLOCK_DESCRIPTOR;
|
|
|
|
typedef struct {
|
|
EFI_PHYSICAL_ADDRESS Address;
|
|
EFI_UINT64 Length;
|
|
} EFI_MEMORY_RANGE;
|
|
|
|
typedef struct {
|
|
EFI_CAPSULE_HEADER Header;
|
|
EFI_UINT32 OsRequestedMemoryType;
|
|
EFI_UINT64 NumberOfMemoryRanges;
|
|
EFI_MEMORY_RANGE MemoryRanges[];
|
|
} EFI_MEMORY_RANGE_CAPSULE;
|
|
|
|
typedef struct {
|
|
EFI_UINT64 FirmwareMemoryRequirement;
|
|
EFI_UINT64 NumberOfMemoryRanges;
|
|
} EFI_MEMORY_RANGE_CAPSULE_RESULT;
|
|
|
|
typedef struct {
|
|
EFI_UINT32 VariableTotalSize;
|
|
EFI_UINT32 Reserved;
|
|
EFI_GUID CapsuleGuid;
|
|
EFI_TIME CapsuleProcessed;
|
|
EFI_STATUS CapsuleStatus;
|
|
} EFI_CAPSULE_RESULT_VARIABLE_HEADER;
|
|
|
|
typedef struct {
|
|
EFI_UINT16 Version;
|
|
EFI_UINT8 PayloadIndex;
|
|
EFI_UINT8 UpdateImageIndex;
|
|
EFI_GUID UpdateImageTypeId;
|
|
//CHAR16 CapsuleFileName[];
|
|
//CHAR16 CapsuleTarget[];
|
|
} EFI_CAPSULE_RESULT_VARIABLE_FMP;
|
|
|
|
typedef struct {
|
|
EFI_UINT32 Version;
|
|
EFI_UINT32 CapsuleId;
|
|
EFI_UINT32 RespLength;
|
|
EFI_UINT8 Resp[];
|
|
} EFI_CAPSULE_RESULT_VARIABLE_JSON;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_GET_TIME)(
|
|
OUT EFI_TIME *Time,
|
|
OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SET_TIME)(
|
|
IN EFI_TIME *Time
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_GET_WAKEUP_TIME)(
|
|
OUT EFI_BOOLEAN *Enable,
|
|
OUT EFI_BOOLEAN *Pending,
|
|
OUT EFI_TIME *Time
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SET_WAKEUP_TIME)(
|
|
IN EFI_BOOLEAN Enable,
|
|
IN EFI_TIME *Time
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP)(
|
|
IN EFI_UINTN MemoryMapSize,
|
|
IN EFI_UINTN DescriptorSize,
|
|
IN EFI_UINT32 DescriptorVersion,
|
|
IN EFI_MEMORY_DESCRIPTOR *VirtualMap
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_CONVERT_POINTER)(
|
|
IN EFI_UINTN DebugDisposition,
|
|
IN VOID **Address
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_GET_VARIABLE)(
|
|
IN CHAR16 *VariableName,
|
|
IN EFI_GUID *VendorGuid,
|
|
OUT EFI_UINT32 *Attributes OPTIONAL,
|
|
IN OUT EFI_UINTN *DataSize,
|
|
OUT VOID *Data OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_GET_NEXT_VARIABLE_NAME)(
|
|
IN OUT EFI_UINTN *VariableNameSize,
|
|
IN OUT CHAR16 *VariableName,
|
|
IN OUT EFI_GUID *VendorGuid
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SET_VARIABLE)(
|
|
IN CHAR16 *VariableName,
|
|
IN EFI_GUID *VendorGuid,
|
|
IN EFI_UINT32 Attributes,
|
|
IN EFI_UINTN DataSize,
|
|
IN VOID *Data
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_GET_NEXT_HIGH_MONOTONIC_COUNT)(
|
|
OUT EFI_UINT32 *HighCount
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_RESET_SYSTEM)(
|
|
IN EFI_RESET_TYPE ResetType,
|
|
IN EFI_STATUS ResetStatus,
|
|
IN EFI_UINTN DataSize,
|
|
IN VOID *ResetData OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_UPDATE_CAPSULE)(
|
|
IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
|
|
IN EFI_UINTN CapsuleCount,
|
|
IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_QUERY_CAPSULE_CAPABILITIES)(
|
|
IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
|
|
IN EFI_UINTN CapsuleCount,
|
|
OUT EFI_UINT64 *MaximumCapsuleSize,
|
|
OUT EFI_RESET_TYPE *ResetType
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_QUERY_VARIABLE_INFO)(
|
|
IN EFI_UINT32 Attributes,
|
|
OUT EFI_UINT64 *MaximumVariableStorageSize,
|
|
OUT EFI_UINT64 *RemainingVariableStorageSize,
|
|
OUT EFI_UINT64 *MaximumVariableSize
|
|
);
|
|
|
|
// EFI Runtime Services
|
|
typedef struct _EFI_RUNTIME_SERVICES {
|
|
EFI_TABLE_HEADER Hdr;
|
|
|
|
// Time Services
|
|
EFI_GET_TIME GetTime;
|
|
EFI_SET_TIME SetTime;
|
|
EFI_GET_WAKEUP_TIME GetWakeupTime;
|
|
EFI_SET_WAKEUP_TIME SetWakeupTime;
|
|
|
|
// Virtual Memory Services
|
|
EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap;
|
|
EFI_CONVERT_POINTER ConvertPointer;
|
|
|
|
// Variable Services
|
|
EFI_GET_VARIABLE GetVariable;
|
|
EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName;
|
|
EFI_SET_VARIABLE SetVariable;
|
|
|
|
// Miscellaneous Services
|
|
EFI_GET_NEXT_HIGH_MONOTONIC_COUNT GetNextHighMonotonicCount;
|
|
EFI_RESET_SYSTEM ResetSystem;
|
|
|
|
// UEFI 2.0 Capsule Services
|
|
EFI_UPDATE_CAPSULE UpdateCapsule;
|
|
EFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities;
|
|
|
|
// Miscellaneous UEFI 2.0 Service
|
|
EFI_QUERY_VARIABLE_INFO QueryVariableInfo;
|
|
} EFI_RUNTIME_SERVICES;
|
|
|
|
#endif /* EFI_RUNTIME_SERVICES_H */
|