unit uefi;
interface
type efi_guid=record
data1:dword;
data2:word;
data3:word;
data4:array[0..7] of byte;
end;
Pefi_guid=^efi_guid;
PPefi_guid=^Pefi_guid;
PPPefi_guid=^PPefi_guid;
efi_table_header=record
signature:qword;
revision:dword;
headersize:dword;
crc32:dword;
reserved:dword;
end;
efi_handle=pointer;
Pefi_handle=^pointer;
PPefi_handle=^Pefi_handle;
efi_event=pointer;
Pefi_event=^pointer;
PPefi_event=^Pefi_event;
efi_physical_address=qword;
efi_virtual_address=qword;
efi_input_key=record
scancode:word;
UnicodeChar:WideChar;
end;
efi_status=NatUint;
Pefi_simple_text_input_protocol=^efi_simple_text_input_protocol;
efi_input_reset=function (This:Pefi_simple_text_input_protocol;ExtendedVerification:boolean):EFI_STATUS;
efi_input_read_key=function (This:Pefi_simple_text_input_protocol;var key:efi_input_key):EFI_STATUS;
efi_simple_text_input_protocol=record
Reset:efi_input_reset;
ReadKeyStroke:efi_input_read_key;
WaitForKey:efi_event;
end;
Pefi_simple_text_output_protocol=^efi_simple_text_output_protocol;
simple_text_output_mode=record
MaxMode:integer;
SAttribute:integer;
CursorColumn:integer;
CursorRow:integer;
CursorVisible:boolean;
end;
efi_text_reset=function (This:Pefi_simple_text_output_protocol;ExtendedVerification:boolean):efi_status;
efi_text_output_string=function (This:Pefi_simple_text_output_protocol;efistring:PWideChar):efi_status;
efi_text_test_string=function (This:Pefi_simple_text_output_protocol;efistring:PWideChar):efi_status;
efi_text_query_mode=function (This:Pefi_simple_text_output_protocol;Modenumber:NatUint;var Columns,Rows:NatUint):efi_status;
efi_text_set_mode=function (This:Pefi_simple_text_output_protocol;Modenumber:NatUint):efi_status;
efi_text_set_attribute=function (This:Pefi_simple_text_output_protocol;eattribute:NatUint):efi_status;
efi_text_clear_screen=function (This:Pefi_simple_text_output_protocol):efi_status;
efi_text_set_cursor_position=function (This:Pefi_simple_text_output_protocol;column,row:Natuint):efi_status;
efi_text_enable_cursor=function (This:Pefi_simple_text_output_protocol;visible:boolean):efi_status;
efi_simple_text_output_protocol=record
Reset:efi_text_reset;
Outputstring:efi_text_output_string;
Teststring:efi_text_test_string;
QueryMode:efi_text_query_mode;
SetMode:efi_text_set_mode;
SetAttribute:efi_text_set_attribute;
clearscreen:efi_text_clear_screen;
setcursorposition:efi_text_set_cursor_position;
enablecursor:efi_text_enable_cursor;
mode:^simple_text_output_mode;
end;
efi_time=record
year:word;
month:byte;
day:byte;
hour:byte;
minute:byte;
second:byte;
pad1:byte;
nanosecond:longword;
timezone:smallint;
daylight:byte;
pad2:byte;
end;
Pefi_time=^efi_time;
efi_time_capabilities=record
resolution:dword;
accuracy:dword;
SetsToZero:boolean;
end;
Pefi_time_capabilities=^efi_time_capabilities;
efi_memory_descriptor=record
efitype:longword;
physicalstart:efi_physical_address;
virtualstart:efi_virtual_address;
NumberofPages:qword;
efiAttribute:qword;
end;
Pefi_memory_descriptor=^efi_memory_descriptor;
efi_get_time=function (var Time:Pefi_time;var Capabilities:Pefi_time_capabilities):efi_status;cdecl;
efi_set_time=function (Time:Pefi_time):efi_status;cdecl;
efi_get_wakeup_time=function (var Enabled,Pending:boolean;var Time:Pefi_time):efi_status;cdecl;
efi_set_wakeup_time=function (enabled:boolean;Time:Pefi_time):efi_status;cdecl;
efi_set_virtual_address_map=function (MemoryMapSize,DescriptorSize:NatUint;DescriptorVersion:dword;VirtualMap:Pefi_memory_descriptor):efi_status;cdecl;
efi_convert_pointer=function (DebugPosition:NatUint;Address:PPointer):efi_status;cdecl;
efi_get_variable=function (VariableName:PWideChar;VendorGuid:efi_guid;var attributes:dword;var datasize:NatUint;var data:Pointer):efi_Status;cdecl;
efi_get_next_variable_name=function (var VariableNameSize:PNatUint;var VariableName:PWidechar;var VendorGuid:Pefi_guid):efi_status;cdecl;
efi_set_variable=function (VariableName:PWideChar;VendorGuid:Pefi_guid;Attributes:dword;DataSize:Natuint;Data:Pointer):efi_status;cdecl;
efi_get_next_monotonic_count=function (Highcount:Pdword):efi_Status;cdecl;
efi_reset_type=(EfiResetCold,EfiResetWarm,EfiResetShutDown,EfiResetPlatformSpecific);
Pefi_reset_type=^efi_reset_type;
efi_reset_system=function (ResetType:efi_reset_type;ResetStatus:efi_status;DataSize:Natuint;ResetData:Pointer):efi_status;cdecl;
efi_capsule_block_descriptor=record
efilength:qword;
case Boolean of
True:(DataBlock:efi_physical_address);
False:(ContinuationPointer:efi_physical_address);
end;
efi_capsule_header=record
CapsuleGuid:efi_guid;
headersize:dword;
flags:dword;
CapsuleImageSize:dword;
end;
Pefi_capsule_header=^efi_capsule_header;
PPefi_capsule_header=^Pefi_capsule_header;
efi_update_capsule=function (CapsuleHeaderArray:PPefi_capsule_header;CapsuleCount:NatUint;ScatterGatherList:efi_physical_address):efi_status;cdecl;
efi_query_capsule_capabilities=function (CapsuleHeaderArray:PPefi_capsule_header;CapsuleCount:NatUint;var MaximumCapsuleSize:qword;var ResetType:Pefi_reset_type):efi_status;cdecl;
efi_query_variable_info=function (attributes:dword;MaximumVariableStorageSize,RemainingVariableStorageSize,MaximumVariableSize:Pqword):efi_status;cdecl;
efi_runtime_services=record
hdr:efi_table_header;
Gettime:efi_get_time;
Settime:efi_set_time;
GetWakeupTime:efi_get_wakeup_time;
SetWakeupTime:efi_set_wakeup_time;
SetVirtualAddressMap:efi_set_virtual_address_map;
ConvertPointer:efi_convert_pointer;
getvariable:efi_get_variable;
getnextvariablename:efi_get_next_variable_name;
setvariable:efi_set_variable;
GetNextMonotonicCount:efi_get_next_monotonic_count;
ResetSystem:efi_reset_system;
UpdateCapsule:efi_update_capsule;
QueryCapsuleCapabilities:efi_query_capsule_capabilities;
QueryVariableInfo:efi_query_variable_info;
end;
efi_tpl=NatUint;
efi_raise_tpl=function (NewTpl:efi_tpl):efi_status;cdecl;
efi_restore_tpl=function (OldTpl:efi_tpl):efi_status;cdecl;
efi_allocate_type=(AllocateAnyPages,AllocateMaxAddress,AllocateAddress,MaxAllocateType);
efi_memory_type=(EfiReservedMemoryType,EfiLoaderCode,EfiLoaderData,EfiBootServicesCode,EfiBootServicesData,EfiRuntimeServicesCode,EfiRuntimeServicesData,EfiConventionalMemory,EfiUnusableMemory,EfiACPIReclaimMemory,EfiACPIMemoryNVS,EfiMemoryMappedIO,EfiMemoryMappedIOPortSpace,EfiPalCode,EfiPersistentMemory,EfiUnacceptedMemoryType,EfiMaxMemoryType);
efi_allocate_pages=function (efitype:efi_allocate_type;MemoryType:efi_memory_type;Pages:NatUint;Memory:Pqword):efi_status;cdecl;
efi_free_pages=function (Memory:qword;Pages:NatUint):efi_status;cdecl;
efi_get_memory_map=function (var MemoryMapSize:PNatuint;var Memory_map:Pefi_memory_descriptor;var MapKey,DescriptorSize:PNatUint;var DescriptorVersion:Pdword):efi_status;cdecl;
efi_allocate_pool=function (PoolType:efi_memory_type;Size:NatUint;var Buffer:PPointer):efi_status;cdecl;
efi_free_pool=function (Buffer:Pointer):efi_status;cdecl;
efi_event_notify=function (Event:efi_event;Context:Pointer):efi_status;cdecl;
efi_create_event=function (efitype:dword;NotifyTpl:efi_tpl;NotifyFunction:efi_event_notify;NotifyContext:Pointer;var Event:Pefi_event):efi_status;cdecl;
efi_create_event_ex=function (efitype:dword;NotifyTpl:efi_tpl;NotifyFunction:efi_event_notify;const NotifyContext:Pointer;const EventGroup:Pefi_guid;var Event:Pefi_event):efi_status;cdecl;
efi_timer_delay=(TimerCancel,TimerPeriodic,TimerRelative);
efi_set_timer=function (event:efi_event;efitype:efi_timer_delay;TriggerTime:qword):efi_status;cdecl;
efi_wait_for_event=function (NumberOfEvents:NatUint;Event:efi_event;Index:PNatUint):efi_status;cdecl;
efi_signal_event=function (event:efi_event):efi_status;cdecl;
efi_close_event=function (event:efi_event):efi_status;cdecl;
efi_check_event=function (event:efi_event):efi_status;cdecl;
efi_interface_type=(efi_native_interface);
efi_install_protocol_interface=function (var Handle:Pefi_handle;Protocol:Pefi_guid;InterfaceType:efi_interface_type;efiinterface:Pointer):efi_status;cdecl;
efi_reinstall_protocol_interface=function (Handle:efi_handle;Protocol:Pefi_guid;Oldinterface,Newinterface:Pointer):efi_status;cdecl;
efi_uninstall_protocol_interface=function (Handle:efi_handle;Protocol:Pefi_guid;efiinterface:Pointer):efi_status;cdecl;
efi_handle_protocol=function (Handle:efi_handle;Protocol:Pefi_guid;efiinterface:PPointer):efi_status;cdecl;
efi_register_protocol_notify=function (Protocol:Pefi_guid;Event:efi_event;var Registration:PPointer):efi_status;cdecl;
efi_locate_search_type=(AllHandles,ByRegisterNotify,ByProtocol);
efi_locate_handle=function (SearchType:efi_locate_search_type;Protocol:Pefi_guid;SearchKey:Pointer;var BufferSize:Pointer;var Buffer:Pefi_handle):efi_status;cdecl;
efi_device_path_protocol=record
efitype:byte;
subtype:byte;
efilength:array[0..1] of byte;
end;
Pefi_device_path_protocol=^efi_device_path_protocol;
PPefi_device_path_protocol=^Pefi_device_path_protocol;
efi_locate_device_path=function (Protocol:Pefi_guid;var DevicePath:PPefi_device_path_protocol;Device:Pefi_handle):efi_status;cdecl;
efi_install_configuration_table=function (Guid:Pefi_guid;Table:Pointer):efi_status;cdecl;
efi_image_load=function (BootPolicy:boolean;ParentImageHandle:efi_handle;DevicePath:Pefi_device_path_protocol;SourceBuffer:Pointer;SourceSize:NatUint;var ImageHandle:Pefi_handle):efi_status;cdecl;
efi_image_start=function (ImageHandle:efi_handle;var ExitDataSize:PNatUint;var ExitData:PPWideChar):efi_status;cdecl;
efi_exit=function (ImageHandle:efi_handle;ExitStatus:efi_status;ExitDataSize:NatUInt;ExitData:PWideChar):efi_status;cdecl;
efi_image_unload=function (ImageHandle:efi_handle):efi_status;cdecl;
efi_exit_boot_services=function (ImageHandle:efi_handle;MapKey:NatUint):efi_status;cdecl;
efi_stall=function (Microseconds:NatUint):efi_status;cdecl;
efi_set_watchdog_timer=function (Timeout:NatUint;Watchdogcode:qword;DataSize:NatUint;WatchDogData:PWideChar):efi_status;cdecl;
efi_connect_controller=function (ControllerHandle:efi_handle;DriveImageHandle:Pefi_handle;RemainingDevicePath:Pefi_device_path_protocol;Recursive:boolean):efi_status;cdecl;
efi_disconnect_controller=function (ControllerHandle,DriverImageHandle,ChildHandle:efi_handle):efi_status;cdecl;
efi_open_protocol=function (Handle:efi_handle;Protocol:Pefi_guid;var efiinterface:PPointer;AgentHandle:efi_handle;ControllerHandle:efi_handle;Attributes:dword):efi_status;cdecl;
efi_close_protocol=function (Handle:efi_handle;Protocol:Pefi_guid;AgentHandle:efi_handle;ControllerHandle:efi_handle):efi_status;cdecl;
efi_open_protocol_information_entry=record
AgentHandle,ControllerHandle:efi_handle;
Attributes,OpenCount:dword;
end;
Pefi_open_protocol_information_entry=^efi_open_protocol_information_entry;
PPefi_open_protocol_information_entry=^Pefi_open_protocol_information_entry;
efi_open_protocol_information=function (Handle:efi_handle;Protocol:Pefi_guid;var EntryBuffer:PPefi_open_protocol_information_entry;EntryCount:PNatUint):efi_status;cdecl;
efi_Protocols_Per_Handle=function (Handle:efi_handle;var ProtocolBuffer:PPPefi_guid;var ProtocolBufferCount:PNatUint):efi_status;cdecl;
efi_locate_handle_buffer=function (searchtype:efi_locate_search_type;Protocol:Pefi_guid;SearchKey:Pointer;var noHandles:PNatUint;var Buffer:PPefi_handle):efi_status;cdecl;
efi_install_multiple_protocol_interfaces=function (var Handle:efi_handle;argument:variableargument_list):efi_status;cdecl;
efi_uninstall_multiple_protocol_interfaces=function (var Handle:efi_handle;argument:variableargument_list):efi_status;cdecl;
efi_calculate_crc32=function (Data:Pointer;DataSize:NatUint;var Crc32:Pdword):efi_status;cdecl;
efi_copy_mem=procedure (Destination,Source:Pointer;efilength:NatUint);cdecl;
efi_set_mem=procedure (Buffer:Pointer;size:NatUint;efivalue:byte);cdecl;
efi_boot_services=record
hdr:efi_table_header;
RaiseTPL:efi_raise_tpl;
RestoreTPL:efi_restore_tpl;
AllocatePages:efi_allocate_pages;
FreePages:efi_free_pages;
GetMemoryMap:efi_get_memory_map;
AllocatePool:efi_allocate_pool;
FreePool:efi_free_pool;
CreateEvent:efi_create_event;
SetTimer:efi_set_timer;
WaitForEvent:efi_wait_for_event;
SignalEvent:efi_signal_event;
CloseEvent:efi_close_event;
CheckEvent:efi_check_event;
InstallProtocolInterface:efi_install_protocol_interface;
ReinstallProtocolInterface:efi_reinstall_protocol_interface;
UninstallProtocolInterface:efi_uninstall_protocol_interface;
HandleProtocol:efi_handle_protocol;
RegisterProtocolNotify:efi_register_protocol_notify;
locatehandle:efi_locate_handle;
locatedevicepath:efi_locate_device_path;
InstallConfigurationTable:efi_install_configuration_table;
loadimage:efi_image_load;
startimage:efi_image_start;
efiexit:efi_exit;
unloadimage:efi_image_unload;
exitbootservices:efi_exit_boot_services;
GetNextMonotonicCount:efi_get_next_monotonic_count;
stall:efi_stall;
SetWatchDogTimer:efi_set_watchdog_timer;
ConnectController:efi_connect_controller;
DisconnectController:efi_disconnect_controller;
OpenProtocol:efi_open_protocol;
CloseProtocol:efi_close_protocol;
OpenProtocolInformation:efi_open_protocol_information;
Protocolsperhandle:efi_protocols_per_handle;
LocateHandleBuffer:efi_locate_handle_buffer;
InstallMultipleProtocolInterfaces:efi_install_multiple_protocol_interfaces;
UninstallMultipleProtocolInterfaces:efi_uninstall_multiple_protocol_interfaces;
CalculateCrc32:efi_calculate_crc32;
CopyMem:efi_copy_mem;
SetMem:efi_set_mem;
CreateEventEx:efi_create_event_ex;
end;
efi_configuration_table=record
VendorGuid:efi_guid;
VendorTable:pointer;
end;
efi_system_table=record
hdr:efi_table_header;
FirmWareVendor:^WideChar;
FirmWareRevision:dword;
ConIn:^efi_simple_text_input_protocol;
ConsoleInHandle:efi_handle;
ConOut:^efi_simple_text_output_protocol;
StandardErrorHandle:efi_handle;
StdErr:^efi_simple_text_output_protocol;
RuntimeServices:^efi_runtime_services;
bootservices:^efi_boot_services;
numberofTableEntries:NatUint;
configuration_table:^efi_configuration_table;
end;
Pefi_system_table=^efi_system_table;
implementation
end.