Implemented Runtime Services

This commit is contained in:
Jozef Nagy 2024-03-29 22:56:51 +01:00
parent 937e50d0ee
commit 7c8c1aef7b
No known key found for this signature in database
GPG key ID: 5B49DC29F09685D6
7 changed files with 94 additions and 30 deletions

34
efi.h
View file

@ -27,28 +27,6 @@ typedef struct {
#define TPL_HIGH_LEVEL 31 #define TPL_HIGH_LEVEL 31
// //
// OS Indications
#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
//
// Time
#define EFI_TIME_ADJUST_DAYLIGHT 0x01
#define EFI_TIME_IN_DAYLIGHT 0x02
#define EFI_UNSPECIFIED_TIMEZONE 0x07FF
//
// Optional Pointer
#define EFI_OPTIONAL_PTR 0x00000001
//
// Variable Attributes // Variable Attributes
#define EFI_VARIABLE_NON_VOLATILE 0x00000001 #define EFI_VARIABLE_NON_VOLATILE 0x00000001
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002 #define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
@ -77,6 +55,18 @@ typedef struct {
#include "efi_rs.h" #include "efi_rs.h"
#include "efi_bs.h" #include "efi_bs.h"
// #include "protocols/boot_manager_policy.h"
#include "protocols/bus_specific_driver_override.h"
#include "protocols/device_path.h"
#include "protocols/driver_binding.h"
#include "protocols/file.h"
#include "protocols/loaded_image.h"
#include "protocols/loaded_image_device_path.h"
#include "protocols/platform_driver_override.h"
#include "protocols/simple_file_system.h"
#include "protocols/simple_text_input.h"
#include "protocols/simple_text_output.h"
#define EFI_ERROR(Status) (((INTN)(EFI_STATUS)(Status)) < 0) #define EFI_ERROR(Status) (((INTN)(EFI_STATUS)(Status)) < 0)
#endif /* EFI_H */ #endif /* EFI_H */

View file

@ -6,12 +6,55 @@
#define EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552 #define EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552
#define EFI_RUNTIME_SERVICES_REVISION EFI_SPECIFICATION_VERSION #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_PERSIST_ACROSS_RESET 0x00010000
#define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000 #define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000
#define CAPSULE_FLAGS_INITIATE_RESET 0x00040000 #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 struct _EFI_RUNTIME_SERVICES EFI_RUNTIME_SERVICES;
typedef enum {
EfiResetCold,
EfiResetWarm,
EfiResetShutdown,
EfiResetPlatformSpecific
} EFI_RESET_TYPE;
typedef struct { typedef struct {
UINT16 Year; UINT16 Year;
UINT8 Month; UINT8 Month;
@ -32,6 +75,35 @@ typedef struct {
BOOLEAN SetsToZero; BOOLEAN SetsToZero;
} EFI_TIME_CAPABILITIES; } EFI_TIME_CAPABILITIES;
// NOTE: EFI_VARIABLE_AUTHENTICATION is deprecated
typedef struct {
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 {
UINT8 Version;
UINT8 Type;
UINT32 MetadataSize;
UINT32 Flags;
} EFI_VARIABLE_AUTHENTICATION_3;
typedef struct {
UINT8 Type;
UINT32 IdSize;
//UINT8 Id[IdSize];
} EFI_VARIABLE_AUTHENTICATION_3_CERT_ID;
typedef struct {
UINT32 NonceSize;
//UINT8 Nonce[NonceSize];
} EFI_VARIABLE_AUTHENTICATION_3_NONCE;
typedef struct { typedef struct {
EFI_GUID CapsuleGuid; EFI_GUID CapsuleGuid;
UINT32 HeaderSize; UINT32 HeaderSize;

View file

@ -118,12 +118,4 @@ typedef UINTN EFI_TPL;
#define EFI_TEXT_ATTR(Foreground,Background) \ #define EFI_TEXT_ATTR(Foreground,Background) \
((Foreground) | ((Background) << 4)) ((Foreground) | ((Background) << 4))
// EFI Reset Type
typedef enum {
EfiResetCold,
EfiResetWarm,
EfiResetShutdown,
EfiResetPlatformSpecific
} EFI_RESET_TYPE;
#endif /* EFI_TYPES_H */ #endif /* EFI_TYPES_H */

View file

@ -1,6 +1,8 @@
#ifndef EFI_PROTOCOLS_BOOT_MANAGER_POLICY_H #ifndef EFI_PROTOCOLS_BOOT_MANAGER_POLICY_H
#define EFI_PROTOCOLS_BOOT_MANAGER_POLICY_H #define EFI_PROTOCOLS_BOOT_MANAGER_POLICY_H
#include "device_path.h"
#define EFI_BOOT_MANAGER_POLICY_PROTOCOL_GUID {0xfedf8e0c,0xe147,0x11e3, {0x99,0x03,0xb8,0xe8,0x56,0x2c,0xba,0xfa}} #define EFI_BOOT_MANAGER_POLICY_PROTOCOL_GUID {0xfedf8e0c,0xe147,0x11e3, {0x99,0x03,0xb8,0xe8,0x56,0x2c,0xba,0xfa}}
#define EFI_BOOT_MANAGER_POLICY_CONSOLE_GUID {0xcab0e94c,0xe15f,0x11e3, {0x91,0x8d,0xb8,0xe8,0x56,0x2c,0xba,0xfa}} #define EFI_BOOT_MANAGER_POLICY_CONSOLE_GUID {0xcab0e94c,0xe15f,0x11e3, {0x91,0x8d,0xb8,0xe8,0x56,0x2c,0xba,0xfa}}
#define EFI_BOOT_MANAGER_POLICY_NETWORK_GUID {0xd04159dc,0xe15f,0x11e3, {0xb2,0x61,0xb8,0xe8,0x56,0x2c,0xba,0xfa}} #define EFI_BOOT_MANAGER_POLICY_NETWORK_GUID {0xd04159dc,0xe15f,0x11e3, {0xb2,0x61,0xb8,0xe8,0x56,0x2c,0xba,0xfa}}
@ -8,6 +10,8 @@
#define EFI_BOOT_MANAGER_POLICY_PROTOCOL_REVISION 0x00010000 #define EFI_BOOT_MANAGER_POLICY_PROTOCOL_REVISION 0x00010000
typedef struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL EFI_BOOT_MANAGER_POLICY_PROTOCOL;
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_BOOT_MANAGER_POLICY_CONNECT_DEVICE_PATH)( (EFIAPI *EFI_BOOT_MANAGER_POLICY_CONNECT_DEVICE_PATH)(

View file

@ -3,6 +3,8 @@
#define EFI_DRIVER_BINDING_PROTOCOL_GUID {0x18a031ab,0xb443,0x4d1a, {0xa5,0xc0,0x0c,0x09,0x26,0x1e,0x9f,0x71}} #define EFI_DRIVER_BINDING_PROTOCOL_GUID {0x18a031ab,0xb443,0x4d1a, {0xa5,0xc0,0x0c,0x09,0x26,0x1e,0x9f,0x71}}
typedef struct _EFI_DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING_PROTOCOL;
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED)( (EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED)(

View file

@ -17,6 +17,8 @@
#define EFI_FILE_ARCHIVE 0x0000000000000020 #define EFI_FILE_ARCHIVE 0x0000000000000020
#define EFI_FILE_VALID_ATTR 0x0000000000000037 #define EFI_FILE_VALID_ATTR 0x0000000000000037
typedef struct _EFI_FILE_PROTOCOL EFI_FILE_PROTOCOL;
typedef struct { typedef struct {
EFI_EVENT Event; EFI_EVENT Event;
EFI_STATUS Status; EFI_STATUS Status;

View file

@ -3,6 +3,8 @@
#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION 0x00010000 #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION 0x00010000
typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL EFI_SIMPLE_FILE_SYSTEM_PROTOCOL;
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_OPEN_VOLUME)( (EFIAPI *EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_OPEN_VOLUME)(