NeKernel dev
Loading...
Searching...
No Matches
EFI.h
Go to the documentation of this file.
1/* ========================================
2
3 Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
4
5======================================== */
6
7#ifndef FIRMWARE_KIT_EFI_H
8#define FIRMWARE_KIT_EFI_H
9
13
14#include <NeKit/Config.h>
15
16using namespace Kernel;
17
18/* we always use stdcall in EFI, the pascal way of calling functions. */
19
20#ifndef EPI_API
21#define EFI_API __attribute__((ms_abi))
22#endif // ifndef EPI_API
23
24#ifndef EPIAPI
25#define EFIAPI __attribute__((ms_abi))
26#endif // ifndef EPIAPI
27
28#define IN
29#define OUT
30#define OPTIONAL
31
32#define EFI_STATUS EfiStatusType
33
34#define EFI_FINAL final
35
36// Forward decls
37
38struct EfiTableHeader;
42struct EfiBootServices;
44struct EfiSystemTable;
45struct EFI_GUID;
47struct EfiHandle;
49struct EfiBitmask;
50struct EfiFileProtocol;
52
54
56
59typedef struct EfiHandle {
61
62/* UEFI uses wide characters by default. */
64
67
72
74 const WideChar* OutputString);
75
77 const WideChar Attribute);
78
80
82 Boolean BootPolicy, UInt32* BufferSize, VoidPtr Buffer);
83
84typedef UInt64(EFI_API* EfiCopyMem)(VoidPtr DstBuf, VoidPtr SrcBuf, SizeT Length);
85
86typedef UInt64(EFI_API* EfiSetMem)(VoidPtr DstBuf, Char Byte, SizeT Length);
87
89
92
93typedef UInt64(EFI_API* EfiStartImage)(EfiHandlePtr Handle, VoidPtr ArgsSize, VoidPtr ArgsPtr);
94
95typedef UInt64(EFI_API* EfiLoadImage)(Boolean BootPolicy, EfiHandlePtr ParentHandle,
96 EfiFileDevicePathProtocol* DeviceFile, VoidPtr buffer,
97 SizeT size, EfiHandlePtr* ppHandle);
98
100
183
197
224
226
228
229typedef UInt64(EFI_API* EfiCalculateCrc32)(VoidPtr Data, UInt32 DataSize, UInt32* CrcOut);
230
241
242#define EFI_ACPI_TABLE_PROTOCOL_GUID \
243 {0xffe06bdd, 0x6107, 0x46a6, {0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c}}
244
245#define EFI_LOAD_FILE_PROTOCOL_GUID \
246 {0x56EC3091, 0x954C, 0x11d2, {0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}}
247
248#define EFI_LOAD_FILE2_PROTOCOL_GUID \
249 {0x4006c0c1, 0xfcb3, 0x403e, {0x99, 0x6d, 0x4a, 0x6c, 0x87, 0x24, 0xe0, 0x6d}}
250
251#define EFI_LOADED_IMAGE_PROTOCOL_GUID \
252 {0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B}}
253
254#define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
255 {0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a}}
256
257#define EFI_SIMPLE_NETWORK_PROTOCOL_GUID \
258 {0xA19832B9, 0xAC25, 0x11D3, {0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d}}
259
260#define EFI_SIMPLE_NETWORK_PROTOCOL_REVISION 0x00010000
261
262#define EFI_IP4_PROTOCOL_GUID \
263 {0x41d94cd2, 0x35b6, 0x455a, {0x82, 0x58, 0xd4, 0xe5, 0x13, 0x34, 0xaa, 0xdd}}
264
265#define EFI_LOADED_IMAGE_PROTOCOL_REVISION 0x1000
266
267#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \
268 {0x0964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}}
269
270#define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID \
271 {0xbc62157e, 0x3e33, 0x4fec, {0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf}}
272
273#define EFI_DEVICE_PATH_PROTOCOL_GUID \
274 {0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b}}
275
276#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \
277 {0x0964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}}
278
279typedef UInt64(EfiImageUnload)(EfiHandlePtr ImageHandle);
280
281enum {
287};
288
290
292
294
296 IN UInt32 ExtraRxBufferSize OPTIONAL,
297 IN UInt32 ExtraTxBufferSize OPTIONAL);
298
300 IN Boolean ExtendedVerification);
301
303
305
306#define MAX_MCAST_FILTER_CNT 16
307
329
331 IN UInt32 HeaderSize, IN UInt32 BufferSize,
332 IN Void* Buffer,
333 IN EfiMacAddress* SrcAddr OPTIONAL,
334 IN EfiMacAddress* DestAddr OPTIONAL,
335 IN UInt16* Protocol OPTIONAL);
336
338 OUT UInt32* HeaderSize OPTIONAL,
339 IN OUT UInt32* BufferSize, OUT Void* Buffer,
340 OUT EfiMacAddress* SrcAddr OPTIONAL,
341 OUT EfiMacAddress* DestAddr OPTIONAL,
342 OUT UInt16* Protocol OPTIONAL);
343
362
369
376
384
393
395 EfiGraphicsOutputProtocol* Self, UInt32 ModeNumber, UInt32* SizeOfInfo,
397
399 UInt32 ModeNumber);
400
403 EfiGraphicsOutputProtocolBltOperation BltOperation, UInt32 SourceX, UInt32 SourceY,
404 UInt32 DestinationX, UInt32 DestinationY, UInt32 Width, UInt32 Height, UInt32 Delta);
405
414
421
443
447
453
462
463typedef UInt64(EFI_API* EfiExitBootServices)(VoidPtr ImageHandle, UInt32 MapKey);
464
467
469
471 UInt32* MapKey, UInt32* DescSize, UInt32* DescVersion);
472
482
483/***
484 * Protocol stuff...
485 */
486
487#define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \
488 {0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}}
489
491#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001
492#define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002
493#define EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004
494#define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
495#define EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010
496#define EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020
497
498typedef UInt64(EFI_API* EfiLocateProtocol)(EFI_GUID* Protocol, VoidPtr Registration,
499 VoidPtr* Interface);
500
501typedef UInt64(EFI_API* EfiOpenProtocol)(EfiHandlePtr Handle, EFI_GUID* Guid, VoidPtr* Interface,
502 EfiHandlePtr AgentHandle, EfiHandlePtr ControllerHandle,
503 UInt32 Attributes);
504
506
512typedef struct EfiBootServices {
560
561#define kEntireDevPath 0xFF
562#define kThisInstancePath 0x01
563
579
584
586 OUT EfiInputKey* Key);
587
589 IN Boolean ExtendedChk);
590
591typedef EfiStatusType(EFI_API* EfiWaitForEvent)(IN UInt32 NumberOfEvents, IN VoidPtr Event,
592 OUT UInt32* Index);
593
599
602 struct EfiFileProtocol**);
603
608
623
646
647#define kEfiOk 0
648#define kEfiFail -1
649#define kBufferTooSmall 5
650
651#define EFI_EXTERN_C extern "C"
652
653typedef struct EfiIPV4 {
656
660typedef struct EfiIPV6 {
663
664#define kEFIYellow (0x01 | 0x02 | 0x04 | 0x08)
665
666#ifdef __x86_64
667#define __EFI_x86_64__ 1
668#endif // __x86_64
669
670enum {
678};
679
680#define END_DEVICE_PATH_TYPE 0x7f
681#define END_ENTIRE_DEVICE_PATH_SUBTYPE 0xFF
682#define END_INSTANCE_DEVICE_PATH_SUBTYPE 0x01
683
684#define kEfiOffsetOf(T, F) __builtin_offsetof(T, F)
685
687
688#define kEFIFileRead 0x0000000000000001
689#define kEFIFileWrite 0x0000000000000002
690#define kEFIFileCreate 0x0000000000000000
691
692#define kEFIReadOnly 0x01
693#define kEFIHidden 0x02
694#define kEFISystem 0x04
695#define kEFIReserved 0x08
696#define kEFIDirectory 0x10
697#define kEFIArchive 0x20
698
699#define EFI_FILE_PROTOCOL_REVISION 0x00010000
700#define EFI_FILE_PROTOCOL_REVISION2 0x00020000
701#define EFI_FILE_PROTOCOL_LATEST_REVISION EFI_FILE_PROTOCOL_REVISION2
702
703#define EFI_EXTRA_DESCRIPTOR_SIZE 8
704
705#define EFI_MP_SERVICES_PROTOCOL_GUID \
706 {0x3fdda605, 0xa76e, 0x4f46, {0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08}}
707
708#define PROCESSOR_AS_BSP_BIT 0x00000001
709#define PROCESSOR_ENABLED_BIT 0x00000002
710#define PROCESSOR_HEALTH_STATUS_BIT 0x00000004
711
712#define END_OF_CPU_LIST 0xffffffff
713
714typedef struct EfiIOToken {
715 //
716 // If Event is NULL, then blocking I/O is performed.
717 // If Event is not NULL and non-blocking I/O is supported, then non-blocking
718 // I/O is performed, and Event will be signaled when the read request is
719 // completed. The caller must be prepared to handle the case where the
720 // callback associated with Event occurs before the original asynchronous I/O
721 // request call returns.
722 //
724
725 //
726 // Defines whether or not the signaled event encountered an error.
727 //
729
730 //
731 // For OpenEx(): Not Used, ignored.
732 // For ReadEx(): On input, the size of the Buffer. On output, the amount of
733 // data returned in Buffer.
734 // In both cases, the size is measured in bytes.
735 // For WriteEx(): On input, the size of the Buffer. On output, the amount of
736 // data actually written.
737 // In both cases, the size is measured in bytes.
738 // For FlushEx(): Not used, ignored.
739 //
741
742 //
743 // For OpenEx(): Not Used, ignored.
744 // For ReadEx(): The buffer into which the data is read.
745 // For WriteEx(): The buffer of data to write.
746 // For FlushEx(): Not Used, ignored.
747 //
750
785
787
801
802#define EFI_FILE_INFO_GUID \
803 {0x09576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}}
804
805struct EfiFileInfo EFI_FINAL {
822};
823
824//*******************************************************
825// EFI_CPU_PHYSICAL_LOCATION
826// @note As in the EFI specs.
827//*******************************************************
833
837
844
846 IN struct _EfiMpServicesProtocol* Self, OUT UInt32* NumberOfProcessors,
847 OUT UInt32* NumberOfEnabledProcessors);
848
850 IN struct _EfiMpServicesProtocol* Self, IN UInt32* ProcessorNumber,
851 OUT struct _EfiProcessorInformation* NumberOfEnabledProcessors);
852
853typedef void EFI_API (*EFI_AP_PROCEDURE)(IN VoidPtr ProcedureArgument);
854
856 IN struct _EfiMpServicesProtocol* Self, IN EFI_AP_PROCEDURE Procedure, IN Boolean SingleThread,
857 IN VoidPtr WaitEvent OPTIONAL, // EFI_EVENT first, but unused here.
858 IN UInt32 TimeoutInMicroSeconds, IN Void* ProcedureArgument OPTIONAL,
859 OUT UInt32** FailedCpuList OPTIONAL);
860
862 IN UInt32 ProcessorNumber,
863 IN Boolean EnableOldBSP);
864
866 IN struct _EfiMpServicesProtocol* Self, IN EFI_AP_PROCEDURE Procedure,
867 IN UInt32 ProcessorNumber, IN VoidPtr WaitEvent OPTIONAL, IN UInt32 TimeoutInMicroseconds,
868 IN Void* ProcedureArgument OPTIONAL, OUT Boolean* Finished OPTIONAL);
869
871 IN UInt32 ProcessorNumber,
872 IN Boolean EnableAP,
873 IN UInt32* HealthFlag OPTIONAL);
874
876 OUT UInt32* ProcessorNumber);
877
887
888#endif // ifndef FIRMWARE_KIT_EFI_H
EfiStatusType EFI_API(* EfiMpServicesStartupThisAP)(IN struct _EfiMpServicesProtocol *Self, IN EFI_AP_PROCEDURE Procedure, IN UInt32 ProcessorNumber, IN VoidPtr WaitEvent OPTIONAL, IN UInt32 TimeoutInMicroseconds, IN Void *ProcedureArgument OPTIONAL, OUT Boolean *Finished OPTIONAL)
Definition EFI.h:865
WideChar EfiCharType
Definition EFI.h:63
EfiStatusType(EFI_API * EfiWaitForEvent)(IN UInt32 NumberOfEvents, IN VoidPtr Event, OUT UInt32 *Index)
Definition EFI.h:591
UInt64(EFI_API * EfiOpenProtocol)(EfiHandlePtr Handle, EFI_GUID *Guid, VoidPtr *Interface, EfiHandlePtr AgentHandle, EfiHandlePtr ControllerHandle, UInt32 Attributes)
Definition EFI.h:501
UInt64(EFI_API * EfiGetMemoryMap)(UInt32 *MapSize, EfiMemoryDescriptor *DescPtr, UInt32 *MapKey, UInt32 *DescSize, UInt32 *DescVersion)
Definition EFI.h:470
EfiStatusType EFI_API(* EfiMpServicesWhoAmI)(IN struct _EfiMpServicesProtocol *Self, OUT UInt32 *ProcessorNumber)
Definition EFI.h:875
UInt64 EfiStatusType
Definition EFI.h:53
EFI_STATUS(EFIAPI * EFI_SIMPLE_NETWORK_RESET)(IN EFI_SIMPLE_NETWORK_PROTOCOL *This, IN Boolean ExtendedVerification)
Definition EFI.h:299
#define EFI_FINAL
Definition EFI.h:34
UInt64(EFI_API * EfiTextClear)(struct EfiSimpleTextOutputProtocol *Self)
Definition EFI.h:79
UInt64(EFI_API * EfiOpenVolume)(struct EfiSimpleFilesystemProtocol *, struct EfiFileProtocol **)
@biref Open Volume procedure ptr.
Definition EFI.h:601
UInt64(EFI_API * EfiLoadFile)(EfiLoadFileProtocol *Self, EfiFileDevicePathProtocol *FilePath, Boolean BootPolicy, UInt32 *BufferSize, VoidPtr Buffer)
Definition EFI.h:81
EFI_STATUS(EFIAPI * EFI_SIMPLE_NETWORK_SHUTDOWN)(IN EFI_SIMPLE_NETWORK_PROTOCOL *This)
Definition EFI.h:302
UInt64(EFI_API * EfiCopyMem)(VoidPtr DstBuf, VoidPtr SrcBuf, SizeT Length)
Definition EFI.h:84
EfiStatusType(EFI_API * EfiInputReadKey)(IN EfiSimpleTextInputProtocol *This, OUT EfiInputKey *Key)
Definition EFI.h:585
UInt64 EfiPhysicalAddress
Definition EFI.h:65
UInt64(EFI_API * EfiGraphicsOutputProtocolBlt)(EfiGraphicsOutputProtocol *Self, EfiGraphicsOutputBltPixel *BltBuffer, EfiGraphicsOutputProtocolBltOperation BltOperation, UInt32 SourceX, UInt32 SourceY, UInt32 DestinationX, UInt32 DestinationY, UInt32 Width, UInt32 Height, UInt32 Delta)
Definition EFI.h:401
EfiStatusType EFI_API(* EfiMpServicesSwitchBSP)(IN struct _EfiMpServicesProtocol *Self, IN UInt32 ProcessorNumber, IN Boolean EnableOldBSP)
Definition EFI.h:861
struct _EfiCPUPhyiscalLocation EfiCPUPhyiscalLocation
UInt64(EFI_API * EfiSetMem)(VoidPtr DstBuf, Char Byte, SizeT Length)
Definition EFI.h:86
UInt8 EfiMacAddress[32]
Definition EFI.h:304
UInt64(EFI_API * EfiLocateDevicePath)(EFI_GUID *Protocol, EfiDevicePathProtocol **DevicePath, EfiHandlePtr Device)
Definition EFI.h:90
UInt64(EFI_API * EfiFreePages)(EfiPhysicalAddress *Memory, UInt32 Pages)
Definition EFI.h:468
EfiMemoryType
EFI pool helpers, taken from iPXE.
Definition EFI.h:101
@ EfiUnusableMemory
Definition EFI.h:142
@ EfiBootServicesData
Definition EFI.h:124
@ EfiMaxMemoryType
Definition EFI.h:181
@ EfiPersistentMemory
Definition EFI.h:171
@ EfiReservedMemoryType
Definition EFI.h:105
@ EfiBootServicesCode
Definition EFI.h:119
@ EfiConventionalMemory
Definition EFI.h:138
@ EfiLoaderData
Definition EFI.h:115
@ EfiACPIMemoryNVS
Definition EFI.h:150
@ EfiMemoryMappedIOPortSpace
Definition EFI.h:161
@ EfiACPIReclaimMemory
Definition EFI.h:146
@ EfiLoaderCode
Definition EFI.h:110
@ EfiMemoryMappedIO
Definition EFI.h:156
@ EfiUnacceptedMemoryType
Definition EFI.h:176
@ EfiPalCode
Definition EFI.h:166
@ EfiRuntimeServicesCode
Definition EFI.h:128
@ EfiRuntimeServicesData
Definition EFI.h:134
struct _EfiMpServicesProtocol EfiMpServicesProtocol
struct EFI_GUID EFI_FINAL EFI_GUID
GUID type, something you can also find in CFKit.
EfiGraphicsOutputProtocolBltOperation
Definition EFI.h:377
@ EfiBltVideoToBltBuffer
Definition EFI.h:379
@ EfiBltBufferToVideo
Definition EFI.h:380
@ EfiGraphicsOutputBltOperationMax
Definition EFI.h:382
@ EfiBltVideoFill
Definition EFI.h:378
@ EfiBltVideoToVideo
Definition EFI.h:381
EfiAllocateType
Definition EFI.h:184
@ AllocateMaxAddress
Definition EFI.h:187
@ AllocateAddress
Definition EFI.h:191
@ AllocateAnyPages
Anything that satisfy the request.
Definition EFI.h:186
@ MaxAllocateType
Definition EFI.h:195
UInt64(EFI_API * EfiCalculateCrc32)(VoidPtr Data, UInt32 DataSize, UInt32 *CrcOut)
Definition EFI.h:229
UIntPtr EfiVirtualAddress
Definition EFI.h:66
UInt64 EfiImageUnload(EfiHandlePtr ImageHandle)
Definition EFI.h:279
UInt64(EFI_API * EfiEnableCursor)(EfiSimpleTextOutputProtocol *Self, Boolean Visible)
Definition EFI.h:505
EFI_STATUS(EFI_API * EFI_SIMPLE_NETWORK_START)(IN EFI_SIMPLE_NETWORK_PROTOCOL *This)
Definition EFI.h:291
EfiStatusType EFI_API(* EfiMpServicesStartupAllAPS)(IN struct _EfiMpServicesProtocol *Self, IN EFI_AP_PROCEDURE Procedure, IN Boolean SingleThread, IN VoidPtr WaitEvent OPTIONAL, IN UInt32 TimeoutInMicroSeconds, IN Void *ProcedureArgument OPTIONAL, OUT UInt32 **FailedCpuList OPTIONAL)
Definition EFI.h:855
struct EfiFileProtocol * EfiFileProtocolPtr
UInt64(EFI_API * EfiLocateProtocol)(EFI_GUID *Protocol, VoidPtr Registration, VoidPtr *Interface)
Definition EFI.h:498
EfiStatusType(EFI_API * EfiInputReset)(IN EfiSimpleTextInputProtocol *This, IN Boolean ExtendedChk)
Definition EFI.h:588
#define MAX_MCAST_FILTER_CNT
Definition EFI.h:306
UInt64 EfiCursorType
Definition EFI.h:786
UInt64(EFI_API * EfiGraphicsOutputProtocolQueryMode)(EfiGraphicsOutputProtocol *Self, UInt32 ModeNumber, UInt32 *SizeOfInfo, EfiGraphicsOutputProtocolModeInformation **Info)
Definition EFI.h:394
@ kEFIBiosBootPath
Definition EFI.h:675
@ kEFIAcpiDevicePath
Definition EFI.h:672
@ kEFIEndOfPath
Definition EFI.h:676
@ kEFIMediaDevicePath
Definition EFI.h:674
@ kEFICount
Definition EFI.h:677
@ kEFIHwDevicePath
Definition EFI.h:671
@ kEFIMessaingDevicePath
Definition EFI.h:673
UInt64(EFI_API * EfiStartImage)(EfiHandlePtr Handle, VoidPtr ArgsSize, VoidPtr ArgsPtr)
Definition EFI.h:93
Char16 EfiChar16Type
Definition EFI.h:55
@ kPixelRedGreenBlueReserved8BitPerColor
Definition EFI.h:282
@ kPixelFormatMax
Definition EFI.h:286
@ kPixelBlueGreenRedReserved8BitPerColor
Definition EFI.h:283
@ kPixelBltOnly
Definition EFI.h:285
@ kPixelBitMask
Definition EFI.h:284
struct _EfiProcessorInformation EfiProcessorInformation
#define EFIAPI
Definition EFI.h:25
UInt64(EFI_API * EfiLoadImage)(Boolean BootPolicy, EfiHandlePtr ParentHandle, EfiFileDevicePathProtocol *DeviceFile, VoidPtr buffer, SizeT size, EfiHandlePtr *ppHandle)
Definition EFI.h:95
union _EfiExtendedProcessorInformation EfiExtendedProcessorInformation
UInt64(EFI_API * EfiTextAttrib)(struct EfiSimpleTextOutputProtocol *Self, const WideChar Attribute)
Definition EFI.h:76
struct EfiHandle * EfiHandlePtr
Core Handle Kind Self is like NT's Win32 HANDLE type.
EFI_STATUS(EFI_API * EFI_SIMPLE_NETWORK_STOP)(IN EFI_SIMPLE_NETWORK_PROTOCOL *This)
Definition EFI.h:293
#define EFI_STATUS
Definition EFI.h:32
EfiStatusType EFI_API(* EfiMpServicesDisableThisAP)(IN struct _EfiMpServicesProtocol *Self, IN UInt32 ProcessorNumber, IN Boolean EnableAP, IN UInt32 *HealthFlag OPTIONAL)
Definition EFI.h:870
EfiStatusType EFI_API(* EfiMpServicesGetProcessorInfo)(IN struct _EfiMpServicesProtocol *Self, IN UInt32 *ProcessorNumber, OUT struct _EfiProcessorInformation *NumberOfEnabledProcessors)
Definition EFI.h:849
EFI_STATUS(EFIAPI * EFI_SIMPLE_NETWORK_TRANSMIT)(IN EFI_SIMPLE_NETWORK_PROTOCOL *This, IN UInt32 HeaderSize, IN UInt32 BufferSize, IN Void *Buffer, IN EfiMacAddress *SrcAddr OPTIONAL, IN EfiMacAddress *DestAddr OPTIONAL, IN UInt16 *Protocol OPTIONAL)
Definition EFI.h:330
#define IN
Definition EFI.h:28
UInt64(EFI_API * EfiExitBootServices)(VoidPtr ImageHandle, UInt32 MapKey)
Definition EFI.h:463
UInt64(EFI_API * EfiGraphicsOutputProtocolSetMode)(EfiGraphicsOutputProtocol *Self, UInt32 ModeNumber)
Definition EFI.h:398
UInt64(EFI_API * EfiFreePool)(VoidPtr Buffer)
Definition EFI.h:227
UInt64(EFI_API * EfiHandleProtocol)(EfiHandlePtr Handle, EFI_GUID *Guid, VoidPtr *Device)
Definition EFI.h:88
UInt64(EFI_API * EfiAllocatePages)(EfiAllocateType AllocType, EfiMemoryType MemType, UInt32 Count, EfiPhysicalAddress *Memory)
Definition EFI.h:465
void EFI_API(* EFI_AP_PROCEDURE)(IN VoidPtr ProcedureArgument)
Definition EFI.h:853
UInt64(EFI_API * EfiTextString)(struct EfiSimpleTextOutputProtocol *Self, const WideChar *OutputString)
Definition EFI.h:73
EFI_STATUS(EFIAPI * EFI_SIMPLE_NETWORK_RECEIVE)(IN EFI_SIMPLE_NETWORK_PROTOCOL *This, OUT UInt32 *HeaderSize OPTIONAL, IN OUT UInt32 *BufferSize, OUT Void *Buffer, OUT EfiMacAddress *SrcAddr OPTIONAL, OUT EfiMacAddress *DestAddr OPTIONAL, OUT UInt16 *Protocol OPTIONAL)
Definition EFI.h:337
#define EFI_API
Definition EFI.h:21
EfiStatusType EFI_API(* EfiMpServicesGetNumberOfProcessors)(IN struct _EfiMpServicesProtocol *Self, OUT UInt32 *NumberOfProcessors, OUT UInt32 *NumberOfEnabledProcessors)
Definition EFI.h:845
#define OUT
Definition EFI.h:29
UInt64(EFI_API * EfiAllocatePool)(EfiMemoryType PoolType, UInt32 Size, VoidPtr *Buffer)
Definition EFI.h:225
EFI_STATUS(EFI_API * EFI_SIMPLE_NETWORK_INITIALIZE)(IN EFI_SIMPLE_NETWORK_PROTOCOL *This, IN UInt32 ExtraRxBufferSize OPTIONAL, IN UInt32 ExtraTxBufferSize OPTIONAL)
Definition EFI.h:295
#define OPTIONAL
Definition EFI.h:30
#define kPathLen
#define BOOL
Device type.
Definition Device.h:14
UPS inline definitions.
Definition Device.h:12
char Char
Definition Config.h:51
void Void
Definition Config.h:87
__SIZE_TYPE__ Size
Definition Config.h:59
__UINT16_TYPE__ UInt16
Definition Config.h:40
__SIZE_TYPE__ SizeT
Definition Config.h:60
__UINT8_TYPE__ UInt8
Definition Config.h:55
__UINT32_TYPE__ UInt32
Definition Config.h:44
void * VoidPtr
Definition Config.h:33
char16_t Char16
Definition Config.h:92
__INT16_TYPE__ Int16
Definition Config.h:42
bool Boolean
Definition Config.h:49
__UINTPTR_TYPE__ UIntPtr
Definition Config.h:62
@ Count
Definition DMA.h:21
__UINT64_TYPE__ UInt64
Definition Config.h:48
wchar_t WideChar
Definition Config.h:77
Definition EFI.h:828
UInt32 Core
Definition EFI.h:830
UInt32 Thread
Definition EFI.h:831
UInt32 Package
Definition EFI.h:829
Definition EFI.h:878
EfiMpServicesStartupThisAP StartupThisAP
Definition EFI.h:882
EfiMpServicesGetNumberOfProcessors GetNumberOfProcessors
Definition EFI.h:879
EfiMpServicesDisableThisAP EnableDisableAP
Definition EFI.h:884
EfiMpServicesWhoAmI WhoAmI
Definition EFI.h:885
EfiMpServicesGetProcessorInfo GetProcessorInfo
Definition EFI.h:880
EfiMpServicesStartupAllAPS StartupAllAPs
Definition EFI.h:881
EfiMpServicesSwitchBSP SwitchBSP
Definition EFI.h:883
Definition EFI.h:838
EfiExtendedProcessorInformation ExtendedInformation
Definition EFI.h:842
UInt64 ProcessorId
Definition EFI.h:839
UInt32 StatusFlag
Definition EFI.h:840
EfiCPUPhyiscalLocation Location
Definition EFI.h:841
GUID type, something you can also find in CFKit.
Definition EFI.h:476
UInt64 FileSize
File size.
Definition EFI.h:809
UInt32 Data1
Definition EFI.h:477
UInt16 Data2
Definition EFI.h:478
UInt8 Data4[8]
Definition EFI.h:480
UInt64 Attribute
Attributes.
Definition EFI.h:819
EfiTime EditTime
Edit time.
Definition EFI.h:817
UInt16 Data3
Definition EFI.h:479
UInt64 Size
Structure size.
Definition EFI.h:807
UInt64 PhysicalSize
Physical size on disk.
Definition EFI.h:811
WideChar FileName[1]
VLA file name.
Definition EFI.h:821
EfiTime LastAccessTime
Last access time.
Definition EFI.h:815
EfiTime CreateTime
Create time.
Definition EFI.h:813
Definition EFI.h:308
EfiMacAddress CurrentAddress
Definition EFI.h:320
EfiMacAddress MCastFilter[MAX_MCAST_FILTER_CNT]
Definition EFI.h:319
EfiMacAddress PermanentAddress
Definition EFI.h:322
UInt32 MediaHeaderSize
Definition EFI.h:311
UInt32 ReceiveFilterMask
Definition EFI.h:315
UInt8 IfType
Definition EFI.h:323
UInt32 State
Definition EFI.h:309
EfiMacAddress BroadcastAddress
Definition EFI.h:321
BOOL MacAddressChangeable
Definition EFI.h:324
UInt32 ReceiveFilterSetting
Definition EFI.h:316
UInt32 NvRamAccessSize
Definition EFI.h:314
UInt32 NvRamSize
Definition EFI.h:313
UInt32 MaxPacketSize
Definition EFI.h:312
BOOL MultipleTxSupported
Definition EFI.h:325
UInt32 HwAddressSize
Definition EFI.h:310
UInt32 MaxMCastFilterCount
Definition EFI.h:317
BOOL MediaPresent
Definition EFI.h:327
UInt32 MCastFilterCount
Definition EFI.h:318
BOOL MediaPresentSupported
Definition EFI.h:326
Definition EFI.h:344
VoidPtr WaitForPacket
Definition EFI.h:359
EFI_SIMPLE_NETWORK_TRANSMIT Transmit
Definition EFI.h:357
VoidPtr MCastIpToMac
Definition EFI.h:354
EFI_SIMPLE_NETWORK_INITIALIZE Initialize
Definition EFI.h:348
VoidPtr ReceiveFilters
Definition EFI.h:351
EFI_SIMPLE_NETWORK_START Start
Definition EFI.h:346
EFI_SIMPLE_NETWORK_SHUTDOWN Shutdown
Definition EFI.h:350
EFI_SIMPLE_NETWORK_MODE * Mode
Definition EFI.h:360
EFI_SIMPLE_NETWORK_RESET Reset
Definition EFI.h:349
VoidPtr NvData
Definition EFI.h:355
EFI_SIMPLE_NETWORK_RECEIVE Receive
Definition EFI.h:358
UInt64 Revision
Definition EFI.h:345
VoidPtr StationAddress
Definition EFI.h:352
VoidPtr Statistics
Definition EFI.h:353
EFI_SIMPLE_NETWORK_STOP Stop
Definition EFI.h:347
VoidPtr GetStatus
Definition EFI.h:356
Definition EFI.h:363
UInt32 ReservedMask
Definition EFI.h:367
UInt32 GreenMask
Definition EFI.h:365
UInt32 RedMask
Definition EFI.h:364
UInt32 BlueMask
Definition EFI.h:366
Definition EFI.h:512
UInt64 WatchdogCode
Definition EFI.h:543
VoidPtr OpenProtocolInformation
Definition EFI.h:549
VoidPtr RegisterProtocolNotify
Definition EFI.h:532
EfiAllocatePool AllocatePool
Definition EFI.h:519
EfiLocateDevicePath LocateDevicePath
Definition EFI.h:534
EfiCalculateCrc32 CalculateCrc32
Definition EFI.h:555
VoidPtr CloseEvent
Definition EFI.h:525
VoidPtr UnloadImage
Definition EFI.h:539
VoidPtr CloseProtocol
Definition EFI.h:548
EfiLoadImage LoadImage
Definition EFI.h:536
VoidPtr GetNextMonotonicCount
Definition EFI.h:541
VoidPtr LocateHandle
Definition EFI.h:533
VoidPtr UninstallProtocolInterface
Definition EFI.h:529
EfiExitBootServices ExitBootServices
Definition EFI.h:540
EfiFreePool FreePool
Definition EFI.h:520
VoidPtr ReinstallProtocolInterface
Definition EFI.h:528
VoidPtr InstallMultipleProtocolInterfaces
Definition EFI.h:553
VoidPtr CreateEventEx
Definition EFI.h:558
VoidPtr Stall
Definition EFI.h:542
EfiAllocatePages AllocatePages
Definition EFI.h:516
EfiSetMem SetMem
Definition EFI.h:557
VoidPtr InstallConfigurationTable
Definition EFI.h:535
VoidPtr RestoreTPL
Definition EFI.h:515
VoidPtr SignalEvent
Definition EFI.h:524
UInt64 UInt32 EfiCharType * Data
Definition EFI.h:544
VoidPtr UninstallMultipleProtocolInterfaces
Definition EFI.h:554
VoidPtr RaiseTPL
Definition EFI.h:514
VoidPtr InstallProtocolInterface
Definition EFI.h:527
EfiCopyMem CopyMem
Definition EFI.h:556
VoidPtr DriveonnectController
Definition EFI.h:546
VoidPtr Exit
Definition EFI.h:538
EfiTableHeader SystemTable
Definition EFI.h:513
VoidPtr Reserved
Definition EFI.h:531
EfiLocateProtocol LocateProtocol
Definition EFI.h:552
EfiStartImage StartImage
Definition EFI.h:537
EfiGetMemoryMap GetMemoryMap
Definition EFI.h:518
VoidPtr CreateEvent
Definition EFI.h:521
EfiOpenProtocol OpenProtocol
Definition EFI.h:547
VoidPtr SetTimer
Definition EFI.h:522
EfiHandleProtocol HandleProtocol
Definition EFI.h:530
EfiFreePages FreePages
Definition EFI.h:517
VoidPtr ProtocolsPerHandle
Definition EFI.h:550
VoidPtr ConnectController
Definition EFI.h:545
VoidPtr CheckEvent
Definition EFI.h:526
VoidPtr LocateHandleBuffer
Definition EFI.h:551
UInt64 UInt32 DataSize
Definition EFI.h:543
VoidPtr WaitForEvent
Definition EFI.h:523
Definition EFI.h:448
UInt8 Length[2]
Definition EFI.h:451
UInt8 Kind
Definition EFI.h:449
UInt8 SubType
Definition EFI.h:450
Definition EFI.h:454
WideChar Path[kPathLen]
Definition EFI.h:460
EfiDevicePathProtocol Proto
Definition EFI.h:455
Definition EFI.h:751
struct EFI_GUID UInt32 void struct EFI_GUID UInt32 void * EfiStatusType(EFI_API *Flush)(EfiFileProtocol *)
EfiStatusType(EFI_API *Open)(struct EfiFileProtocol *Self
struct EFI_GUID UInt32 void * EfiStatusType(EFI_API *SetInfo)(struct EfiFileProtocol *
struct EfiFileProtocol EfiCharType UInt64 OpenMode
Definition EFI.h:755
EfiStatusType(EFI_API *SetPosition)(EfiFileProtocol *Self
EfiFileProtocol EfiCharType UInt64 Mode
Definition EFI.h:776
struct EfiFileProtocol EfiCharType * CharType
Definition EFI.h:755
EfiStatusType(EFI_API *OpenEx)(EfiFileProtocol *Self
EfiFileProtocol EfiCharType UInt64 UInt64 struct EfiIOToken * Token
Definition EFI.h:777
EfiStatusType(EFI_API *GetPosition)(EfiFileProtocol *Self
EfiStatusType(EFI_API *Delete)(struct EfiFileProtocol *Self)
UInt64 Revision
Definition EFI.h:752
struct EfiFileProtocol ** Out
Definition EFI.h:754
EfiFileProtocol EfiCharType * Path
Definition EFI.h:776
EfiStatusType(EFI_API *Close)(struct EfiFileProtocol *Self)
EfiStatusType(EFI_API *ReadEx)(EfiFileProtocol *Self
UInt64 * BufSize
Definition EFI.h:761
EfiStatusType(EFI_API *FlushEx)(EfiFileProtocol *Self
struct EfiFileProtocol EfiCharType UInt64 UInt64 Attrib
Definition EFI.h:755
EfiFileProtocol ** OutHandle
Definition EFI.h:775
EfiStatusType(EFI_API *Write)(struct EfiFileProtocol *Self
EfiStatusType(EFI_API *GetInfo)(struct EfiFileProtocol *
UInt64 * Position
Definition EFI.h:765
UInt64 VoidPtr BufOut
Definition EFI.h:761
EfiStatusType(EFI_API *WriteEx)(EfiFileProtocol *Self
Definition EFI.h:370
UInt8 Red
Definition EFI.h:373
UInt8 Blue
Definition EFI.h:371
UInt8 Reserved
Definition EFI.h:374
UInt8 Green
Definition EFI.h:372
Definition EFI.h:415
EfiGraphicsOutputProtocolBlt Blt
Definition EFI.h:418
EfiGraphicsOutputProtocolSetMode SetMode
Definition EFI.h:417
EfiGraphicsOutputProtocolMode * Mode
Definition EFI.h:419
EfiGraphicsOutputProtocolQueryMode QueryMode
Definition EFI.h:416
Definition EFI.h:406
UInt32 SizeOfInfo
Definition EFI.h:410
UIntPtr FrameBufferBase
Definition EFI.h:411
UInt32 MaxMode
Definition EFI.h:407
UInt32 FrameBufferSize
Definition EFI.h:412
UInt32 Mode
Definition EFI.h:408
EfiGraphicsOutputProtocolModeInformation * Info
Definition EFI.h:409
UInt32 HorizontalResolution
Definition EFI.h:387
UInt32 PixelFormat
Definition EFI.h:389
EfiBitmask PixelInformation
Definition EFI.h:390
UInt32 VerticalResolution
Definition EFI.h:388
UInt32 Version
Definition EFI.h:386
UInt32 PixelsPerScanLine
Definition EFI.h:391
Core Handle Kind Self is like NT's Win32 HANDLE type.
Definition EFI.h:59
Definition EFI.h:714
Void * Buffer
Definition EFI.h:748
UInt64 Status
Definition EFI.h:728
UInt64 Event
Definition EFI.h:723
UInt32 BufferSize
Definition EFI.h:740
Definition EFI.h:653
UInt8 Addr[4]
Definition EFI.h:654
Definition EFI.h:660
UInt8 Addr[16]
Definition EFI.h:661
Definition EFI.h:580
EfiChar16Type UnicodeChar
Definition EFI.h:582
UInt16 ScanCode
Definition EFI.h:581
Definition EFI.h:444
EfiLoadFile LoadFile
Definition EFI.h:445
Definition EFI.h:422
EfiDevicePathProtocol * FilePath
Definition EFI.h:429
UInt32 LoadOptionsSize
Definition EFI.h:433
Void * ImageBase
Definition EFI.h:437
EfiMemoryType ImageCodeType
Definition EFI.h:439
EfiImageUnload Unload
Definition EFI.h:441
EfiHandlePtr DeviceHandle
Definition EFI.h:428
UInt32 Revision
Definition EFI.h:423
EfiMemoryType ImageDataType
Definition EFI.h:440
EfiHandlePtr ParentHandle
Definition EFI.h:424
EfiSystemTable * SystemTable
Definition EFI.h:425
Void * LoadOptions
Definition EFI.h:434
Void * Reserved
Definition EFI.h:430
UInt64 ImageSize
Definition EFI.h:438
Definition EFI.h:198
UInt64 Attribute
Definition EFI.h:222
EfiPhysicalAddress PhysicalStart
Physical address of the first byte in the memory region. PhysicalStart.
Definition EFI.h:203
UInt64 NumberOfPages
Definition EFI.h:216
EfiVirtualAddress VirtualStart
Definition EFI.h:209
UInt32 Kind
Kind of the memory region.
Definition EFI.h:200
Definition EFI.h:609
EFI_GUID UInt32 UInt32 * DataSize
Definition EFI.h:613
EfiTableHeader SystemTable
Definition EFI.h:610
VoidPtr QueryCapsuleCapabilites
Definition EFI.h:620
VoidPtr GetTime
Definition EFI.h:611
VoidPtr SetTime
Definition EFI.h:611
VoidPtr ResetSystem
Definition EFI.h:618
VoidPtr UpdateCapsule
Definition EFI.h:619
VoidPtr ConvertPointer
Definition EFI.h:611
VoidPtr SetVirtualAddressMap
Definition EFI.h:611
VoidPtr GetNextVariable
Definition EFI.h:614
UInt64(EFI_API *SetVariable)(const WideChar *Name
VoidPtr SetWakeupTime
Definition EFI.h:611
EFI_GUID UInt32 UInt32 VoidPtr Data
Definition EFI.h:613
VoidPtr QueryVariableInfo
Definition EFI.h:621
VoidPtr GetNextHighMonotonicCount
Definition EFI.h:617
VoidPtr GetWakeupTime
Definition EFI.h:611
EFI_GUID UInt32 * Attributes
Definition EFI.h:612
EFI_GUID VendorGUID
Definition EFI.h:612
Definition EFI.h:604
UInt64 Revision
Definition EFI.h:605
EfiOpenVolume OpenVolume
Definition EFI.h:606
Definition EFI.h:594
EfiInputReset Reset
Definition EFI.h:595
EfiWaitForEvent WaitForKey
Definition EFI.h:597
EfiInputReadKey ReadKeyStroke
Definition EFI.h:596
PrintF like protocol.
Definition EFI.h:567
EfiTextString OutputString
Definition EFI.h:569
VoidPtr Mode
Definition EFI.h:577
EfiTextAttrib SetAttribute
Definition EFI.h:573
VoidPtr Reset
Definition EFI.h:568
EfiEnableCursor EnableCursor
Definition EFI.h:576
VoidPtr SetMode
Definition EFI.h:572
VoidPtr TestString
Definition EFI.h:570
VoidPtr QueryMode
Definition EFI.h:571
VoidPtr SetCursorPosition
Definition EFI.h:575
EfiTextClear ClearScreen
Definition EFI.h:574
The Structure that they give you when booting.
Definition EFI.h:627
EFI_GUID VendorGUID
Definition EFI.h:642
EfiHandlePtr ConsoleInHandle
Definition EFI.h:631
EfiRuntimeServices * RuntimeServices
Definition EFI.h:637
VoidPtr VendorTable
Definition EFI.h:643
UInt64 NumberOfTableEntries
Definition EFI.h:639
struct EfiSystemTable::@055310371001216205017347353353135265114230242055 * ConfigurationTable
The configuration table (contains the RSD PTR entry.).
WideChar * FirmwareVendor
Definition EFI.h:629
EfiSimpleTextOutputProtocol * ConOut
Definition EFI.h:634
EfiHandlePtr StandardErrorHandle
Definition EFI.h:635
EfiHandlePtr ConsoleOutHandle
Definition EFI.h:633
EfiBootServices * BootServices
Definition EFI.h:638
EfiSimpleTextInputProtocol * ConIn
Definition EFI.h:632
VoidPtr StdErr
Definition EFI.h:636
EfiTableHeader SystemHeader
Definition EFI.h:628
UInt32 FirmwareRevision
Definition EFI.h:630
Present in every header, used to identify a UEFI structure.
Definition EFI.h:234
UInt32 Reserved
Definition EFI.h:239
UInt64 Signature
Definition EFI.h:235
UInt32 Crc32
Definition EFI.h:238
UInt32 HeaderSize
Definition EFI.h:237
UInt32 Revision
Definition EFI.h:236
Definition EFI.h:788
UInt8 Hour
Definition EFI.h:792
UInt8 Second
Definition EFI.h:794
UInt8 Month
Definition EFI.h:790
Int16 TimeZone
Definition EFI.h:797
UInt8 Minute
Definition EFI.h:793
UInt8 Daylight
Definition EFI.h:798
UInt8 Pad2
Definition EFI.h:799
UInt8 Pad1
Definition EFI.h:795
UInt16 Year
Definition EFI.h:789
UInt32 Nanosecond
Definition EFI.h:796
UInt8 Day
Definition EFI.h:791
EfiCPUPhyiscalLocation Location2
Definition EFI.h:835