diff --git a/efi.h b/efi.h index 5962d18..d7df583 100644 --- a/efi.h +++ b/efi.h @@ -27,28 +27,6 @@ typedef struct { #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 #define EFI_VARIABLE_NON_VOLATILE 0x00000001 #define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002 @@ -77,6 +55,18 @@ typedef struct { #include "efi_rs.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) #endif /* EFI_H */ diff --git a/efi_rs.h b/efi_rs.h index 8485e30..b76226d 100644 --- a/efi_rs.h +++ b/efi_rs.h @@ -6,12 +6,55 @@ #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 { UINT16 Year; UINT8 Month; @@ -32,6 +75,35 @@ typedef struct { BOOLEAN SetsToZero; } 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 { EFI_GUID CapsuleGuid; UINT32 HeaderSize; diff --git a/efi_types.h b/efi_types.h index 8833e0a..c05676f 100644 --- a/efi_types.h +++ b/efi_types.h @@ -118,12 +118,4 @@ typedef UINTN EFI_TPL; #define EFI_TEXT_ATTR(Foreground,Background) \ ((Foreground) | ((Background) << 4)) -// EFI Reset Type -typedef enum { - EfiResetCold, - EfiResetWarm, - EfiResetShutdown, - EfiResetPlatformSpecific -} EFI_RESET_TYPE; - #endif /* EFI_TYPES_H */ diff --git a/protocols/boot_manager_policy.h b/protocols/boot_manager_policy.h index 74fcd14..89fbd24 100644 --- a/protocols/boot_manager_policy.h +++ b/protocols/boot_manager_policy.h @@ -1,6 +1,8 @@ #ifndef 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_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}} @@ -8,6 +10,8 @@ #define EFI_BOOT_MANAGER_POLICY_PROTOCOL_REVISION 0x00010000 +typedef struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL EFI_BOOT_MANAGER_POLICY_PROTOCOL; + typedef EFI_STATUS (EFIAPI *EFI_BOOT_MANAGER_POLICY_CONNECT_DEVICE_PATH)( diff --git a/protocols/driver_binding.h b/protocols/driver_binding.h index 95b5c20..a38258f 100644 --- a/protocols/driver_binding.h +++ b/protocols/driver_binding.h @@ -3,6 +3,8 @@ #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 EFI_STATUS (EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED)( diff --git a/protocols/file.h b/protocols/file.h index 85a4cc1..fd8e017 100644 --- a/protocols/file.h +++ b/protocols/file.h @@ -17,6 +17,8 @@ #define EFI_FILE_ARCHIVE 0x0000000000000020 #define EFI_FILE_VALID_ATTR 0x0000000000000037 +typedef struct _EFI_FILE_PROTOCOL EFI_FILE_PROTOCOL; + typedef struct { EFI_EVENT Event; EFI_STATUS Status; diff --git a/protocols/simple_file_system.h b/protocols/simple_file_system.h index 1ad0b2d..b28421d 100644 --- a/protocols/simple_file_system.h +++ b/protocols/simple_file_system.h @@ -3,6 +3,8 @@ #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION 0x00010000 +typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL EFI_SIMPLE_FILE_SYSTEM_PROTOCOL; + typedef EFI_STATUS (EFIAPI *EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_OPEN_VOLUME)(