Rewrite and reorganize the entire codebase
This commit is contained in:
parent
01c1e3aa2e
commit
937e50d0ee
19 changed files with 1422 additions and 1339 deletions
546
efi_bs.h
Normal file
546
efi_bs.h
Normal file
|
@ -0,0 +1,546 @@
|
|||
#ifndef EFI_BOOT_SERVICES_H
|
||||
#define EFI_BOOT_SERVICES_H
|
||||
|
||||
#include "efi_types.h"
|
||||
|
||||
#include "protocols/device_path.h"
|
||||
|
||||
#define EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42
|
||||
#define EFI_BOOT_SERVICES_REVISION EFI_SPECIFICATION_VERSION
|
||||
|
||||
#define EVT_TIMER 0x80000000
|
||||
#define EVT_RUNTIME 0x40000000
|
||||
|
||||
#define EVT_NOTIFY_WAIT 0x00000100
|
||||
#define EVT_NOTIFY_SIGNAL 0x00000200
|
||||
|
||||
#define EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201
|
||||
#define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202
|
||||
|
||||
#define EFI_EVENT_GROUP_EXIT_BOOT_SERVICES {0x27abf055,0xb1b8,0x4c26, {0x80,0x48,0x74,0x8f,0x37,0xba,0xa2,0xdf}}
|
||||
#define EFI_EVENT_GROUP_BEFORE_EXIT_BOOT_SERVICES {0x8be0e274,0x3970,0x4b44, {0x80,0xc5,0x1a,0xb9,0x50,0x2f,0x3b,0xfc}}
|
||||
#define EFI_EVENT_GROUP_VIRTUAL_ADDRESS_CHANGE {0x13fa7698,0xc831,0x49c7, {0x87,0xea,0x8f,0x43,0xfc,0xc2,0x51,0x96}}
|
||||
#define EFI_EVENT_GROUP_MEMORY_MAP_CHANGE {0x78bee926,0x692f,0x48fd, {0x9e,0xdb,0x1,0x42,0x2e, 0xf0,0xd7,0xab}}
|
||||
#define EFI_EVENT_GROUP_READY_TO_BOOT {0x7ce88fb3,0x4bd7,0x4679, {0x87,0xa8,0xa8,0xd8,0xde,0xe5,0xd,0x2b}}
|
||||
#define EFI_EVENT_GROUP_AFTER_READY_TO_BOOT {0x3a2a00ad,0x98b9,0x4cdf, {0xa4,0x78,0x70,0x27,0x77,0xf1,0xc1,0xb}}
|
||||
#define EFI_EVENT_GROUP_RESET_SYSTEM {0x62da6a56,0x13fb,0x485a, {0xa8,0xda,0xa3,0xdd,0x79,0x12,0xcb,0x6b}}
|
||||
|
||||
#define TPL_APPLICATION 4
|
||||
#define TPL_CALLBACK 8
|
||||
#define TPL_NOTIFY 16
|
||||
#define TPL_HIGH_LEVEL 31
|
||||
|
||||
#define EFI_MEMORY_UC 0x0000000000000001
|
||||
#define EFI_MEMORY_WC 0x0000000000000002
|
||||
#define EFI_MEMORY_WT 0x0000000000000004
|
||||
#define EFI_MEMORY_WB 0x0000000000000008
|
||||
#define EFI_MEMORY_UCE 0x0000000000000010
|
||||
#define EFI_MEMORY_WP 0x0000000000001000
|
||||
#define EFI_MEMORY_RP 0x0000000000002000
|
||||
#define EFI_MEMORY_XP 0x0000000000004000
|
||||
#define EFI_MEMORY_NV 0x0000000000008000
|
||||
#define EFI_MEMORY_MORE_RELIABLE 0x0000000000010000
|
||||
#define EFI_MEMORY_RO 0x0000000000020000
|
||||
#define EFI_MEMORY_SP 0x0000000000040000
|
||||
#define EFI_MEMORY_CPU_CRYPTO 0x0000000000080000
|
||||
#define EFI_MEMORY_RUNTIME 0x8000000000000000
|
||||
#define EFI_MEMORY_ISA_VALID 0x4000000000000000
|
||||
#define EFI_MEMORY_ISA_MASK 0x0FFFF00000000000
|
||||
|
||||
#define EFI_MEMORY_DESCRIPTOR_VERSION 1
|
||||
|
||||
#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001
|
||||
#define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002
|
||||
#define EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004
|
||||
#define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
|
||||
#define EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010
|
||||
#define EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020
|
||||
|
||||
typedef struct _EFI_BOOT_SERVICES EFI_BOOT_SERVICES;
|
||||
|
||||
typedef enum {
|
||||
TimerCancel,
|
||||
TimerPeriodic,
|
||||
TimerRelative
|
||||
} EFI_TIMER_DELAY;
|
||||
|
||||
typedef enum {
|
||||
AllocateAnyPages,
|
||||
AllocateMaxAddress,
|
||||
AllocateAddress,
|
||||
MaxAllocateType
|
||||
} EFI_ALLOCATE_TYPE;
|
||||
|
||||
typedef enum {
|
||||
EfiReservedMemoryType,
|
||||
EfiLoaderCode,
|
||||
EfiLoaderData,
|
||||
EfiBootServicesCode,
|
||||
EfiBootServicesData,
|
||||
EfiRuntimeServicesCode,
|
||||
EfiRuntimeServicesData,
|
||||
EfiConventionalMemory,
|
||||
EfiUnusableMemory,
|
||||
EfiACPIReclaimMemory,
|
||||
EfiACPIMemoryNVS,
|
||||
EfiMemoryMappedIO,
|
||||
EfiMemoryMappedIOPortSpace,
|
||||
EfiPalCode,
|
||||
EfiPersistentMemory,
|
||||
EfiUnacceptedMemoryType,
|
||||
EfiMaxMemoryType
|
||||
} EFI_MEMORY_TYPE;
|
||||
|
||||
typedef enum {
|
||||
EFI_NATIVE_INTERFACE
|
||||
} EFI_INTERFACE_TYPE;
|
||||
|
||||
typedef enum {
|
||||
AllHandles,
|
||||
ByRegisterNotify,
|
||||
ByProtocol
|
||||
} EFI_LOCATE_SEARCH_TYPE;
|
||||
|
||||
typedef struct {
|
||||
UINT32 Type;
|
||||
EFI_PHYSICAL_ADDRESS PhysicalStart;
|
||||
EFI_VIRTUAL_ADDRESS VirtualStart;
|
||||
UINT64 NumberOfPages;
|
||||
UINT64 Attribute;
|
||||
} EFI_MEMORY_DESCRIPTOR;
|
||||
|
||||
typedef struct {
|
||||
UINT32 Data1;
|
||||
UINT16 Data2;
|
||||
UINT16 Data3;
|
||||
UINT8 Data4[8];
|
||||
} EFI_GUID;
|
||||
|
||||
typedef struct {
|
||||
EFI_HANDLE AgentHandle;
|
||||
EFI_HANDLE ControllerHandle;
|
||||
UINT32 Attributes;
|
||||
UINT32 OpenCount;
|
||||
} EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EFI_EVENT_NOTIFY)(
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_TPL
|
||||
(EFIAPI *EFI_RAISE_TPL)(
|
||||
IN EFI_TPL NewTpl
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_TPL
|
||||
(EFIAPI *EFI_RESTORE_TPL)(
|
||||
IN EFI_TPL OldTpl
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_ALLOCATE_PAGES)(
|
||||
IN EFI_ALLOCATE_TYPE Type,
|
||||
IN EFI_MEMORY_TYPE MemoryType,
|
||||
IN UINTN Pages,
|
||||
IN OUT EFI_PHYSICAL_ADDRESS *Memory
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FREE_PAGES)(
|
||||
IN EFI_PHYSICAL_ADDRESS Memory,
|
||||
IN UINTN Pages
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_GET_MEMORY_MAP)(
|
||||
IN OUT UINTN *MemoryMapSize,
|
||||
OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,
|
||||
OUT UINTN *MapKey,
|
||||
OUT UINTN *DescriptorSize,
|
||||
OUT UINT32 *DescriptorVersion
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_ALLOCATE_POOL)(
|
||||
IN EFI_MEMORY_TYPE PoolType,
|
||||
IN UINTN Size,
|
||||
OUT VOID **Buffer
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FREE_POOL)(
|
||||
IN VOID *Buffer
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EFI_CREATE_EVENT)(
|
||||
IN UINT32 Type,
|
||||
IN EFI_TPL NotifyTPL,
|
||||
IN EFI_EVENT_NOTIFY NotifyFunction OPTIONAL,
|
||||
IN VOID *NotifyContext OPTIONAL,
|
||||
OUT EFI_EVENT *Event
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SET_TIMER)(
|
||||
IN EFI_EVENT Event,
|
||||
IN EFI_TIMER_DELAY Type,
|
||||
IN UINT64 TriggerTime
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_WAIT_FOR_EVENT)(
|
||||
IN UINTN NumberOfEvents,
|
||||
IN EFI_EVENT *Event,
|
||||
OUT UINTN *Index
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SIGNAL_EVENT)(
|
||||
IN EFI_EVENT Event
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_CLOSE_EVENT)(
|
||||
IN EFI_EVENT Event
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_CHECK_EVENT)(
|
||||
IN EFI_EVENT Event
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE)(
|
||||
IN OUT EFI_HANDLE *Handle,
|
||||
IN EFI_GUID *Protocol,
|
||||
IN EFI_INTERFACE_TYPE InterfaceType,
|
||||
IN VOID *Interface
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE)(
|
||||
IN EFI_HANDLE Handle,
|
||||
IN EFI_GUID *Protocol,
|
||||
IN VOID *OldInterface,
|
||||
IN VOID *NewInterface
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE)(
|
||||
IN EFI_HANDLE Handle,
|
||||
IN EFI_GUID *Protocol,
|
||||
IN VOID *Interface
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_HANDLE_PROTOCOL)(
|
||||
IN EFI_HANDLE Handle,
|
||||
IN EFI_GUID *Protocol,
|
||||
OUT VOID **Interface
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY)(
|
||||
IN EFI_GUID *Protocol,
|
||||
IN EFI_EVENT Event,
|
||||
OUT VOID **Registration
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_LOCATE_HANDLE)(
|
||||
IN EFI_LOCATE_SEARCH_TYPE SearchType,
|
||||
IN EFI_GUID *Protocol OPTIONAL,
|
||||
IN VOID *SearchKey OPTIONAL,
|
||||
IN OUT UINTN *BufferSize,
|
||||
OUT EFI_HANDLE *Buffer
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_LOCATE_DEVICE_PATH)(
|
||||
IN EFI_GUID *Protocol,
|
||||
IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath,
|
||||
OUT EFI_HANDLE *Device
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE)(
|
||||
IN EFI_GUID *Guid,
|
||||
IN VOID *Table
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_IMAGE_LOAD)(
|
||||
IN BOOLEAN BootPolicy,
|
||||
IN EFI_HANDLE ParentImageHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath OPTIONAL,
|
||||
IN VOID *SourceBuffer OPTIONAL,
|
||||
IN UINTN SourceSize,
|
||||
OUT EFI_HANDLE *ImageHandle
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_IMAGE_START)(
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
OUT UINTN *ExitDataSize,
|
||||
OUT CHAR16 **ExitData OPTIONAL
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_EXIT)(
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_STATUS ExitStatus,
|
||||
IN UINTN ExitDataSize,
|
||||
IN CHAR16 *ExitData OPTIONAL
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_IMAGE_UNLOAD)(
|
||||
IN EFI_HANDLE ImageHandle
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_EXIT_BOOT_SERVICES)(
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN UINTN MapKey
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT)(
|
||||
OUT UINT64 *Count
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_STALL)(
|
||||
IN UINTN Microseconds
|
||||
);
|
||||
|
||||
typedef EFI_STATUS
|
||||
(EFIAPI *EFI_SET_WATCHDOG_TIMER)(
|
||||
IN UINTN Timeout,
|
||||
IN UINT64 WatchDogCode,
|
||||
IN UINTN DataSize,
|
||||
IN CHAR16 *WatchdogData OPTIONAL
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_CONNECT_CONTROLLER)(
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE *DriverImageHandle OPTIONAL,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL,
|
||||
IN BOOLEAN Recursive
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_DISCONNECT_CONTROLLER)(
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE DriverImageHandle OPTIONAL,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION)(
|
||||
IN EFI_HANDLE Handle,
|
||||
IN EFI_GUID *Protocol,
|
||||
OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
|
||||
OUT UINTN *EntryCount
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_OPEN_PROTOCOL)(
|
||||
IN EFI_HANDLE Handle,
|
||||
IN EFI_GUID *Protocol,
|
||||
OUT VOID **Interface OPTIONAL,
|
||||
IN EFI_HANDLE AgentHandle,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN UINT32 Attributes
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_CLOSE_PROTOCOL)(
|
||||
IN EFI_HANDLE Handle,
|
||||
IN EFI_GUID *Protocol,
|
||||
IN EFI_HANDLE AgentHandle,
|
||||
IN EFI_HANDLE ControllerHandle
|
||||
);
|
||||
|
||||
typedef EFI_STATUS
|
||||
(EFIAPI *EFI_PROTOCOLS_PER_HANDLE)(
|
||||
IN EFI_HANDLE Handle,
|
||||
OUT EFI_GUID ***ProtocolBuffer,
|
||||
OUT UINTN *ProtocolBufferCount
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_LOCATE_HANDLE_BUFFER)(
|
||||
IN EFI_LOCATE_SEARCH_TYPE SearchType,
|
||||
IN EFI_GUID *Protocol OPTIONAL,
|
||||
IN VOID *SearchKey OPTIONAL,
|
||||
OUT UINTN *NoHandles,
|
||||
OUT EFI_HANDLE **Buffer
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_LOCATE_PROTOCOL)(
|
||||
IN EFI_GUID *Protocol,
|
||||
IN VOID *Registration OPTIONAL,
|
||||
OUT VOID **Interface
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES)(
|
||||
IN OUT EFI_HANDLE *Handle,
|
||||
...
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES)(
|
||||
IN OUT EFI_HANDLE *Handle,
|
||||
...
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_CALCULATE_CRC32)(
|
||||
IN VOID *Data,
|
||||
IN UINTN DataSize,
|
||||
OUT UINT32 *Crc32
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EFI_COPY_MEM)(
|
||||
IN VOID *Destination,
|
||||
IN VOID *Source,
|
||||
IN UINTN Length
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EFI_SET_MEM)(
|
||||
IN VOID *Buffer,
|
||||
IN UINTN Size,
|
||||
IN UINT8 Value
|
||||
);
|
||||
|
||||
typedef EFI_STATUS
|
||||
(EFIAPI *EFI_CREATE_EVENT_EX)(
|
||||
IN UINT32 Type,
|
||||
IN EFI_TPL NotifyTpl,
|
||||
IN EFI_EVENT_NOTIFY NotifyFunction OPTIONAL,
|
||||
IN CONST VOID *NotifyContext OPTIONAL,
|
||||
IN CONST EFI_GUID *EventGroup OPTIONAL,
|
||||
OUT EFI_EVENT *Event
|
||||
);
|
||||
|
||||
typedef struct _EFI_BOOT_SERVICES {
|
||||
EFI_TABLE_HEADER Hdr;
|
||||
|
||||
// Task Priority Services
|
||||
EFI_RAISE_TPL RaiseTPL;
|
||||
EFI_RESTORE_TPL RestoreTPL;
|
||||
|
||||
// Memory Services
|
||||
EFI_ALLOCATE_PAGES AllocatePages;
|
||||
EFI_FREE_PAGES FreePages;
|
||||
EFI_GET_MEMORY_MAP GetMemoryMap;
|
||||
EFI_ALLOCATE_POOL AllocatePool;
|
||||
EFI_FREE_POOL FreePool;
|
||||
|
||||
// Event & Timer Services
|
||||
EFI_CREATE_EVENT CreateEvent;
|
||||
EFI_SET_TIMER SetTimer;
|
||||
EFI_WAIT_FOR_EVENT WaitForEvent;
|
||||
EFI_SIGNAL_EVENT SignalEvent;
|
||||
EFI_CLOSE_EVENT CloseEvent;
|
||||
EFI_CHECK_EVENT CheckEvent;
|
||||
|
||||
// Protocol Handler Services
|
||||
EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface;
|
||||
EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
|
||||
EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
|
||||
EFI_HANDLE_PROTOCOL HandleProtocol;
|
||||
VOID *Reserved;
|
||||
EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify;
|
||||
EFI_LOCATE_HANDLE LocateHandle;
|
||||
EFI_LOCATE_DEVICE_PATH LocateDevicePath;
|
||||
EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
|
||||
|
||||
// Image Services
|
||||
EFI_IMAGE_LOAD LoadImage;
|
||||
EFI_IMAGE_START StartImage;
|
||||
EFI_EXIT Exit;
|
||||
EFI_IMAGE_UNLOAD UnloadImage;
|
||||
EFI_EXIT_BOOT_SERVICES ExitBootServices;
|
||||
|
||||
// Miscellaneous Services
|
||||
EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount;
|
||||
EFI_STALL Stall;
|
||||
EFI_SET_WATCHDOG_TIMER SetWatchdogTimer;
|
||||
|
||||
// DriverSupport Services
|
||||
EFI_CONNECT_CONTROLLER ConnectController;
|
||||
EFI_DISCONNECT_CONTROLLER DisconnectController;
|
||||
|
||||
// Open and Close Protocol Services
|
||||
EFI_OPEN_PROTOCOL OpenProtocol;
|
||||
EFI_CLOSE_PROTOCOL CloseProtocol;
|
||||
EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation;
|
||||
|
||||
// Library Services
|
||||
EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle;
|
||||
EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer;
|
||||
EFI_LOCATE_PROTOCOL LocateProtocol;
|
||||
EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;
|
||||
EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;
|
||||
|
||||
// 32-bit CRC Services
|
||||
EFI_CALCULATE_CRC32 CalculateCrc32;
|
||||
|
||||
// Miscellaneous Services
|
||||
EFI_COPY_MEM CopyMem;
|
||||
EFI_SET_MEM SetMem;
|
||||
EFI_CREATE_EVENT_EX CreateEventEx;
|
||||
} EFI_BOOT_SERVICES;
|
||||
|
||||
#endif /* EFI_BOOT_SERVICES_H */
|
240
efi_rs.h
Normal file
240
efi_rs.h
Normal file
|
@ -0,0 +1,240 @@
|
|||
#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 CAPSULE_FLAGS_PERSIST_ACROSS_RESET 0x00010000
|
||||
#define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000
|
||||
#define CAPSULE_FLAGS_INITIATE_RESET 0x00040000
|
||||
|
||||
typedef struct _EFI_RUNTIME_SERVICES EFI_RUNTIME_SERVICES;
|
||||
|
||||
typedef struct {
|
||||
UINT16 Year;
|
||||
UINT8 Month;
|
||||
UINT8 Day;
|
||||
UINT8 Hour;
|
||||
UINT8 Minute;
|
||||
UINT8 Second;
|
||||
UINT8 Pad1;
|
||||
UINT32 Nanosecond;
|
||||
INT16 TimeZone;
|
||||
UINT8 Daylight;
|
||||
UINT8 Pad2;
|
||||
} EFI_TIME;
|
||||
|
||||
typedef struct {
|
||||
UINT32 Resolution;
|
||||
UINT32 Accuracy;
|
||||
BOOLEAN SetsToZero;
|
||||
} EFI_TIME_CAPABILITIES;
|
||||
|
||||
typedef struct {
|
||||
EFI_GUID CapsuleGuid;
|
||||
UINT32 HeaderSize;
|
||||
UINT32 Flags;
|
||||
UINT32 CapsuleImageSize;
|
||||
} EFI_CAPSULE_HEADER;
|
||||
|
||||
typedef struct {
|
||||
UINT32 CapsuleArrayNumber;
|
||||
VOID *CapsulePtr[1];
|
||||
} EFI_CAPSULE_TABLE;
|
||||
|
||||
typedef struct {
|
||||
UINT64 Length;
|
||||
union {
|
||||
EFI_PHYSICAL_ADDRESS DataBlock;
|
||||
EFI_PHYSICAL_ADDRESS ContinuationPointer;
|
||||
} Union;
|
||||
} EFI_CAPSULE_BLOCK_DESCRIPTOR;
|
||||
|
||||
typedef struct {
|
||||
EFI_PHYSICAL_ADDRESS Address;
|
||||
UINT64 Length;
|
||||
} EFI_MEMORY_RANGE;
|
||||
|
||||
typedef struct {
|
||||
EFI_CAPSULE_HEADER Header;
|
||||
UINT32 OsRequestedMemoryType;
|
||||
UINT64 NumberOfMemoryRanges;
|
||||
EFI_MEMORY_RANGE MemoryRanges[];
|
||||
} EFI_MEMORY_RANGE_CAPSULE;
|
||||
|
||||
typedef struct {
|
||||
UINT64 FirmwareMemoryRequirement;
|
||||
UINT64 NumberOfMemoryRanges;
|
||||
} EFI_MEMORY_RANGE_CAPSULE_RESULT;
|
||||
|
||||
typedef struct {
|
||||
UINT32 VariableTotalSize;
|
||||
UINT32 Reserved;
|
||||
EFI_GUID CapsuleGuid;
|
||||
EFI_TIME CapsuleProcessed;
|
||||
EFI_STATUS CapsuleStatus;
|
||||
} EFI_CAPSULE_RESULT_VARIABLE_HEADER;
|
||||
|
||||
typedef struct {
|
||||
UINT16 Version;
|
||||
UINT8 PayloadIndex;
|
||||
UINT8 UpdateImageIndex;
|
||||
EFI_GUID UpdateImageTypeId;
|
||||
//CHAR16 CapsuleFileName[];
|
||||
//CHAR16 CapsuleTarget[];
|
||||
} EFI_CAPSULE_RESULT_VARIABLE_FMP;
|
||||
|
||||
typedef struct {
|
||||
UINT32 Version;
|
||||
UINT32 CapsuleId;
|
||||
UINT32 RespLength;
|
||||
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 BOOLEAN *Enable,
|
||||
OUT BOOLEAN *Pending,
|
||||
OUT EFI_TIME *Time
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SET_WAKEUP_TIME)(
|
||||
IN BOOLEAN Enable,
|
||||
IN EFI_TIME *Time
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP)(
|
||||
IN UINTN MemoryMapSize,
|
||||
IN UINTN DescriptorSize,
|
||||
IN UINT32 DescriptorVersion,
|
||||
IN EFI_MEMORY_DESCRIPTOR *VirtualMap
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_CONVERT_POINTER)(
|
||||
IN UINTN DebugDisposition,
|
||||
IN VOID **Address
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_GET_VARIABLE)(
|
||||
IN CHAR16 *VariableName,
|
||||
IN EFI_GUID *VendorGuid,
|
||||
OUT UINT32 *Attributes OPTIONAL,
|
||||
IN OUT UINTN *DataSize,
|
||||
OUT VOID *Data OPTIONAL
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_GET_NEXT_VARIABLE_NAME)(
|
||||
IN OUT 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 UINT32 Attributes,
|
||||
IN UINTN DataSize,
|
||||
IN VOID *Data
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_GET_NEXT_HIGH_MONOTONIC_COUNT)(
|
||||
OUT UINT32 *HighCount
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_RESET_SYSTEM)(
|
||||
IN EFI_RESET_TYPE ResetType,
|
||||
IN EFI_STATUS ResetStatus,
|
||||
IN UINTN DataSize,
|
||||
IN VOID *ResetData OPTIONAL
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_UPDATE_CAPSULE)(
|
||||
IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
|
||||
IN UINTN CapsuleCount,
|
||||
IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_QUERY_CAPSULE_CAPABILITIES)(
|
||||
IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
|
||||
IN UINTN CapsuleCount,
|
||||
OUT UINT64 *MaximumCapsuleSize,
|
||||
OUT EFI_RESET_TYPE *ResetType
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_QUERY_VARIABLE_INFO)(
|
||||
IN UINT32 Attributes,
|
||||
OUT UINT64 *MaximumVariableStorageSize,
|
||||
OUT UINT64 *RemainingVariableStorageSize,
|
||||
OUT 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 */
|
123
efi_st.h
Normal file
123
efi_st.h
Normal file
|
@ -0,0 +1,123 @@
|
|||
#ifndef EFI_SYSTEM_TABLE_H
|
||||
#define EFI_SYSTEM_TABLE_H
|
||||
|
||||
#include "efi_types.h"
|
||||
|
||||
#include "efi_bs.h"
|
||||
#include "protocols/simple_text_input.h"
|
||||
#include "protocols/simple_text_output.h"
|
||||
#include "efi_rs.h"
|
||||
|
||||
#define EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249
|
||||
#define EFI_2_100_SYSTEM_TABLE_REVISION ((2<<16) | (100))
|
||||
#define EFI_2_90_SYSTEM_TABLE_REVISION ((2<<16) | (90))
|
||||
#define EFI_2_80_SYSTEM_TABLE_REVISION ((2<<16) | (80))
|
||||
#define EFI_2_70_SYSTEM_TABLE_REVISION ((2<<16) | (70))
|
||||
#define EFI_2_60_SYSTEM_TABLE_REVISION ((2<<16) | (60))
|
||||
#define EFI_2_50_SYSTEM_TABLE_REVISION ((2<<16) | (50))
|
||||
#define EFI_2_40_SYSTEM_TABLE_REVISION ((2<<16) | (40))
|
||||
#define EFI_2_31_SYSTEM_TABLE_REVISION ((2<<16) | (31))
|
||||
#define EFI_2_30_SYSTEM_TABLE_REVISION ((2<<16) | (30))
|
||||
#define EFI_2_20_SYSTEM_TABLE_REVISION ((2<<16) | (20))
|
||||
#define EFI_2_10_SYSTEM_TABLE_REVISION ((2<<16) | (10))
|
||||
#define EFI_2_00_SYSTEM_TABLE_REVISION ((2<<16) | (00))
|
||||
#define EFI_1_10_SYSTEM_TABLE_REVISION ((1<<16) | (10))
|
||||
#define EFI_1_02_SYSTEM_TABLE_REVISION ((1<<16) | (02))
|
||||
#define EFI_SPECIFICATION_VERSION EFI_SYSTEM_TABLE_REVISION
|
||||
#define EFI_SYSTEM_TABLE_REVISION EFI_2_100_SYSTEM_TABLE_REVISION
|
||||
|
||||
#define ACPI_TABLE_GUID {0xeb9d2d30,0x2d88,0x11d3, {0x9a,0x16,0x00,0x90,0x27,0x3f,0xc1,0x4d}}
|
||||
#define EFI_ACPI_20_TABLE_GUID {0x8868e871,0xe4f1,0x11d3, {0xbc,0x22,0x00,0x80,0xc7,0x3c,0x88,0x81}}
|
||||
#define ACPI_10_TABLE_GUID ACPI_TABLE_GUID*
|
||||
#define EFI_ACPI_TABLE_GUID {0x8868e871,0xe4f1,0x11d3, {0xbc,0x22,0x00,0x80,0xc7,0x3c,0x88,0x81}}
|
||||
#define SAL_SYSTEM_TABLE_GUID {0xeb9d2d32,0x2d88,0x11d3, {0x9a,0x16,0x00,0x90,0x27,0x3f,0xc1,0x4d}}
|
||||
#define SMBIOS_TABLE_GUID {0xeb9d2d31,0x2d88,0x11d3, {0x9a,0x16,0x00,0x90,0x27,0x3f,0xc1,0x4d}}
|
||||
#define SMBIOS3_TABLE_GUID {0xf2fd1544, 0x9794, 0x4a2c, {0x99,0x2e,0xe5,0xbb,0xcf,0x20,0xe3,0x94}}
|
||||
#define MPS_TABLE_GUID {0xeb9d2d2f,0x2d88,0x11d3, {0x9a,0x16,0x00,0x90,0x27,0x3f,0xc1,0x4d}}
|
||||
|
||||
|
||||
#define EFI_JSON_CONFIG_DATA_TABLE_GUID {0x87367f87,0x1119,0x41ce, {0xaa,0xec,0x8b,0xe0,0x11,0x1f,0x55,0x8a}}
|
||||
#define EFI_JSON_CAPSULE_DATA_TABLE_GUID {0x35e7a725,0x8dd2,0x4cac, {0x80,0x11,0x33,0xcd,0xa8,0x10,0x90,0x56}}
|
||||
#define EFI_JSON_CAPSULE_RESULT_TABLE_GUID {0xdbc461c3,0xb3de,0x422a, {0xb9,0xb4,0x98,0x86,0xfd,0x49,0xa1,0xe5}}
|
||||
|
||||
#define EFI_DTB_TABLE_GUID {0xb1b621d5,0xf19c,0x41a5, {0x83,0x0b,0xd9,0x15,0x2c,0x69,0xaa,0xe0}}
|
||||
|
||||
#define EFI_RT_PROPERTIES_TABLE_GUID {0xeb66918a,0x7eef,0x402a, {0x84,0x2e,0x93,0x1d,0x21,0xc3,0x8a,0xe9}}
|
||||
|
||||
#define EFI_RT_PROPERTIES_TABLE_VERSION 0x1
|
||||
|
||||
#define EFI_RT_SUPPORTED_GET_TIME 0x0001
|
||||
#define EFI_RT_SUPPORTED_SET_TIME 0x0002
|
||||
#define EFI_RT_SUPPORTED_GET_WAKEUP_TIME 0x0004
|
||||
#define EFI_RT_SUPPORTED_SET_WAKEUP_TIME 0x0008
|
||||
#define EFI_RT_SUPPORTED_GET_VARIABLE 0x0010
|
||||
#define EFI_RT_SUPPORTED_GET_NEXT_VARIABLE_NAME 0x0020
|
||||
#define EFI_RT_SUPPORTED_SET_VARIABLE 0x0040
|
||||
#define EFI_RT_SUPPORTED_SET_VIRTUAL_ADDRESS_MAP 0x0080
|
||||
#define EFI_RT_SUPPORTED_CONVERT_POINTER 0x0100
|
||||
#define EFI_RT_SUPPORTED_GET_NEXT_HIGH_MONOTONIC_COUNT 0x0200
|
||||
#define EFI_RT_SUPPORTED_RESET_SYSTEM 0x0400
|
||||
#define EFI_RT_SUPPORTED_UPDATE_CAPSULE 0x0800
|
||||
#define EFI_RT_SUPPORTED_QUERY_CAPSULE_CAPABILITIES 0x1000
|
||||
#define EFI_RT_SUPPORTED_QUERY_VARIABLE_INFO 0x2000
|
||||
|
||||
#define EFI_MEMORY_ATTRIBUTES_TABLE_GUID {0xdcfa911d,0x26eb,0x469f, {0xa2,0x20,0x38,0xb7,0xdc,0x46,0x12,0x20}}
|
||||
|
||||
#define EFI_MEMORY_ATTRIBUTES_FLAGS_RT_FORWARD_CONTROL_FLOW_GUARD 0x1
|
||||
|
||||
#define EFI_CONFORMANCE_PROFILES_TABLE_GUID {0x36122546,0xf7e7,0x4c8f, {0xbd,0x9b,0xeb,0x85,0x25,0xb5,0x0c,0x0b}}
|
||||
#define EFI_CONFORMANCE_PROFILES_UEFI_SPEC_GUID {0x523c91af,0xa195,0x4382, {0x81,0x8d,0x29,0x5f,0xe4,0x00,0x64,0x65}}
|
||||
|
||||
#define EFI_CONFORMANCE_PROFILES_TABLE_VERSION 0x1
|
||||
|
||||
typedef struct _EFI_SYSTEM_TABLE EFI_SYSTEM_TABLE;
|
||||
|
||||
typedef EFI_STATUS
|
||||
(EFIAPI *EFI_IMAGE_ENTRY_POINT)(
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
);
|
||||
|
||||
typedef struct _EFI_CONFIGURATION_TABLE {
|
||||
EFI_GUID VendorGuid;
|
||||
VOID *VendorTable;
|
||||
} EFI_CONFIGURATION_TABLE;
|
||||
|
||||
typedef struct _EFI_RT_PROPERTIES_TABLE {
|
||||
UINT16 Version;
|
||||
UINT16 Length;
|
||||
UINT32 RuntimeServicesSupported;
|
||||
} EFI_RT_PROPERTIES_TABLE;
|
||||
|
||||
typedef struct _EFI_MEMORY_ATTRIBUTES_TABLE {
|
||||
UINT32 Version;
|
||||
UINT32 NumberOfEntries;
|
||||
UINT32 DescriptorSize;
|
||||
UINT32 Flags;
|
||||
//EFI_MEMORY_DESCRIPTOR Entry[1];
|
||||
} EFI_MEMORY_ATTRIBUTES_TABLE;
|
||||
|
||||
typedef struct _EFI_CONFORMANCE_PROFILES_TABLE {
|
||||
UINT16 Version;
|
||||
UINT16 NumberOfProfiles;
|
||||
//EFI_GUID ConformanceProfiles[];
|
||||
} EFI_CONFORMANCE_PROFILES_TABLE;
|
||||
|
||||
typedef struct _EFI_SYSTEM_TABLE {
|
||||
EFI_TABLE_HEADER Hdr;
|
||||
|
||||
CHAR16 *FirmwareVendor;
|
||||
UINT32 FirmwareRevision;
|
||||
EFI_HANDLE ConsoleInHandle;
|
||||
EFI_SIMPLE_TEXT_INPUT_PROTOCOL *ConIn;
|
||||
EFI_HANDLE ConsoleOutHandle;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut;
|
||||
EFI_HANDLE StandardErrorHandle;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *StdErr;
|
||||
EFI_RUNTIME_SERVICES *RuntimeServices;
|
||||
EFI_BOOT_SERVICES *BootServices;
|
||||
UINTN NumberOfTableEntries;
|
||||
EFI_CONFIGURATION_TABLE *ConfigurationTable;
|
||||
} EFI_SYSTEM_TABLE;
|
||||
|
||||
#endif /* EFI_SYSTEM_TABLE_H */
|
|
@ -118,4 +118,12 @@ 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 */
|
||||
|
|
77
efilib.c
77
efilib.c
|
@ -1,77 +0,0 @@
|
|||
#include <efilib.h>
|
||||
|
||||
const CHAR16 *EfiErrToStr(EFI_STATUS Status)
|
||||
{
|
||||
switch (Status) {
|
||||
case EFI_SUCCESS:
|
||||
return L"EFI_SUCCESS";
|
||||
case EFI_LOAD_ERROR:
|
||||
return L"EFI_LOAD_ERROR";
|
||||
case EFI_INVALID_PARAMETER:
|
||||
return L"EFI_INVALID_PARAMETER";
|
||||
case EFI_UNSUPPORTED:
|
||||
return L"EFI_UNSUPPORTED";
|
||||
case EFI_BAD_BUFFER_SIZE:
|
||||
return L"EFI_BAD_BUFFER_SIZE";
|
||||
case EFI_BUFFER_TOO_SMALL:
|
||||
return L"EFI_BUFFER_TOO_SMALL";
|
||||
case EFI_NOT_READY:
|
||||
return L"EFI_NOT_READY";
|
||||
case EFI_DEVICE_ERROR:
|
||||
return L"EFI_DEVICE_ERROR";
|
||||
case EFI_WRITE_PROTECTED:
|
||||
return L"EFI_WRITE_PROTECTED";
|
||||
case EFI_OUT_OF_RESOURCES:
|
||||
return L"EFI_OUT_OF_RESOURCES";
|
||||
case EFI_VOLUME_CORRUPTED:
|
||||
return L"EFI_VOLUME_CORRUPTED";
|
||||
case EFI_VOLUME_FULL:
|
||||
return L"EFI_VOLUME_FULL";
|
||||
case EFI_NO_MEDIA:
|
||||
return L"EFI_NO_MEDIA";
|
||||
case EFI_MEDIA_CHANGED:
|
||||
return L"EFI_MEDIA_CHANGED";
|
||||
case EFI_NOT_FOUND:
|
||||
return L"EFI_NOT_FOUND";
|
||||
case EFI_ACCESS_DENIED:
|
||||
return L"EFI_ACCESS_DENIED";
|
||||
case EFI_NO_RESPONSE:
|
||||
return L"EFI_NO_RESPONSE";
|
||||
case EFI_NO_MAPPING:
|
||||
return L"EFI_NO_MAPPING";
|
||||
case EFI_TIMEOUT:
|
||||
return L"EFI_TIMEOUT";
|
||||
case EFI_NOT_STARTED:
|
||||
return L"EFI_NOT_STARTED";
|
||||
case EFI_ALREADY_STARTED:
|
||||
return L"EFI_ALREADY_STARTED";
|
||||
case EFI_ABORTED:
|
||||
return L"EFI_ABORTED";
|
||||
case EFI_ICMP_ERROR:
|
||||
return L"EFI_ICMP_ERROR";
|
||||
case EFI_TFTP_ERROR:
|
||||
return L"EFI_TFTP_ERROR";
|
||||
case EFI_PROTOCOL_ERROR:
|
||||
return L"EFI_PROTOCOL_ERROR";
|
||||
case EFI_INCOMPATIBLE_VERSION:
|
||||
return L"EFI_INCOMPATIBLE_VERSION";
|
||||
case EFI_SECURITY_VIOLATION:
|
||||
return L"EFI_SECURITY_VIOLATION";
|
||||
case EFI_CRC_ERROR:
|
||||
return L"EFI_CRC_ERROR";
|
||||
case EFI_END_OF_MEDIA:
|
||||
return L"EFI_END_OF_MEDIA";
|
||||
case EFI_END_OF_FILE:
|
||||
return L"EFI_END_OF_FILE";
|
||||
case EFI_INVALID_LANGUAGE:
|
||||
return L"EFI_INVALID_LANGUAGE";
|
||||
case EFI_COMPROMISED_DATA:
|
||||
return L"EFI_COMPROMISED_DATA";
|
||||
case EFI_IP_ADDRESS_CONFLICT:
|
||||
return L"EFI_IP_ADDRESS_CONFLICT";
|
||||
case EFI_HTTP_ERROR:
|
||||
return L"EFI_HTTP_ERROR";
|
||||
default:
|
||||
return L"Unknown";
|
||||
}
|
||||
}
|
10
efilib.h
10
efilib.h
|
@ -1,10 +0,0 @@
|
|||
#ifndef EFILIB_H
|
||||
#define EFILIB_H
|
||||
|
||||
#include "efi.h"
|
||||
|
||||
#define EFI_ERROR(Status) (((INTN)(EFI_STATUS)(Status)) < 0)
|
||||
|
||||
const CHAR16 *EfiErrToStr(EFI_STATUS Status);
|
||||
|
||||
#endif /* EFILIB_H */
|
55
guid.h
55
guid.h
|
@ -1,55 +0,0 @@
|
|||
#ifndef GUID_H
|
||||
#define GUID_H
|
||||
|
||||
#include "efi_types.h"
|
||||
|
||||
// EFI GUID Definition
|
||||
typedef struct EFI_GUID {
|
||||
UINT32 Data1;
|
||||
UINT16 Data2;
|
||||
UINT16 Data3;
|
||||
UINT8 Data4[8];
|
||||
} EFI_GUID;
|
||||
|
||||
// Driver Signing
|
||||
#define EFI_CERT_TYPE_RSA2048_SHA256_GUID {0xa7717414,0xc616,0x4977, {0x94,0x20,0x84,0x47,0x12,0xa7,0x35,0xbf}}
|
||||
#define EFI_CERT_TYPE_PKCS7_GUID {0x4aafd29d,0x68df,0x49ee, {0x8a,0xa9,0x34,0x7d,0x37,0x56,0x65,0xa7}}
|
||||
|
||||
// Simple Text I/O Protocols
|
||||
#define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID {0x387477c1,0x69c7,0x11d2, {0x8e,0x39,0x00,0xa0,0xc9,0x69,0x72,0x3b}}
|
||||
#define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID {0x387477c2,0x69c7,0x11d2, {0x8e,0x39,0x00,0xa0,0xc9,0x69,0x72,0x3b}}
|
||||
|
||||
// Simple File System Protocol
|
||||
#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID {0x0964e5b22,0x6459,0x11d2, {0x8e,0x39,0x00,0xa0,0xc9,0x69,0x72,0x3b}}
|
||||
|
||||
// Boot Services
|
||||
#define EFI_HII_PACKAGE_LIST_PROTOCOL_GUID {0x6a1ee763,0xd47a,0x43b4, {0xaa,0xbe,0xef,0x1d,0xe2,0xab,0x56,0xfc}}
|
||||
#define EFI_DEVICE_PATH_PROTOCOL_GUID {0x09576e91,0x6d3f,0x11d2, {0x8e,0x39,0x00,0xa0,0xc9,0x69,0x72,0x3b}}
|
||||
|
||||
// Capsules
|
||||
#define EFI_MEMORY_RANGE_CAPSULE_GUID {0xde9f0ec,0x88b6,0x428f, {0x97,0x7a,0x25,0x8f,0x1d,0xe,0x5e,0x72}}
|
||||
#define EFI_CAPSULE_REPORT_GUID {0x39b68c46,0xf7fb,0x441b, {0xb6,0xec,0x16,0xb0,0xf6,0x98,0x21,0xf3}}
|
||||
|
||||
/**********************
|
||||
* Global GUIDs *
|
||||
**********************/
|
||||
// EXTERN EFI_GUID gEfiCertTypeRsa2048Sha256Guid;
|
||||
// EXTERN EFI_GUID gEfiCertTypePkcs7Guid;
|
||||
// EXTERN EFI_GUID gSimpleTextInputProtocolGuid;
|
||||
// EXTERN EFI_GUID gSimpleTextOutputProtocolGuid;
|
||||
// EXTERN EFI_GUID gEfiSimpleFileSystemProtocolGuid;
|
||||
// EXTERN EFI_GUID gEfiHiiPackageListProtocolGuid;
|
||||
// EXTERN EFI_GUID gEfiDevicePathProtocolGuid;
|
||||
// EXTERN EFI_GUID gEfiMemoryRangeCapsuleGuid;
|
||||
// EXTERN EFI_GUID gEfiCapsuleReportGuid;
|
||||
static EFI_GUID gEfiCertTypeRsa2048Sha256Guid = EFI_CERT_TYPE_RSA2048_SHA256_GUID;
|
||||
static EFI_GUID gEfiCertTypePkcs7Guid = EFI_CERT_TYPE_PKCS7_GUID;
|
||||
static EFI_GUID gSimpleTextInputProtocolGuid = EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID;
|
||||
static EFI_GUID gSimpleTextOutputProtocolGuid = EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID;
|
||||
static EFI_GUID gEfiSimpleFileSystemProtocolGuid = EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID;
|
||||
static EFI_GUID gEfiHiiPackageListProtocolGuid = EFI_HII_PACKAGE_LIST_PROTOCOL_GUID;
|
||||
static EFI_GUID gEfiDevicePathProtocolGuid = EFI_DEVICE_PATH_PROTOCOL_GUID;
|
||||
static EFI_GUID gEfiMemoryRangeCapsuleGuid = EFI_MEMORY_RANGE_CAPSULE_GUID;
|
||||
static EFI_GUID gEfiCapsuleReportGuid = EFI_CAPSULE_REPORT_GUID;
|
||||
|
||||
#endif /* GUID_H */
|
32
protocols/boot_manager_policy.h
Normal file
32
protocols/boot_manager_policy.h
Normal file
|
@ -0,0 +1,32 @@
|
|||
#ifndef EFI_PROTOCOLS_BOOT_MANAGER_POLICY_H
|
||||
#define EFI_PROTOCOLS_BOOT_MANAGER_POLICY_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}}
|
||||
#define EFI_BOOT_MANAGER_POLICY_CONNECT_ALL_GUID {0x113b2126, 0xfc8a, 0x11e3, {0xbd,0x6c,0xb8,0xe8,0x56,0x2c,0xba,0xfa}}
|
||||
|
||||
#define EFI_BOOT_MANAGER_POLICY_PROTOCOL_REVISION 0x00010000
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_BOOT_MANAGER_POLICY_CONNECT_DEVICE_PATH)(
|
||||
IN EFI_BOOT_MANAGER_POLICY_PROTOCOL *This,
|
||||
IN EFI_DEVICE_PATH *DevicePath,
|
||||
IN BOOLEAN Recursive
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_BOOT_MANAGER_POLICY_CONNECT_DEVICE_CLASS)(
|
||||
IN EFI_BOOT_MANAGER_POLICY_PROTOCOL *This,
|
||||
IN EFI_GUID *Class
|
||||
);
|
||||
|
||||
typedef struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL {
|
||||
UINT64 Revision;
|
||||
EFI_BOOT_MANAGER_POLICY_CONNECT_DEVICE_PATH ConnectDevicePath;
|
||||
EFI_BOOT_MANAGER_POLICY_CONNECT_DEVICE_CLASS ConnectDeviceClass;
|
||||
} EFI_BOOT_MANAGER_POLICY_PROTOCOL;
|
||||
|
||||
#endif /* EFI_PROTOCOLS_BOOT_MANAGER_POLICY_H */
|
19
protocols/bus_specific_driver_override.h
Normal file
19
protocols/bus_specific_driver_override.h
Normal file
|
@ -0,0 +1,19 @@
|
|||
#ifndef EFI_PROTOCOLS_BUS_SPECIFIC_DRIVER_OVERRIDE_H
|
||||
#define EFI_PROTOCOLS_BUS_SPECIFIC_DRIVER_OVERRIDE_H
|
||||
|
||||
#define EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID {0x3bc1b285,0x8a15,0x4a82, {0xaa,0xbf,0x4d,0x7d,0x13,0xfb,0x32,0x65}}
|
||||
|
||||
typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL;
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER)(
|
||||
IN EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL *This,
|
||||
IN OUT EFI_HANDLE *DriverImageHandle
|
||||
);
|
||||
|
||||
typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL {
|
||||
EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER GetDriver;
|
||||
} EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL;
|
||||
|
||||
#endif /* EFI_PROTOCOLS_BUS_SPECIFIC_DRIVER_OVERRIDE_H */
|
12
protocols/device_path.h
Normal file
12
protocols/device_path.h
Normal file
|
@ -0,0 +1,12 @@
|
|||
#ifndef EFI_PROTOCOLS_DEVICE_PATH_H
|
||||
#define EFI_PROTOCOLS_DEVICE_PATH_H
|
||||
|
||||
#define EFI_DEVICE_PATH_PROTOCOL_GUID {0x09576e91,0x6d3f,0x11d2,{0x8e,0x39,0x00,0xa0,0xc9,0x69,0x72,0x3b}}
|
||||
|
||||
typedef struct _EFI_DEVICE_PATH_PROTOCOL {
|
||||
UINT8 Type;
|
||||
UINT8 SubType;
|
||||
UINT8 Length[2];
|
||||
} EFI_DEVICE_PATH_PROTOCOL;
|
||||
|
||||
#endif /* EFI_PROTOCOLS_DEVICE_PATH_H */
|
40
protocols/driver_binding.h
Normal file
40
protocols/driver_binding.h
Normal file
|
@ -0,0 +1,40 @@
|
|||
#ifndef EFI_PROTOCOLS_DRIVER_BINDING_H
|
||||
#define EFI_PROTOCOLS_DRIVER_BINDING_H
|
||||
|
||||
#define EFI_DRIVER_BINDING_PROTOCOL_GUID {0x18a031ab,0xb443,0x4d1a, {0xa5,0xc0,0x0c,0x09,0x26,0x1e,0x9f,0x71}}
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED)(
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_START)(
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_STOP)(
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *ChildHandleBuffer OPTIONAL
|
||||
);
|
||||
|
||||
typedef struct _EFI_DRIVER_BINDING_PROTOCOL {
|
||||
EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED Supported;
|
||||
EFI_DRIVER_BINDING_PROTOCOL_START Start;
|
||||
EFI_DRIVER_BINDING_PROTOCOL_STOP Stop;
|
||||
UINT32 Version;
|
||||
EFI_HANDLE ImageHandle;
|
||||
EFI_HANDLE DriverBindingHandle;
|
||||
} EFI_DRIVER_BINDING_PROTOCOL;
|
||||
|
||||
#endif /* EFI_PROTOCOLS_DRIVER_BINDING_H */
|
156
protocols/file.h
Normal file
156
protocols/file.h
Normal file
|
@ -0,0 +1,156 @@
|
|||
#ifndef EFI_PROTOCOLS_FILE_H
|
||||
#define EFI_PROTOCOLS_FILE_H
|
||||
|
||||
#define EFI_FILE_PROTOCOL_REVISION 0x00010000
|
||||
#define EFI_FILE_PROTOCOL_REVISION2 0x00020000
|
||||
#define EFI_FILE_PROTOCOL_LATEST_REVISION EFI_FILE_PROTOCOL_REVISION2
|
||||
|
||||
#define EFI_FILE_MODE_READ 0x0000000000000001
|
||||
#define EFI_FILE_MODE_WRITE 0x0000000000000002
|
||||
#define EFI_FILE_MODE_CREATE 0x8000000000000000
|
||||
|
||||
#define EFI_FILE_READ_ONLY 0x0000000000000001
|
||||
#define EFI_FILE_HIDDEN 0x0000000000000002
|
||||
#define EFI_FILE_SYSTEM 0x0000000000000004
|
||||
#define EFI_FILE_RESERVED 0x0000000000000008
|
||||
#define EFI_FILE_DIRECTORY 0x0000000000000010
|
||||
#define EFI_FILE_ARCHIVE 0x0000000000000020
|
||||
#define EFI_FILE_VALID_ATTR 0x0000000000000037
|
||||
|
||||
typedef struct {
|
||||
EFI_EVENT Event;
|
||||
EFI_STATUS Status;
|
||||
UINTN BufferSize;
|
||||
VOID *Buffer;
|
||||
} EFI_FILE_IO_TOKEN;
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FILE_OPEN)(
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
OUT EFI_FILE_PROTOCOL **NewHandle,
|
||||
IN CHAR16 *FileName,
|
||||
IN UINT64 OpenMode,
|
||||
IN UINT64 Attributes
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FILE_CLOSE)(
|
||||
IN EFI_FILE_PROTOCOL *This
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FILE_DELETE)(
|
||||
IN EFI_FILE_PROTOCOL *This
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FILE_READ)(
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
IN OUT UINTN *BufferSize,
|
||||
OUT VOID *Buffer
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FILE_WRITE)(
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
IN OUT UINTN *BufferSize,
|
||||
IN VOID *Buffer
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FILE_GET_POSITION)(
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
OUT UINT64 Position
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FILE_SET_POSITION)(
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
IN UINT64 Position
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FILE_GET_INFO)(
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
IN EFI_GUID *InformationType,
|
||||
IN OUT UINTN *BufferSize,
|
||||
OUT VOID *Buffer
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FILE_SET_INFO)(
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
IN EFI_GUID *InformationType,
|
||||
IN UINTN BufferSize,
|
||||
IN VOID *Buffer
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FILE_FLUSH)(
|
||||
IN EFI_FILE_PROTOCOL *This
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FILE_OPEN_EX)(
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
OUT EFI_FILE_PROTOCOL **NewHandle,
|
||||
IN CHAR16 *FileName,
|
||||
IN UINT64 OpenMode,
|
||||
IN UINT64 Attributes,
|
||||
IN OUT EFI_FILE_IO_TOKEN *Token
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FILE_READ_EX)(
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
IN OUT EFI_FILE_IO_TOKEN *Token
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FILE_WRITE_EX)(
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
IN OUT EFI_FILE_IO_TOKEN *Token
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_FILE_FLUSH_EX)(
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
IN OUT EFI_FILE_IO_TOKEN *Token
|
||||
);
|
||||
|
||||
typedef struct _EFI_FILE_PROTOCOL {
|
||||
UINT64 Revision;
|
||||
|
||||
EFI_FILE_OPEN Open;
|
||||
EFI_FILE_CLOSE Close;
|
||||
EFI_FILE_DELETE Delete;
|
||||
EFI_FILE_READ Read;
|
||||
EFI_FILE_WRITE Write;
|
||||
EFI_FILE_GET_POSITION GetPosition;
|
||||
EFI_FILE_SET_POSITION SetPosition;
|
||||
EFI_FILE_GET_INFO GetInfo;
|
||||
EFI_FILE_SET_INFO SetInfo;
|
||||
EFI_FILE_FLUSH Flush;
|
||||
|
||||
// Added for revision 2
|
||||
EFI_FILE_OPEN_EX OpenEx;
|
||||
EFI_FILE_READ_EX ReadEx;
|
||||
EFI_FILE_WRITE_EX WriteEx;
|
||||
EFI_FILE_FLUSH_EX FlushEx;
|
||||
} EFI_FILE_PROTOCOL;
|
||||
|
||||
#endif /* EFI_PROTOCOLS_FILE_H */
|
34
protocols/loaded_image.h
Normal file
34
protocols/loaded_image.h
Normal file
|
@ -0,0 +1,34 @@
|
|||
#ifndef EFI_PROTOCOLS_LOADED_IMAGE_H
|
||||
#define EFI_PROTOCOLS_LOADED_IMAGE_H
|
||||
|
||||
#define EFI_LOADED_IMAGE_PROTOCOL_GUID {0x5b1b31a1,0x9562,0x11d2, {0x8e,0x3f,0x00,0xa0,0xc9,0x69,0x72,0x3b}}
|
||||
|
||||
#define EFI_LOADED_IMAGE_PROTOCOL_VERSION 0x1000
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_IMAGE_UNLOAD)(
|
||||
IN EFI_HANDLE ImageHandle
|
||||
);
|
||||
|
||||
typedef struct _EFI_LOADED_IMAGE_PROTOCOL {
|
||||
UINT32 Revision;
|
||||
EFI_HANDLE ParentHandle;
|
||||
EFI_SYSTEM_TABLE *SystemTable;
|
||||
|
||||
// Source location of the image
|
||||
EFI_HANDLE DeviceHandle;
|
||||
EFI_DEVICE_PATH_PROTOCOL *FilePath;
|
||||
VOID *Reserved;
|
||||
|
||||
UINT32 LoadOptionsSize;
|
||||
VOID *LoadOptions;
|
||||
|
||||
VOID *ImageBase;
|
||||
UINT64 ImageSize;
|
||||
EFI_MEMORY_TYPE ImageCodeType;
|
||||
EFI_MEMORY_TYPE ImageDataType;
|
||||
EFI_IMAGE_UNLOAD Unload;
|
||||
} EFI_LOADED_IMAGE_PROTOCOL;
|
||||
|
||||
#endif /* EFI_PROTOCOLS_LOADED_IMAGE_H */
|
12
protocols/loaded_image_device_path.h
Normal file
12
protocols/loaded_image_device_path.h
Normal file
|
@ -0,0 +1,12 @@
|
|||
#ifndef EFI_PROTOCOLS_LOADED_IMAGE_DEVICE_PATH_H
|
||||
#define EFI_PROTOCOLS_LOADED_IMAGE_DEVICE_PATH_H
|
||||
|
||||
#define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID {0xbc62157e,0x3e33,0x4fec, {0x99,0x20,0x2d,0x3b,0x36,0xd7,0x50,0xdf}}
|
||||
|
||||
// UEFI Spec 2.10, 9.2.1:
|
||||
// The Loaded Image Device Path Protocol uses the same protocol interface structure as the Device Path Protocol defined
|
||||
// in Chapter 9. The only difference between the Device Path Protocol and the Loaded Image Device Path Protocol is
|
||||
// the protocol GUID value.
|
||||
typedef EFI_DEVICE_PATH_PROTOCOL EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL;
|
||||
|
||||
#endif /* EFI_PROTOCOLS_LOADED_IMAGE_DEVICE_PATH_H */
|
39
protocols/platform_driver_override.h
Normal file
39
protocols/platform_driver_override.h
Normal file
|
@ -0,0 +1,39 @@
|
|||
#ifndef EFI_PLATFORMS_PLATFORM_DRIVER_OVERRIDE_H
|
||||
#define EFI_PLATFORMS_PLATFORM_DRIVER_OVERRIDE_H
|
||||
|
||||
#define EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID {0x6b30c738,0xa391,0x11d4, {0x9a,0x3b,0x00,0x90,0x27,0x3f,0xc1,0x4d}}
|
||||
|
||||
typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL;
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER)(
|
||||
IN EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN OUT EFI_HANDLE *DriverImageHandle
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH)(
|
||||
IN EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN OUT EFI_DEVICE_PATH_PROTOCOL **DriverImagePath
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED)(
|
||||
IN EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DriverImagePath,
|
||||
IN EFI_HANDLE DriverImageHandle
|
||||
);
|
||||
|
||||
typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL {
|
||||
EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER GetDriver;
|
||||
EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH GetDriverPath;
|
||||
EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED DriverLoaded;
|
||||
} EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL;
|
||||
|
||||
#endif /* EFI_PLATFORMS_PLATFORM_DRIVER_OVERRIDE_H */
|
18
protocols/simple_file_system.h
Normal file
18
protocols/simple_file_system.h
Normal file
|
@ -0,0 +1,18 @@
|
|||
#ifndef EFI_PROTOCOLS_SIMPLE_FILE_SYSTEM_H
|
||||
#define EFI_PROTOCOLS_SIMPLE_FILE_SYSTEM_H
|
||||
|
||||
#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION 0x00010000
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_OPEN_VOLUME)(
|
||||
IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This,
|
||||
OUT EFI_FILE_PROTOCOL **Root
|
||||
);
|
||||
|
||||
typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL {
|
||||
UINT64 Revision;
|
||||
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_OPEN_VOLUME OpenVolume;
|
||||
} EFI_SIMPLE_FILE_SYSTEM_PROTOCOL;
|
||||
|
||||
#endif /* EFI_PROTOCOLS_SIMPLE_FILE_SYSTEM_H */
|
34
protocols/simple_text_input.h
Normal file
34
protocols/simple_text_input.h
Normal file
|
@ -0,0 +1,34 @@
|
|||
#ifndef EFI_PROTOCOLS_SIMPLE_TEXT_INPUT_H
|
||||
#define EFI_PROTOCOLS_SIMPLE_TEXT_INPUT_H
|
||||
|
||||
#include "efi_types.h"
|
||||
|
||||
typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
|
||||
|
||||
// Input Key
|
||||
typedef struct {
|
||||
UINT16 ScanCode;
|
||||
CHAR16 UnicodeChar;
|
||||
} EFI_INPUT_KEY;
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_INPUT_READ_KEY)(
|
||||
IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,
|
||||
OUT EFI_INPUT_KEY *Key
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_INPUT_RESET)(
|
||||
IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
);
|
||||
|
||||
typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL {
|
||||
EFI_INPUT_RESET Reset;
|
||||
EFI_INPUT_READ_KEY ReadKeyStroke;
|
||||
EFI_EVENT WaitForKey;
|
||||
} EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
|
||||
|
||||
#endif /* EFI_PROTOCOLS_SIMPLE_TEXT_INPUT_H */
|
95
protocols/simple_text_output.h
Normal file
95
protocols/simple_text_output.h
Normal file
|
@ -0,0 +1,95 @@
|
|||
#ifndef EFI_PROTOCOLS_SIMPLE_TEXT_OUTPUT_H
|
||||
#define EFI_PROTOCOLS_SIMPLE_TEXT_OUTPUT_H
|
||||
|
||||
typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_RESET)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_STRING)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN CHAR16 *String
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_TEST_STRING)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN CHAR16 *String
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_QUERY_MODE)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN ModeNumber,
|
||||
OUT UINTN *Columns,
|
||||
OUT UINTN *Rows
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_SET_MODE)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN ModeNumber
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_SET_ATTRIBUTE)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN Attribute
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_CLEAR_SCREEN)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_SET_CURSOR_POSITION)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN Column,
|
||||
IN UINTN Row
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_ENABLE_CURSOR)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN BOOLEAN Visible
|
||||
);
|
||||
|
||||
typedef struct {
|
||||
INT32 MaxNode;
|
||||
|
||||
// Current settings
|
||||
INT32 Mode;
|
||||
INT32 Attribute;
|
||||
INT32 CursorColumn;
|
||||
INT32 CursorRow;
|
||||
BOOLEAN CursorVisible;
|
||||
} SIMPLE_TEXT_OUTPUT_MODE;
|
||||
|
||||
typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL {
|
||||
EFI_TEXT_RESET Reset;
|
||||
EFI_TEXT_STRING OutputString;
|
||||
EFI_TEXT_TEST_STRING TestString;
|
||||
EFI_TEXT_QUERY_MODE QueryMode;
|
||||
EFI_TEXT_SET_MODE SetMode;
|
||||
EFI_TEXT_SET_ATTRIBUTE SetAttribute;
|
||||
EFI_TEXT_CLEAR_SCREEN ClearScreen;
|
||||
EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition;
|
||||
EFI_TEXT_ENABLE_CURSOR EnableCursor;
|
||||
SIMPLE_TEXT_OUTPUT_MODE *Mode;
|
||||
} EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
|
||||
|
||||
#endif /* EFI_PROTOCOLS_SIMPLE_TEXT_OUTPUT_H */
|
Loading…
Add table
Add a link
Reference in a new issue