1047 lines
46 KiB
C
1047 lines
46 KiB
C
/**
|
|
* PROJECT: ExectOS
|
|
* COPYRIGHT: See COPYING.md in the top level directory
|
|
* FILE: sdk/xtdk/xtuefi.h
|
|
* DESCRIPTION: XT UEFI support
|
|
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
*/
|
|
|
|
#ifndef __XTDK_XTUEFI_H
|
|
#define __XTDK_XTUEFI_H
|
|
|
|
#include "xtdefs.h"
|
|
#include "xttypes.h"
|
|
#include "xtstruct.h"
|
|
#include "xtcommon.h"
|
|
|
|
|
|
/* EFI Pages related definitions */
|
|
#define EFI_PAGE_SIZE 4096
|
|
#define EFI_PAGE_MASK 0xFFF
|
|
#define EFI_PAGE_SHIFT 12
|
|
|
|
/* DeviceType definitions according to BBS specification */
|
|
#define EFI_BBS_TYPE_FLOPPY 0x01
|
|
#define EFI_BBS_TYPE_HARDDRIVE 0x02
|
|
#define EFI_BBS_TYPE_CDROM 0x03
|
|
#define EFI_BBS_TYPE_PCMCIA 0x04
|
|
#define EFI_BBS_TYPE_USB 0x05
|
|
#define EFI_BBS_TYPE_EMBEDDED_NETWORK 0x06
|
|
#define EFI_BBS_TYPE_DEV 0x80
|
|
#define EFI_BBS_TYPE_UNKNOWN 0xFF
|
|
|
|
/* Basic UEFI types */
|
|
typedef PVOID EFI_EVENT, *PEFI_EVENT;
|
|
typedef PVOID EFI_HANDLE, *PEFI_HANDLE;
|
|
typedef UINT64 EFI_LBA, *PEFI_LBA;
|
|
typedef UINT64 EFI_PHYSICAL_ADDRESS, *PEFI_PHYSICAL_ADDRESS;
|
|
typedef UINT_PTR EFI_STATUS, *PEFI_STATUS;
|
|
typedef UINT_PTR EFI_TPL, *PEFI_TPL;
|
|
typedef UINT64 EFI_VIRTUAL_ADDRESS, *PEFI_VIRTUAL_ADDRESS;
|
|
|
|
/* Enumeration list of EFI memory allocation types */
|
|
typedef enum _EFI_ALLOCATE_TYPE
|
|
{
|
|
AllocateAnyPages,
|
|
AllocateMaxAddress,
|
|
AllocateAddress,
|
|
MaxAllocateType
|
|
} EFI_ALLOCATE_TYPE, *PEFI_ALLOCATE_TYPE;
|
|
|
|
/* Enumeration list of reset types */
|
|
typedef enum _EFI_RESET_TYPE
|
|
{
|
|
EfiResetCold,
|
|
EfiResetWarm,
|
|
EfiResetShutdown
|
|
} EFI_RESET_TYPE, *PEFI_RESET_TYPE;
|
|
|
|
/* Enumeration list of timer delay types */
|
|
typedef enum _EFI_TIMER_DELAY
|
|
{
|
|
TimerCancel,
|
|
TimerPeriodic,
|
|
TimerRelative,
|
|
TimerTypeMax
|
|
} EFI_TIMER_DELAY, *PEFI_TIMER_DELAY;
|
|
|
|
/* Enumeration list of EFI Locate Search Types */
|
|
typedef enum _EFI_LOCATE_SEARCH_TYPE
|
|
{
|
|
AllHandles,
|
|
ByRegisterNotify,
|
|
ByProtocol
|
|
} EFI_LOCATE_SEARCH_TYPE, *PEFI_LOCATE_SEARCH_TYPE;
|
|
|
|
/* Enumeration list of EFI Interface Types */
|
|
typedef enum _EFI_INTERFACE_TYPE
|
|
{
|
|
EFI_NATIVE_INTERFACE,
|
|
EFI_PCODE_INTERFACE
|
|
} EFI_INTERFACE_TYPE, *PEFI_INTERFACE_TYPE;
|
|
|
|
/* Enumeration of memory types introduced in UEFI */
|
|
typedef enum _EFI_MEMORY_TYPE
|
|
{
|
|
EfiReservedMemoryType,
|
|
EfiLoaderCode,
|
|
EfiLoaderData,
|
|
EfiBootServicesCode,
|
|
EfiBootServicesData,
|
|
EfiRuntimeServicesCode,
|
|
EfiRuntimeServicesData,
|
|
EfiConventionalMemory,
|
|
EfiUnusableMemory,
|
|
EfiACPIReclaimMemory,
|
|
EfiACPIMemoryNVS,
|
|
EfiMemoryMappedIO,
|
|
EfiMemoryMappedIOPortSpace,
|
|
EfiPalCode,
|
|
EfiMaxMemoryType
|
|
} EFI_MEMORY_TYPE, *PEFI_MEMORY_TYPE;
|
|
|
|
/* Enumeration of PCI I/O protocol widths */
|
|
typedef enum _EFI_PCI_IO_PROTOCOL_WIDTH
|
|
{
|
|
EfiPciIoWidthUint8,
|
|
EfiPciIoWidthUint16,
|
|
EfiPciIoWidthUint32,
|
|
EfiPciIoWidthUint64,
|
|
EfiPciIoWidthFifoUint8,
|
|
EfiPciIoWidthFifoUint16,
|
|
EfiPciIoWidthFifoUint32,
|
|
EfiPciIoWidthFifoUint64,
|
|
EfiPciIoWidthFillUint8,
|
|
EfiPciIoWidthFillUint16,
|
|
EfiPciIoWidthFillUint32,
|
|
EfiPciIoWidthFillUint64,
|
|
EfiPciIoWidthMaximum
|
|
} EFI_PCI_IO_PROTOCOL_WIDTH, *PEFI_PCI_IO_PROTOCOL_WIDTH;
|
|
|
|
/* Enumeration of EFI PCI I/O protocol operations */
|
|
typedef enum _EFI_PCI_IO_PROTOCOL_OPERATION
|
|
{
|
|
EfiPciIoOperationBusMasterRead,
|
|
EfiPciIoOperationBusMasterWrite,
|
|
EfiPciIoOperationBusMasterCommonBuffer,
|
|
EfiPciIoOperationMaximum
|
|
} EFI_PCI_IO_PROTOCOL_OPERATION, *PEFI_PCI_IO_PROTOCOL_OPERATION;
|
|
|
|
/* Enumeration of EFI PCI Root Bridge I/O protocol operations */
|
|
typedef enum _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION
|
|
{
|
|
EfiPciOperationBusMasterRead,
|
|
EfiPciOperationBusMasterWrite,
|
|
EfiPciOperationBusMasterCommonBuffer,
|
|
EfiPciOperationBusMasterRead64,
|
|
EfiPciOperationBusMasterWrite64,
|
|
EfiPciOperationBusMasterCommonBuffer64,
|
|
EfiPciOperationMaximum
|
|
} EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION, *PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION;
|
|
|
|
/* Enumeration of EFI PCI I/O protocol attribute operations */
|
|
typedef enum _EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION
|
|
{
|
|
EfiPciIoAttributeOperationGet,
|
|
EfiPciIoAttributeOperationSet,
|
|
EfiPciIoAttributeOperationEnable,
|
|
EfiPciIoAttributeOperationDisable,
|
|
EfiPciIoAttributeOperationSupported,
|
|
EfiPciIoAttributeOperationMaximum
|
|
} EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION, *PEFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION;
|
|
|
|
/* EFI structures forward references */
|
|
typedef struct _EFI_CAPSULE_HEADER EFI_CAPSULE_HEADER, *PEFI_CAPSULE_HEADER;
|
|
typedef struct _EFI_GUID EFI_GUID, *PEFI_GUID;
|
|
typedef struct _EFI_MEMORY_DESCRIPTOR EFI_MEMORY_DESCRIPTOR, *PEFI_MEMORY_DESCRIPTOR;
|
|
typedef struct _EFI_RUNTIME_SERVICES EFI_RUNTIME_SERVICES, *PEFI_RUNTIME_SERVICES;
|
|
typedef struct _EFI_TABLE_HEADER EFI_TABLE_HEADER, *PEFI_TABLE_HEADER;
|
|
typedef struct _EFI_TIME EFI_TIME, *PEFI_TIME;
|
|
typedef struct _EFI_TIME_CAPABILITIES EFI_TIME_CAPABILITIES, *PEFI_TIME_CAPABILITIES;
|
|
typedef struct _EFI_DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH_PROTOCOL, *PEFI_DEVICE_PATH_PROTOCOL;
|
|
typedef struct _EFI_CONFIGURATION_TABLE EFI_CONFIGURATION_TABLE, *PEFI_CONFIGURATION_TABLE;
|
|
typedef struct _EFI_OPEN_PROTOCOL_INFORMATION_ENTRY EFI_OPEN_PROTOCOL_INFORMATION_ENTRY, *PEFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
|
|
typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL, *PEFI_SIMPLE_TEXT_INPUT_PROTOCOL;
|
|
typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL, *PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
|
|
typedef struct _EFI_SIMPLE_TEXT_OUTPUT_MODE EFI_SIMPLE_TEXT_OUTPUT_MODE, *PEFI_SIMPLE_TEXT_OUTPUT_MODE;
|
|
typedef struct _EFI_INPUT_KEY EFI_INPUT_KEY, *PEFI_INPUT_KEY;
|
|
typedef struct _EFI_SYSTEM_TABLE EFI_SYSTEM_TABLE, *PEFI_SYSTEM_TABLE;
|
|
typedef struct _EFI_IPv4_ADDRESS EFI_IPv4_ADDRESS, *PEFI_IPv4_ADDRESS;
|
|
typedef struct _EFI_IPv6_ADDRESS EFI_IPv6_ADDRESS, *PEFI_IPv6_ADDRESS;
|
|
typedef struct _EFI_MAC_ADDRESS EFI_MAC_ADDRESS, *PEFI_MAC_ADDRESS;
|
|
typedef struct _EFI_MANAGED_NETWORK_CONFIG_DATA EFI_MANAGED_NETWORK_CONFIG_DATA, *PEFI_MANAGED_NETWORK_CONFIG_DATA;
|
|
typedef struct _EFI_DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH_PROTOCOL, *PEFI_DEVICE_PATH_PROTOCOL;
|
|
typedef struct _EFI_PCI_DEVICE_PATH EFI_PCI_DEVICE_PATH, *PEFI_PCI_DEVICE_PATH;
|
|
typedef struct _EFI_PCCARD_DEVICE_PATH EFI_PCCARD_DEVICE_PATH, *PEFI_PCCARD_DEVICE_PATH;
|
|
typedef struct _EFI_MEMMAP_DEVICE_PATH EFI_MEMMAP_DEVICE_PATH, *PEFI_MEMMAP_DEVICE_PATH;
|
|
typedef struct _EFI_VENDOR_DEVICE_PATH EFI_VENDOR_DEVICE_PATH, *PEFI_VENDOR_DEVICE_PATH;
|
|
typedef struct _EFI_UKNOWN_DEVICE_VENDOR_DEVICE_PATH EFI_UNKNOWN_DEVICE_VENDOR_DEVICE_PATH, *PEFI_UNKNOWN_DEVICE_VENDOR_DEVICE_PATH;
|
|
typedef struct _EFI_CONTROLLER_DEVICE_PATH EFI_CONTROLLER_DEVICE_PATH, *PEFI_CONTROLLER_DEVICE_PATH;
|
|
typedef struct _EFI_ACPI_HID_DEVICE_PATH EFI_ACPI_HID_DEVICE_PATH, *PEFI_ACPI_HID_DEVICE_PATH;
|
|
typedef struct _EFI_EXPANDED_ACPI_HID_DEVICE_PATH EFI_EXPANDED_ACPI_HID_DEVICE_PATH, *PEFI_EXPANDED_ACPI_HID_DEVICE_PATH;
|
|
typedef struct _EFI_ACPI_ADR_DEVICE_PATH EFI_ACPI_ADR_DEVICE_PATH, *PEFI_ACPI_ADR_DEVICE_PATH;
|
|
typedef struct _EFI_ATAPI_DEVICE_PATH EFI_ATAPI_DEVICE_PATH, *PEFI_ATAPI_DEVICE_PATH;
|
|
typedef struct _EFI_SCSI_DEVICE_PATH EFI_SCSI_DEVICE_PATH, *PEFI_SCSI_DEVICE_PATH;
|
|
typedef struct _EFI_FIBRECHANNEL_DEVICE_PATH EFI_FIBRECHANNEL_DEVICE_PATH, *PEFI_FIBRECHANNEL_DEVICE_PATH;
|
|
typedef struct _EFI_FIBRECHANNELEX_DEVICE_PATH EFI_FIBRECHANNELEX_DEVICE_PATH, *PEFI_FIBRECHANNELEX_DEVICE_PATH;
|
|
typedef struct _EFI_1394_DEVICE_PATH EFI_1394_DEVICE_PATH, *PEFI_1394_DEVICE_PATH;
|
|
typedef struct _EFI_USB_DEVICE_PATH EFI_USB_DEVICE_PATH, *PEFI_USB_DEVICE_PATH;
|
|
typedef struct _EFI_USB_WWID_DEVICE_PATH EFI_USB_WWID_DEVICE_PATH, *PEFI_USB_WWID_DEVICE_PATH;
|
|
typedef struct _EFI_USB_CLASS_DEVICE_PATH EFI_USB_CLASS_DEVICE_PATH, *PEFI_USB_CLASS_DEVICE_PATH;
|
|
typedef struct _EFI_SATA_DEVICE_PATH EFI_SATA_DEVICE_PATH, *PEFI_SATA_DEVICE_PATH;
|
|
typedef struct _EFI_DEVICE_LOGICAL_UNIT_DEVICE_PATH EFI_DEVICE_LOGICAL_UNIT_DEVICE_PATH, *PEFI_DEVICE_LOGICAL_UNIT_DEVICE_PATH;
|
|
typedef struct _EFI_I2O_DEVICE_PATH EFI_I2O_DEVICE_PATH, *PEFI_I2O_DEVICE_PATH;
|
|
typedef struct _EFI_MAC_ADDR_DEVICE_PATH EFI_MAC_ADDR_DEVICE_PATH, *PEFI_MAC_ADDR_DEVICE_PATH;
|
|
typedef struct _EFI_IPv4_DEVICE_PATH EFI_IPv4_DEVICE_PATH, *PEFI_IPv4_DEVICE_PATH;
|
|
typedef struct _EFI_IPv6_DEVICE_PATH EFI_IPv6_DEVICE_PATH, *PEFI_IPv6_DEVICE_PATH;
|
|
typedef struct _EFI_URI_DEVICE_PATH EFI_URI_DEVICE_PATH, *PEFI_URI_DEVICE_PATH;
|
|
typedef struct _EFI_VLAN_DEVICE_PATH EFI_VLAN_DEVICE_PATH, *PEFI_VLAN_DEVICE_PATH;
|
|
typedef struct _EFI_INFINIBAND_DEVICE_PATH EFI_INFINIBAND_DEVICE_PATH, *PEFI_INFINIBAND_DEVICE_PATH;
|
|
typedef struct _EFI_UART_DEVICE_PATH EFI_UART_DEVICE_PATH, *PEFI_UART_DEVICE_PATH;
|
|
typedef struct _EFI_HARDDRIVE_DEVICE_PATH EFI_HARDDRIVE_DEVICE_PATH, *PEFI_HARDDRIVE_DEVICE_PATH;
|
|
typedef struct _EFI_CDROM_DEVICE_PATH EFI_CDROM_DEVICE_PATH, *PEFI_CDROM_DEVICE_PATH;
|
|
typedef struct _EFI_FILEPATH_DEVICE_PATH EFI_FILEPATH_DEVICE_PATH, *PEFI_FILEPATH_DEVICE_PATH;
|
|
typedef struct _EFI_MEDIA_PROTOCOL_DEVICE_PATH EFI_MEDIA_PROTOCOL_DEVICE_PATH, *PEFI_MEDIA_PROTOCOL_DEVICE_PATH;
|
|
typedef struct _EFI_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH EFI_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH, *PEFI_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;
|
|
typedef struct _EFI_MEDIA_FW_VOL_DEVICE_PATH EFI_MEDIA_FW_VOL_DEVICE_PATH, *PEFI_MEDIA_FW_VOL_DEVICE_PATH;
|
|
typedef struct _EFI_MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH EFI_MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH, *PEFI_MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH;
|
|
typedef struct _EFI_BBS_BBS_DEVICE_PATH EFI_BBS_BBS_DEVICE_PATH, *PEFI_BBS_BBS_DEVICE_PATH;
|
|
typedef struct _EFI_DEVICE_PATH_TO_TEXT_PROTOCOL EFI_DEVICE_PATH_TO_TEXT_PROTOCOL, *PEFI_DEVICE_PATH_TO_TEXT_PROTOCOL;
|
|
typedef struct _EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL, *PEFI_DEVICE_PATH_FROM_TEXT_PROTOCOL;
|
|
typedef struct _EFI_DEVICE_PATH_UTILITIES_PROTOCOL EFI_DEVICE_PATH_UTILITIES_PROTOCOL, *PEFI_DEVICE_PATH_UTILITIES_PROTOCOL;
|
|
typedef struct _EFI_PCI_IO_PROTOCOL_ACCESS EFI_PCI_IO_PROTOCOL_ACCESS, *PEFI_PCI_IO_PROTOCOL_ACCESS;
|
|
typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS, *PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS;
|
|
typedef struct _EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS, *PEFI_PCI_IO_PROTOCOL_CONFIG_ACCESS;
|
|
typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS, *PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS;
|
|
typedef struct _EFI_PCI_IO_PROTOCOL EFI_PCI_IO_PROTOCOL, *PEFI_PCI_IO_PROTOCOL;
|
|
typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL, *PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL;
|
|
|
|
/* EFI unions forward references */
|
|
typedef union _EFI_DEV_PATH EFI_DEV_PATH, *PEFI_DEV_PATH;
|
|
typedef union _EFI_DEV_PATH_PTR EFI_DEV_PATH_PTR, *PEFI_DEV_PATH_PTR;
|
|
|
|
/* EFI routines forward references */
|
|
typedef EFI_STATUS (*PEFI_CONVERT_POINTER)(IN UINT_PTR DebugDisposition, IN OUT PVOID *Address);
|
|
typedef EFI_STATUS (*PEFI_ALLOCATE_PAGES)(IN EFI_ALLOCATE_TYPE Type, IN EFI_MEMORY_TYPE MemoryType, IN UINT_PTR NoPages, OUT PEFI_PHYSICAL_ADDRESS Memory);
|
|
typedef EFI_STATUS (*PEFI_ALLOCATE_POOL)(IN EFI_MEMORY_TYPE PoolType, IN UINT_PTR Size, OUT PVOID *Buffer);
|
|
typedef EFI_STATUS (*PEFI_FREE_PAGES)(IN EFI_PHYSICAL_ADDRESS Memory, IN UINT_PTR NoPages);
|
|
typedef EFI_STATUS (*PEFI_FREE_POOL)(IN PVOID Buffer);
|
|
typedef VOID (*PEFI_EVENT_NOTIFY)(IN EFI_EVENT Event, IN PVOID Context);
|
|
typedef EFI_STATUS (*PEFI_CREATE_EVENT)(IN UINT32 Type, IN EFI_TPL NotifyTpl, IN PEFI_EVENT_NOTIFY NotifyFunction, IN PVOID NotifyContext, OUT PEFI_EVENT Event);
|
|
typedef EFI_STATUS (*PEFI_GET_MEMORY_MAP)(IN OUT PUINT_PTR MemoryMapSize, IN OUT PEFI_MEMORY_DESCRIPTOR MemoryMap, OUT PUINT_PTR MapKey, OUT PUINT_PTR DescriptorSize, OUT PUINT32 DescriptorVersion);
|
|
typedef EFI_STATUS (*PEFI_GET_VARIABLE)(IN PUINT16 VariableName, IN PEFI_GUID VendorGuid, OUT PUINT32 Attributes, IN OUT PUINT_PTR DataSize, OUT PVOID Data);
|
|
typedef EFI_STATUS (*PEFI_GET_NEXT_HIGH_MONO_COUNT)(OUT PUINT32 HighCount);
|
|
typedef EFI_STATUS (*PEFI_GET_NEXT_VARIABLE_NAME)(IN OUT PUINT_PTR VariableNameSize, IN OUT PUINT16 VariableName, IN OUT PEFI_GUID VendorGuid);
|
|
typedef EFI_STATUS (*PEFI_GET_TIME)(OUT PEFI_TIME Time, OUT PEFI_TIME_CAPABILITIES Capabilities);
|
|
typedef EFI_STATUS (*PEFI_SET_TIME)(IN PEFI_TIME Time);
|
|
typedef EFI_STATUS (*PEFI_SET_TIMER)(IN EFI_EVENT Event, IN EFI_TIMER_DELAY Type, IN UINT64 TriggerTime);
|
|
typedef EFI_STATUS (*PEFI_SIGNAL_EVENT)(IN EFI_EVENT Event);
|
|
typedef EFI_STATUS (*PEFI_CLOSE_EVENT)(IN EFI_EVENT Event);
|
|
typedef EFI_STATUS (*PEFI_CHECK_EVENT)(IN EFI_EVENT Event);
|
|
typedef EFI_STATUS (*PEFI_CREATE_EVENT_EX)(IN UINT32 Type, IN EFI_TPL NotifyTpl, IN PEFI_EVENT_NOTIFY NotifyFunction, IN CONST PVOID NotifyContext, IN CONST PEFI_GUID EventGroup, OUT PEFI_EVENT Event);
|
|
typedef EFI_STATUS (*PEFI_WAIT_FOR_EVENT)(IN UINT_PTR NumberOfEvents, IN PEFI_EVENT Event, OUT PUINT_PTR Index);
|
|
typedef EFI_STATUS (*PEFI_QUERY_CAPSULE_CAPABILITIES)(IN PEFI_CAPSULE_HEADER *CapsuleHeaderArray, IN UINT_PTR CapsuleCount, OUT PUINT64 MaximumCapsuleSize, OUT PEFI_RESET_TYPE ResetType);
|
|
typedef EFI_STATUS (*PEFI_QUERY_VARIABLE_INFO)(IN UINT32 Attributes, OUT PUINT64 MaximumVariableStorageSize, OUT PUINT64 RemainingVariableStorageSize, OUT PUINT64 MaximumVariableSize);
|
|
typedef EFI_STATUS (*PEFI_RAISE_TPL)(IN EFI_TPL NewTpl);
|
|
typedef EFI_STATUS (*PEFI_RESET_SYSTEM)(IN EFI_RESET_TYPE ResetType, IN EFI_STATUS ResetStatus, IN UINT_PTR DataSize, IN PUINT16 ResetData);
|
|
typedef EFI_STATUS (*PEFI_RESTORE_TPL)(IN EFI_TPL OldTpl);
|
|
typedef EFI_STATUS (*PEFI_UPDATE_CAPSULE)(IN PEFI_CAPSULE_HEADER *CapsuleHeaderArray, IN UINT_PTR CapsuleCount, IN EFI_PHYSICAL_ADDRESS ScatterGatherList);
|
|
typedef EFI_STATUS (*PEFI_SET_VARIABLE)(IN PUINT16 VariableName, IN PEFI_GUID VendorGuid, IN UINT32 Attributes, IN UINT_PTR DataSize, IN PVOID Data);
|
|
typedef EFI_STATUS (*PEFI_SET_VIRTUAL_ADDRESS_MAP)(IN UINT_PTR MemoryMapSize, IN UINT_PTR DescriptorSize, IN UINT32 DescriptorVersion, IN PEFI_MEMORY_DESCRIPTOR VirtualMap);
|
|
typedef EFI_STATUS (*PEFI_GET_WAKEUP_TIME)(OUT BOOLEAN Enabled, OUT BOOLEAN Pending, OUT PEFI_TIME Time);
|
|
typedef EFI_STATUS (*PEFI_SET_WAKEUP_TIME)(IN BOOLEAN Enable, IN PEFI_TIME Time);
|
|
typedef EFI_STATUS (*PEFI_INSTALL_PROTOCOL_INTERFACE)(IN OUT PEFI_HANDLE Handle, IN PEFI_GUID Protocol, IN EFI_INTERFACE_TYPE InterfaceType, IN PVOID Interface);
|
|
typedef EFI_STATUS (*PEFI_REINSTALL_PROTOCOL_INTERFACE)(IN EFI_HANDLE Handle, IN PEFI_GUID Protocol, IN PVOID OldInterface, IN PVOID NewInterface);
|
|
typedef EFI_STATUS (*PEFI_UNINSTALL_PROTOCOL_INTERFACE)(IN EFI_HANDLE Handle, IN PEFI_GUID Protocol, IN PVOID Interface);
|
|
typedef EFI_STATUS (*PEFI_HANDLE_PROTOCOL)(IN EFI_HANDLE Handle, IN PEFI_GUID Protocol, OUT PVOID *Interface);
|
|
typedef EFI_STATUS (*PEFI_REGISTER_PROTOCOL_NOTIFY)(IN PEFI_GUID Protocol, IN EFI_EVENT Event, OUT PVOID *Registration);
|
|
typedef EFI_STATUS (*PEFI_LOCATE_HANDLE)(IN EFI_LOCATE_SEARCH_TYPE SearchType, IN PEFI_GUID Protocol, IN PVOID SearchKey, IN OUT PUINT_PTR BufferSize, OUT PEFI_HANDLE Buffer);
|
|
typedef EFI_STATUS (*PEFI_LOCATE_DEVICE_PATH)(IN PEFI_GUID Protocol, IN OUT PEFI_DEVICE_PATH_PROTOCOL *DevicePath, OUT PEFI_HANDLE Device);
|
|
typedef EFI_STATUS (*PEFI_LOCATE_HANDLE_BUFFER)(IN EFI_LOCATE_SEARCH_TYPE SearchType, IN PEFI_GUID Protocol, IN PVOID SearchKey, IN OUT PUINT_PTR NoHandles, OUT PEFI_HANDLE *Buffer);
|
|
typedef EFI_STATUS (*PEFI_LOCATE_PROTOCOL)(IN PEFI_GUID Protocol, IN PVOID Registration, OUT PVOID *Interface);
|
|
typedef EFI_STATUS (*PEFI_INSTALL_CONFIGURATION_TABLE)(IN PEFI_GUID Guid, IN PVOID Table);
|
|
typedef EFI_STATUS (*PEFI_IMAGE_LOAD)(IN BOOLEAN BootPolicy, IN EFI_HANDLE ParentImageHandle, IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, IN PVOID SourceBuffer, IN UINT_PTR SourceSize, OUT PEFI_HANDLE ImageHandle);
|
|
typedef EFI_STATUS (*PEFI_IMAGE_UNLOAD)(IN EFI_HANDLE ImageHandle);
|
|
typedef EFI_STATUS (*PEFI_IMAGE_START)(IN EFI_HANDLE ImageHandle, OUT PUINT_PTR ExitDataSize, OUT PUINT16 *ExitData);
|
|
typedef EFI_STATUS (*PEFI_EXIT)(IN EFI_HANDLE ImageHandle, IN EFI_STATUS ExitStatus, IN UINT_PTR ExitDataSize, IN PUINT16 ExitData);
|
|
typedef EFI_STATUS (*PEFI_EXIT_BOOT_SERVICES)(IN EFI_HANDLE ImageHandle, IN UINT_PTR MapKey);
|
|
typedef EFI_STATUS (*PEFI_GET_NEXT_MONOTONIC_COUNT)(OUT PUINT64 Count);
|
|
typedef EFI_STATUS (*PEFI_STALL)(IN UINT_PTR Microseconds);
|
|
typedef EFI_STATUS (*PEFI_SET_WATCHDOG_TIMER)(IN UINT_PTR Timeout, IN UINT64 WatchdogCode, IN UINT_PTR DataSize, IN PUINT16 WatchdogData);
|
|
typedef EFI_STATUS (*PEFI_CONNECT_CONTROLLER)(IN EFI_HANDLE ControllerHandle, IN PEFI_HANDLE DriverImageHandle, IN PEFI_DEVICE_PATH_PROTOCOL RemainingDevicePath, IN BOOLEAN Recursive);
|
|
typedef EFI_STATUS (*PEFI_DISCONNECT_CONTROLLER)(IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE DriverImageHandle, IN EFI_HANDLE ChildHandle);
|
|
typedef EFI_STATUS (*PEFI_OPEN_PROTOCOL)(IN EFI_HANDLE Handle, IN PEFI_GUID Protocol, OUT PVOID *Interface, IN EFI_HANDLE AgentHandle, IN EFI_HANDLE ControllerHandle, IN UINT32 Attributes);
|
|
typedef EFI_STATUS (*PEFI_CLOSE_PROTOCOL)(IN EFI_HANDLE Handle, IN PEFI_GUID Protocol, IN EFI_HANDLE AgentHandle, IN EFI_HANDLE ControllerHandle);
|
|
typedef EFI_STATUS (*PEFI_OPEN_PROTOCOL_INFORMATION)(IN EFI_HANDLE Handle, IN PEFI_GUID Protocol, OUT PEFI_OPEN_PROTOCOL_INFORMATION_ENTRY *EntryBuffer, OUT PUINT_PTR EntryCount);
|
|
typedef EFI_STATUS (*PEFI_PROTOCOLS_PER_HANDLE)(IN EFI_HANDLE Handle, OUT PEFI_GUID **ProtocolBuffer, OUT PUINT_PTR ProtocolBufferCount);
|
|
typedef EFI_STATUS (*PEFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES)(IN OUT PEFI_HANDLE Handle, ...);
|
|
typedef EFI_STATUS (*PEFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES)(IN OUT PEFI_HANDLE Handle, ...);
|
|
typedef EFI_STATUS (*PEFI_CALCULATE_CRC32)(IN PVOID Data, IN UINT_PTR DataSize, OUT PUINT32 Crc32);
|
|
typedef EFI_STATUS (*PEFI_COPY_MEM)(IN OUT PVOID Destination, IN PVOID Source, IN UINT_PTR Length);
|
|
typedef EFI_STATUS (*PEFI_SET_MEM)(IN OUT PVOID Buffer, IN UINT_PTR Size, IN UINT8 Value);
|
|
typedef EFI_STATUS (*PEFI_INPUT_RESET)(IN PEFI_SIMPLE_TEXT_INPUT_PROTOCOL This, IN BOOLEAN ExtendedVerification);
|
|
typedef EFI_STATUS (*PEFI_INPUT_READ_KEY)(IN PEFI_SIMPLE_TEXT_INPUT_PROTOCOL This, OUT PEFI_INPUT_KEY Key);
|
|
typedef EFI_STATUS (*PEFI_TEXT_RESET)(IN PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, IN BOOLEAN ExtendedVerification);
|
|
typedef EFI_STATUS (*PEFI_TEXT_STRING)(IN PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, IN PUINT16 String);
|
|
typedef EFI_STATUS (*PEFI_TEXT_TEST_STRING)(IN PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, IN PUINT16 String);
|
|
typedef EFI_STATUS (*PEFI_TEXT_QUERY_MODE)(IN PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, IN UINT_PTR ModeNumber, OUT PUINT_PTR Columns, OUT PUINT_PTR Rows);
|
|
typedef EFI_STATUS (*PEFI_TEXT_SET_MODE)(IN PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, IN UINT_PTR ModeNumber);
|
|
typedef EFI_STATUS (*PEFI_TEXT_SET_ATTRIBUTE)(IN PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, IN UINT_PTR Attribute);
|
|
typedef EFI_STATUS (*PEFI_TEXT_CLEAR_SCREEN)(IN PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This);
|
|
typedef EFI_STATUS (*PEFI_TEXT_SET_CURSOR_POSITION)(IN PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, IN UINT_PTR Column, IN UINT_PTR Row);
|
|
typedef EFI_STATUS (*PEFI_TEXT_ENABLE_CURSOR)(IN PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, IN BOOLEAN Enable);
|
|
typedef PUINT16(*PEFI_DEVICE_PATH_TO_TEXT_NODE)(IN CONST PEFI_DEVICE_PATH_PROTOCOL DeviceNode, IN BOOLEAN DisplayOnly, IN BOOLEAN AllowShortcuts);
|
|
typedef PUINT16(*PEFI_DEVICE_PATH_TO_TEXT_PATH)(IN CONST PEFI_DEVICE_PATH_PROTOCOL DevicePath, IN BOOLEAN DisplayOnly, IN BOOLEAN AllowShortcuts);
|
|
typedef PEFI_DEVICE_PATH_PROTOCOL(*PEFI_DEVICE_PATH_FROM_TEXT_NODE)(IN CONST PUINT16 TextDeviceNode);
|
|
typedef PEFI_DEVICE_PATH_PROTOCOL(*PEFI_DEVICE_PATH_FROM_TEXT_PATH)(IN CONST PUINT16 TextDevicePath);
|
|
typedef UINT_PTR(*PEFI_DEVICE_PATH_UTILS_GET_DEVICE_PATH_SIZE)(IN CONST PEFI_DEVICE_PATH_PROTOCOL DevicePath);
|
|
typedef PEFI_DEVICE_PATH_PROTOCOL(*PEFI_DEVICE_PATH_UTILS_DUP_DEVICE_PATH)(IN CONST PEFI_DEVICE_PATH_PROTOCOL DevicePath);
|
|
typedef PEFI_DEVICE_PATH_PROTOCOL(*PEFI_DEVICE_PATH_UTILS_APPEND_PATH)(IN CONST PEFI_DEVICE_PATH_PROTOCOL Src1, IN CONST PEFI_DEVICE_PATH_PROTOCOL Src2);
|
|
typedef PEFI_DEVICE_PATH_PROTOCOL(*PEFI_DEVICE_PATH_UTILS_APPEND_NODE)(IN CONST PEFI_DEVICE_PATH_PROTOCOL DevicePath, IN CONST PEFI_DEVICE_PATH_PROTOCOL DeviceNode);
|
|
typedef PEFI_DEVICE_PATH_PROTOCOL(*PEFI_DEVICE_PATH_UTILS_APPEND_INSTANCE)(IN CONST PEFI_DEVICE_PATH_PROTOCOL DevicePath, IN CONST PEFI_DEVICE_PATH_PROTOCOL DevicePathInstance);
|
|
typedef PEFI_DEVICE_PATH_PROTOCOL(*PEFI_DEVICE_PATH_UTILS_GET_NEXT_INSTANCE)(IN OUT PEFI_DEVICE_PATH_PROTOCOL *DevicePathInstance, OUT PUINT_PTR DevicePathInstanceSize);
|
|
typedef PEFI_DEVICE_PATH_PROTOCOL(*PEFI_DEVICE_PATH_UTILS_CREATE_NODE)(IN UINT8 NodeType, IN UINT8 NodeSubType, IN UINT16 NodeLength);
|
|
typedef BOOLEAN (*PEFI_DEVICE_PATH_UTILS_IS_MULTI_INSTANCE)(IN CONST PEFI_DEVICE_PATH_PROTOCOL DevicePath);
|
|
typedef EFI_STATUS(*EFI_PCI_IO_PROTOCOL_POLL_IO_MEM)(IN PEFI_PCI_IO_PROTOCOL This, IN EFI_PCI_IO_PROTOCOL_WIDTH Width, IN UINT8 BarIndex, IN UINT64 Offset, IN UINT64 Mask, IN UINT64 Value, IN UINT64 Delay, OUT PUINT64 Result);
|
|
typedef EFI_STATUS(*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM)(IN PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL This, IN EFI_PCI_IO_PROTOCOL_WIDTH Width, IN UINT64 Address, IN UINT64 Mask, IN UINT64 Value, IN UINT64 Delay, OUT PUINT64 Result);
|
|
typedef EFI_STATUS(*EFI_PCI_IO_PROTOCOL_IO_MEM)(IN PEFI_PCI_IO_PROTOCOL This, IN EFI_PCI_IO_PROTOCOL_WIDTH Width, IN UINT8 BarIndex, IN UINT64 Offset, IN UINT_PTR Count, IN OUT PVOID Buffer);
|
|
typedef EFI_STATUS(*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM)(IN PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL This, IN EFI_PCI_IO_PROTOCOL_WIDTH Width, IN UINT64 Address, IN UINT_PTR Count, IN OUT PVOID Buffer);
|
|
typedef EFI_STATUS(*EFI_PCI_IO_PROTOCOL_CONFIG)(IN PEFI_PCI_IO_PROTOCOL This, IN EFI_PCI_IO_PROTOCOL_WIDTH Width, IN UINT32 Offset, IN UINT_PTR Count, IN OUT PVOID Buffer);
|
|
typedef EFI_STATUS(*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_CONFIGURATION)(IN PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL This, OUT PVOID *Resources);
|
|
typedef EFI_STATUS(*EFI_PCI_IO_PROTOCOL_COPY_MEM)(IN PEFI_PCI_IO_PROTOCOL This, IN EFI_PCI_IO_PROTOCOL_WIDTH Width, IN UINT8 DestBarIndex, IN UINT64 DestOffset, IN UINT8 SrcBarIndex, IN UINT64 SrcOffset, IN UINT_PTR Count);
|
|
typedef EFI_STATUS(*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_COPY_MEM)(IN PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL This, IN EFI_PCI_IO_PROTOCOL_WIDTH Width, IN UINT64 DestAddress, IN UINT64 SrcAddress, IN UINT_PTR Count);
|
|
typedef EFI_STATUS(*EFI_PCI_IO_PROTOCOL_MAP)(IN PEFI_PCI_IO_PROTOCOL This, IN EFI_PCI_IO_PROTOCOL_OPERATION Operation, IN PVOID HostAddress, IN OUT PUINT_PTR NumberOfBytes, OUT PEFI_PHYSICAL_ADDRESS DeviceAddress, OUT PVOID *Mapping);
|
|
typedef EFI_STATUS(*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_MAP)(IN PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL This, IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION Operation, IN PVOID HostAddress, IN OUT PUINT_PTR NumberOfBytes, OUT PEFI_PHYSICAL_ADDRESS DeviceAddress, OUT PVOID *Mapping);
|
|
typedef EFI_STATUS(*EFI_PCI_IO_PROTOCOL_UNMAP)(IN PEFI_PCI_IO_PROTOCOL This, IN PVOID Mapping);
|
|
typedef EFI_STATUS(*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_UNMAP)(IN PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL This, IN PVOID Mapping);
|
|
typedef EFI_STATUS(*EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER)(IN PEFI_PCI_IO_PROTOCOL This, IN EFI_ALLOCATE_TYPE Type, IN EFI_MEMORY_TYPE MemoryType, IN UINT_PTR Pages, OUT PVOID *HostAddress, IN UINT64 Attributes);
|
|
typedef EFI_STATUS(*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ALLOCATE_BUFFER)(IN PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL This, IN EFI_ALLOCATE_TYPE Type, IN EFI_MEMORY_TYPE MemoryType, IN UINT_PTR Pages, IN OUT PVOID *HostAddress, IN UINT64 Attributes);
|
|
typedef EFI_STATUS(*EFI_PCI_IO_PROTOCOL_FREE_BUFFER)(IN PEFI_PCI_IO_PROTOCOL This, IN UINT_PTR Pages, IN PVOID HostAddress);
|
|
typedef EFI_STATUS(*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FREE_BUFFER)(IN PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL This, IN UINT_PTR Pages, IN PVOID HostAddress);
|
|
typedef EFI_STATUS(*EFI_PCI_IO_PROTOCOL_FLUSH)(IN PEFI_PCI_IO_PROTOCOL This);
|
|
typedef EFI_STATUS(*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FLUSH)(IN PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL This);
|
|
typedef EFI_STATUS(*EFI_PCI_IO_PROTOCOL_GET_LOCATION) (IN PEFI_PCI_IO_PROTOCOL This, OUT PUINT_PTR SegmentNumber, OUT PUINT_PTR BusNumber, OUT PUINT_PTR DeviceNumber, OUT PUINT_PTR FunctionNumber);
|
|
typedef EFI_STATUS(*EFI_PCI_IO_PROTOCOL_ATTRIBUTES)(IN PEFI_PCI_IO_PROTOCOL This, IN EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION Operation, IN UINT64 Attributes, OUT PUINT64 Result);
|
|
typedef EFI_STATUS(*EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES)(IN PEFI_PCI_IO_PROTOCOL This, IN UINT8 BarIndex, OUT PUINT64 Supports, OUT PVOID *Resources);
|
|
typedef EFI_STATUS(*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GET_ATTRIBUTES)(IN PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL This, OUT PUINT64 Supports, OUT PUINT64 Attributes);
|
|
typedef EFI_STATUS(*EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES)(IN PEFI_PCI_IO_PROTOCOL This, IN UINT64 Attributes, IN UINT8 BarIndex, IN OUT PUINT64 Offset, IN OUT PUINT64 Length);
|
|
typedef EFI_STATUS(*EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_SET_ATTRIBUTES)(IN PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL This, IN UINT64 Attributes, IN OUT PUINT64 ResourceBase, IN OUT PUINT64 ResourceLength);
|
|
|
|
/* 128-bit buffer containing a unique identifier value */
|
|
typedef struct _EFI_GUID
|
|
{
|
|
UINT32 Data1;
|
|
UINT16 Data2;
|
|
UINT16 Data3;
|
|
UINT8 Data4[8];
|
|
} EFI_GUID, *PEFI_GUID;
|
|
|
|
/* EFI Capsule Header */
|
|
typedef struct _EFI_CAPSULE_HEADER
|
|
{
|
|
EFI_GUID CapsuleGuid;
|
|
UINT32 HeaderSize;
|
|
UINT32 Flags;
|
|
UINT32 CapsuleImageSize;
|
|
} EFI_CAPSULE_HEADER, *PEFI_CAPSULE_HEADER;
|
|
|
|
/* Definition of an EFI memory descriptor */
|
|
typedef struct _EFI_MEMORY_DESCRIPTOR
|
|
{
|
|
UINT32 Type;
|
|
UINT32 Pad;
|
|
EFI_PHYSICAL_ADDRESS PhysicalStart;
|
|
EFI_VIRTUAL_ADDRESS VirtualStart;
|
|
UINT64 NumberOfPages;
|
|
UINT64 Attribute;
|
|
} EFI_MEMORY_DESCRIPTOR, *PEFI_MEMORY_DESCRIPTOR;
|
|
|
|
/* Data structure that precedes all of the standard EFI table types */
|
|
typedef struct _EFI_TABLE_HEADER
|
|
{
|
|
UINT64 Signature;
|
|
UINT32 Revision;
|
|
UINT32 HeaderSize;
|
|
UINT32 CRC32;
|
|
UINT32 Reserved;
|
|
} EFI_TABLE_HEADER, *PEFI_TABLE_HEADER;
|
|
|
|
/* EFI Time Abstraction */
|
|
typedef struct _EFI_TIME
|
|
{
|
|
UINT16 Year;
|
|
UINT8 Month;
|
|
UINT8 Day;
|
|
UINT8 Hour;
|
|
UINT8 Minute;
|
|
UINT8 Second;
|
|
UINT8 Pad1;
|
|
UINT32 Nanosecond;
|
|
INT16 TimeZone;
|
|
UINT8 Daylight;
|
|
UINT8 PAD2;
|
|
} EFI_TIME, *PEFI_TIME;
|
|
|
|
/* Provides the capabilities of the RTC device as exposed through the EFI interfaces */
|
|
typedef struct _EFI_TIME_CAPABILITIES
|
|
{
|
|
UINT32 Resolution;
|
|
UINT32 Accuracy;
|
|
UCHAR SetsToZero;
|
|
} EFI_TIME_CAPABILITIES, *PEFI_TIME_CAPABILITIES;
|
|
|
|
/* EFI Open Protocol Information Entry */
|
|
typedef struct _EFI_OPEN_PROTOCOL_INFORMATION_ENTRY
|
|
{
|
|
EFI_HANDLE AgentHandle;
|
|
EFI_HANDLE ControllerHandle;
|
|
UINT32 Attributes;
|
|
UINT32 OpenCount;
|
|
} EFI_OPEN_PROTOCOL_INFORMATION_ENTRY, *PEFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
|
|
|
|
/* EFI Boot Services Table */
|
|
typedef struct _EFI_BOOT_SERVICES
|
|
{
|
|
EFI_TABLE_HEADER Hdr;
|
|
PEFI_RAISE_TPL RaiseTPL;
|
|
PEFI_RESTORE_TPL RestoreTPL;
|
|
PEFI_ALLOCATE_PAGES AllocatePages;
|
|
PEFI_FREE_PAGES FreePages;
|
|
PEFI_GET_MEMORY_MAP GetMemoryMap;
|
|
PEFI_ALLOCATE_POOL AllocatePool;
|
|
PEFI_FREE_POOL FreePool;
|
|
PEFI_CREATE_EVENT CreateEvent;
|
|
PEFI_SET_TIMER SetTimer;
|
|
PEFI_WAIT_FOR_EVENT WaitForEvent;
|
|
PEFI_SIGNAL_EVENT SignalEvent;
|
|
PEFI_CLOSE_EVENT CloseEvent;
|
|
PEFI_CHECK_EVENT CheckEvent;
|
|
PEFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface;
|
|
PEFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
|
|
PEFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
|
|
PEFI_HANDLE_PROTOCOL HandleProtocol;
|
|
PVOID Reserved;
|
|
PEFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify;
|
|
PEFI_LOCATE_HANDLE LocateHandle;
|
|
PEFI_LOCATE_DEVICE_PATH LocateDevicePath;
|
|
PEFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
|
|
PEFI_IMAGE_LOAD LoadImage;
|
|
PEFI_IMAGE_START StartImage;
|
|
PEFI_EXIT Exit;
|
|
PEFI_IMAGE_UNLOAD UnloadImage;
|
|
PEFI_EXIT_BOOT_SERVICES ExitBootServices;
|
|
PEFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount;
|
|
PEFI_STALL Stall;
|
|
PEFI_SET_WATCHDOG_TIMER SetWatchdogTimer;
|
|
PEFI_CONNECT_CONTROLLER ConnectController;
|
|
PEFI_DISCONNECT_CONTROLLER DisconnectController;
|
|
PEFI_OPEN_PROTOCOL OpenProtocol;
|
|
PEFI_CLOSE_PROTOCOL CloseProtocol;
|
|
PEFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation;
|
|
PEFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle;
|
|
PEFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer;
|
|
PEFI_LOCATE_PROTOCOL LocateProtocol;
|
|
PEFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;
|
|
PEFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;
|
|
PEFI_CALCULATE_CRC32 CalculateCrc32;
|
|
PEFI_COPY_MEM CopyMem;
|
|
PEFI_SET_MEM SetMem;
|
|
PEFI_CREATE_EVENT_EX CreateEventEx;
|
|
} EFI_BOOT_SERVICES, *PEFI_BOOT_SERVICES;
|
|
|
|
/* EFI Runtime Services Table */
|
|
typedef struct _EFI_RUNTIME_SERVICES
|
|
{
|
|
EFI_TABLE_HEADER Hdr;
|
|
PEFI_GET_TIME GetTime;
|
|
PEFI_SET_TIME SetTime;
|
|
PEFI_GET_WAKEUP_TIME GetWakeupTime;
|
|
PEFI_SET_WAKEUP_TIME SetWakeupTime;
|
|
PEFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap;
|
|
PEFI_CONVERT_POINTER ConvertPointer;
|
|
PEFI_GET_VARIABLE GetVariable;
|
|
PEFI_GET_NEXT_VARIABLE_NAME GetNextVariableName;
|
|
PEFI_SET_VARIABLE SetVariable;
|
|
PEFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount;
|
|
PEFI_RESET_SYSTEM ResetSystem;
|
|
PEFI_UPDATE_CAPSULE UpdateCapsule;
|
|
PEFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities;
|
|
PEFI_QUERY_VARIABLE_INFO QueryVariableInfo;
|
|
} EFI_RUNTIME_SERVICES, *PEFI_RUNTIME_SERVICES;
|
|
|
|
/* Contains a set of GUID/pointer pairs comprised of the ConfigurationTable field in the EFI System Table */
|
|
typedef struct _EFI_CONFIGURATION_TABLE
|
|
{
|
|
EFI_GUID VendorGuid;
|
|
PVOID VendorTable;
|
|
} EFI_CONFIGURATION_TABLE, *PEFI_CONFIGURATION_TABLE;
|
|
|
|
/* Simple Text Input protocol from the UEFI 2.0 specification */
|
|
typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL
|
|
{
|
|
PEFI_INPUT_RESET Reset;
|
|
PEFI_INPUT_READ_KEY ReadKeyStroke;
|
|
EFI_EVENT WaitForKey;
|
|
} EFI_SIMPLE_TEXT_INPUT_PROTOCOL, *PEFI_SIMPLE_TEXT_INPUT_PROTOCOL;
|
|
|
|
/* Simple Text Output protocol from the UEFI 2.0 specification */
|
|
typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
|
|
{
|
|
PEFI_TEXT_RESET Reset;
|
|
PEFI_TEXT_STRING OutputString;
|
|
PEFI_TEXT_TEST_STRING TestString;
|
|
PEFI_TEXT_QUERY_MODE QueryMode;
|
|
PEFI_TEXT_SET_MODE SetMode;
|
|
PEFI_TEXT_SET_ATTRIBUTE SetAttribute;
|
|
PEFI_TEXT_CLEAR_SCREEN ClearScreen;
|
|
PEFI_TEXT_SET_CURSOR_POSITION SetCursorPosition;
|
|
PEFI_TEXT_ENABLE_CURSOR EnableCursor;
|
|
PEFI_SIMPLE_TEXT_OUTPUT_MODE Mode;
|
|
} EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL, *PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
|
|
|
|
/* Mode Structure pointed to by Simple Text Out protocol */
|
|
typedef struct _EFI_SIMPLE_TEXT_OUTPUT_MODE
|
|
{
|
|
INT32 MaxMode;
|
|
INT32 Mode;
|
|
INT32 Attribute;
|
|
INT32 CursorColumn;
|
|
INT32 CursorRow;
|
|
UCHAR CursorVisible;
|
|
} EFI_SIMPLE_TEXT_OUTPUT_MODE, *PEFI_SIMPLE_TEXT_OUTPUT_MODE;
|
|
|
|
/* The keystroke information for the key that was pressed */
|
|
typedef struct _EFI_INPUT_KEY
|
|
{
|
|
UINT16 ScanCode;
|
|
UINT16 UnicodeChar;
|
|
} EFI_INPUT_KEY, *PEFI_INPUT_KEY;
|
|
|
|
/* EFI System Table */
|
|
typedef struct _EFI_SYSTEM_TABLE
|
|
{
|
|
EFI_TABLE_HEADER Hdr;
|
|
PUINT16 FirmwareVendor;
|
|
UINT32 FirmwareRevision;
|
|
EFI_HANDLE ConsoleInHandle;
|
|
PEFI_SIMPLE_TEXT_INPUT_PROTOCOL ConIn;
|
|
EFI_HANDLE ConsoleOutHandle;
|
|
PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL ConOut;
|
|
EFI_HANDLE StandardErrorHandle;
|
|
PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL StdErr;
|
|
PEFI_RUNTIME_SERVICES RuntimeServices;
|
|
PEFI_BOOT_SERVICES BootServices;
|
|
UINT_PTR NumberOfTableEntries;
|
|
PEFI_CONFIGURATION_TABLE ConfigurationTable;
|
|
} EFI_SYSTEM_TABLE, *PEFI_SYSTEM_TABLE;
|
|
|
|
/* EFI IPv4 network protocol */
|
|
typedef struct _EFI_IPv4_ADDRESS
|
|
{
|
|
UINT8 Addr[4];
|
|
} EFI_IPv4_ADDRESS, *PEFI_IPv4_ADDRESS;
|
|
|
|
/* EFI IPv6 network protocol */
|
|
typedef struct _EFI_IPv6_ADDRESS
|
|
{
|
|
UINT8 Addr[16];
|
|
} EFI_IPv6_ADDRESS, *PEFI_IPv6_ADDRESS;
|
|
|
|
/* EFI MAC address definition */
|
|
typedef struct _EFI_MAC_ADDRESS
|
|
{
|
|
UINT8 Addr[32];
|
|
} EFI_MAC_ADDRESS, *PEFI_MAC_ADDRESS;
|
|
|
|
/* EFI network configuration data structure */
|
|
typedef struct _EFI_MANAGED_NETWORK_CONFIG_DATA
|
|
{
|
|
UINT32 ReceivedQueueTimeoutValue;
|
|
UINT32 TransmitQueueTimeoutValue;
|
|
UINT16 ProtocolTypeFilter;
|
|
BOOLEAN EnableUnicastReceive;
|
|
BOOLEAN EnableMulticastReceive;
|
|
BOOLEAN EnableBroadcastReceive;
|
|
BOOLEAN EnablePromiscuousReceive;
|
|
BOOLEAN FlushQueuesOnReset;
|
|
BOOLEAN EnableReceiveTimestamps;
|
|
BOOLEAN DisableBackgroundPolling;
|
|
} EFI_MANAGED_NETWORK_CONFIG_DATA, *PEFI_MANAGED_NETWORK_CONFIG_DATA;
|
|
|
|
/* Describes the location of the device the handle is for */
|
|
typedef struct _EFI_DEVICE_PATH_PROTOCOL
|
|
{
|
|
UINT8 Type;
|
|
UINT8 SubType;
|
|
UINT8 Length[2];
|
|
} EFI_DEVICE_PATH_PROTOCOL, *PEFI_DEVICE_PATH_PROTOCOL;
|
|
|
|
/* PCI device path node */
|
|
typedef struct _EFI_PCI_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT8 Function;
|
|
UINT8 Device;
|
|
} EFI_PCI_DEVICE_PATH, *PEFI_PCI_DEVICE_PATH;
|
|
|
|
/* PCCARD device path node */
|
|
typedef struct _EFI_PCCARD_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT8 FunctionNumber;
|
|
} EFI_PCCARD_DEVICE_PATH, *PEFI_PCCARD_DEVICE_PATH;
|
|
|
|
/* MemMap device path node */
|
|
typedef struct _EFI_MEMMAP_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT32 MemoryType;
|
|
EFI_PHYSICAL_ADDRESS StartingAddress;
|
|
EFI_PHYSICAL_ADDRESS EndingAddress;
|
|
} EFI_MEMMAP_DEVICE_PATH, *PEFI_MEMMAP_DEVICE_PATH;
|
|
|
|
/* Vendor device path node */
|
|
typedef struct _EFI_VENDOR_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
EFI_GUID Guid;
|
|
} EFI_VENDOR_DEVICE_PATH, *PEFI_VENDOR_DEVICE_PATH;
|
|
|
|
/* Unknown Device Vendor device path node */
|
|
typedef struct _EFI_UKNOWN_DEVICE_VENDOR_DEVICE_PATH
|
|
{
|
|
EFI_VENDOR_DEVICE_PATH DevicePath;
|
|
UINT8 LegacyDriveLetter;
|
|
} EFI_UNKNOWN_DEVICE_VENDOR_DEVICE_PATH, *PEFI_UNKNOWN_DEVICE_VENDOR_DEVICE_PATH;
|
|
|
|
/* Controller device path node */
|
|
typedef struct _EFI_CONTROLLER_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT32 Controller;
|
|
} EFI_CONTROLLER_DEVICE_PATH, *PEFI_CONTROLLER_DEVICE_PATH;
|
|
|
|
/* ACPI device path node */
|
|
typedef struct _EFI_ACPI_HID_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT32 HID;
|
|
UINT32 UID;
|
|
} EFI_ACPI_HID_DEVICE_PATH, *PEFI_ACPI_HID_DEVICE_PATH;
|
|
|
|
/* Expanded ACPI device path node */
|
|
typedef struct _EFI_EXPANDED_ACPI_HID_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT32 HID;
|
|
UINT32 UID;
|
|
UINT32 CID;
|
|
UINT8 HidStr[1];
|
|
} EFI_EXPANDED_ACPI_HID_DEVICE_PATH, *PEFI_EXPANDED_ACPI_HID_DEVICE_PATH;
|
|
|
|
/* ACPI ADR device path node */
|
|
typedef struct _EFI_ACPI_ADR_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT32 ADR;
|
|
} EFI_ACPI_ADR_DEVICE_PATH, *PEFI_ACPI_ADR_DEVICE_PATH;
|
|
|
|
/* ATAPI device path node */
|
|
typedef struct _EFI_ATAPI_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT8 PrimarySecondary;
|
|
UINT8 SlaveMaster;
|
|
UINT16 Lun;
|
|
} EFI_ATAPI_DEVICE_PATH, *PEFI_ATAPI_DEVICE_PATH;
|
|
|
|
/* SCSI device path node */
|
|
typedef struct _EFI_SCSI_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT16 Pun;
|
|
UINT16 Lun;
|
|
} EFI_SCSI_DEVICE_PATH, *PEFI_SCSI_DEVICE_PATH;
|
|
|
|
/* Fibre Channel device path node */
|
|
typedef struct _EFI_FIBRECHANNEL_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT32 Reserved;
|
|
UINT64 WWN;
|
|
UINT64 Lun;
|
|
} EFI_FIBRECHANNEL_DEVICE_PATH, *PEFI_FIBRECHANNEL_DEVICE_PATH;
|
|
|
|
/* Fibre Channerl EX subtype device path node */
|
|
typedef struct _EFI_FIBRECHANNELEX_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header ;
|
|
UINT32 Reserved;
|
|
UINT8 WWN[8];
|
|
UINT8 Lun[8];
|
|
} EFI_FIBRECHANNELEX_DEVICE_PATH, *PEFI_FIBRECHANNELEX_DEVICE_PATH;
|
|
|
|
/* 1394 device path node */
|
|
typedef struct _EFI_1394_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT32 Reserved;
|
|
UINT64 Guid;
|
|
} EFI_1394_DEVICE_PATH, *PEFI_1394_DEVICE_PATH;
|
|
|
|
/* USB device path node */
|
|
typedef struct _EFI_USB_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT8 Port;
|
|
UINT8 Endpoint;
|
|
} EFI_USB_DEVICE_PATH, *PEFI_USB_DEVICE_PATH;
|
|
|
|
/* USB WWID device path node */
|
|
typedef struct _EFI_USB_WWID_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT16 InterfaceNumber;
|
|
UINT16 VendorId;
|
|
UINT16 ProductId;
|
|
UINT16 SerialNumber[1];
|
|
} EFI_USB_WWID_DEVICE_PATH, *PEFI_USB_WWID_DEVICE_PATH;
|
|
|
|
/* USB Class device path node */
|
|
typedef struct _EFI_USB_CLASS_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT16 VendorId;
|
|
UINT16 ProductId;
|
|
UINT8 DeviceClass;
|
|
UINT8 DeviceSubclass;
|
|
UINT8 DeviceProtocol;
|
|
} EFI_USB_CLASS_DEVICE_PATH, *PEFI_USB_CLASS_DEVICE_PATH;
|
|
|
|
/* SATA device path node */
|
|
typedef struct _EFI_SATA_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT16 HBAPortNumber;
|
|
UINT16 PortMultiplierPortNumber;
|
|
UINT16 Lun;
|
|
} EFI_SATA_DEVICE_PATH, *PEFI_SATA_DEVICE_PATH;
|
|
|
|
/* Device Logical Unit device path node */
|
|
typedef struct _EFI_DEVICE_LOGICAL_UNIT_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT8 Lun;
|
|
} EFI_DEVICE_LOGICAL_UNIT_DEVICE_PATH, *PEFI_DEVICE_LOGICAL_UNIT_DEVICE_PATH;
|
|
|
|
/* I2O device path node */
|
|
typedef struct _EFI_I2O_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT32 Tid;
|
|
} EFI_I2O_DEVICE_PATH, *PEFI_I2O_DEVICE_PATH;
|
|
|
|
/* MAC Address device path node */
|
|
typedef struct _EFI_MAC_ADDR_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
EFI_MAC_ADDRESS MacAddress;
|
|
UINT8 IfType;
|
|
} EFI_MAC_ADDR_DEVICE_PATH, *PEFI_MAC_ADDR_DEVICE_PATH;
|
|
|
|
/* IPv4 device path node */
|
|
typedef struct _EFI_IPv4_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
EFI_IPv4_ADDRESS LocalIpAddress;
|
|
EFI_IPv4_ADDRESS RemoteIpAddress;
|
|
UINT16 LocalPort;
|
|
UINT16 RemotePort;
|
|
UINT16 Protocol;
|
|
BOOLEAN StaticIpAddress;
|
|
EFI_IPv4_ADDRESS GatewayIpAddress;
|
|
EFI_IPv4_ADDRESS SubnetMask;
|
|
} EFI_IPv4_DEVICE_PATH, *PEFI_IPv4_DEVICE_PATH;
|
|
|
|
/* IPv6 device path node */
|
|
typedef struct _EFI_IPv6_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
EFI_IPv6_ADDRESS LocalIpAddress;
|
|
EFI_IPv6_ADDRESS RemoteIpAddress;
|
|
UINT16 LocalPort;
|
|
UINT16 RemotePort;
|
|
UINT16 Protocol;
|
|
BOOLEAN IPAddressOrigin;
|
|
UINT8 PrefixLength;
|
|
EFI_IPv6_ADDRESS GatewayIpAddress;
|
|
} EFI_IPv6_DEVICE_PATH, *PEFI_IPv6_DEVICE_PATH;
|
|
|
|
/* Uniform Resource Identifiers SubType device path node */
|
|
typedef struct _EFI_URI_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT8 Uri[1];
|
|
} EFI_URI_DEVICE_PATH, *PEFI_URI_DEVICE_PATH;
|
|
|
|
/* VLAN device path node */
|
|
typedef struct _EFI_VLAN_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT16 VlanId;
|
|
} EFI_VLAN_DEVICE_PATH, *PEFI_VLAN_DEVICE_PATH;
|
|
|
|
/* InfiniBand device path node */
|
|
typedef struct _EFI_INFINIBAND_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT32 ResourceFlags;
|
|
UINT8 PortGid[16];
|
|
UINT64 ServiceId;
|
|
UINT64 TargetPortId;
|
|
UINT64 DeviceId;
|
|
} EFI_INFINIBAND_DEVICE_PATH, *PEFI_INFINIBAND_DEVICE_PATH;
|
|
|
|
/* UART device path node */
|
|
typedef struct _EFI_UART_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT32 Reserved;
|
|
UINT64 BaudRate;
|
|
UINT8 DataBits;
|
|
UINT8 Parity;
|
|
UINT8 StopBits;
|
|
} EFI_UART_DEVICE_PATH, *PEFI_UART_DEVICE_PATH;
|
|
|
|
/* Hard Drive device path node */
|
|
typedef struct _EFI_HARDDRIVE_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT32 PartitionNumber;
|
|
UINT64 PartitionStart;
|
|
UINT64 PartitionSize;
|
|
UINT8 Signature[16];
|
|
UINT8 MBRType;
|
|
UINT8 SignatureType;
|
|
} EFI_HARDDRIVE_DEVICE_PATH, *PEFI_HARDDRIVE_DEVICE_PATH;
|
|
|
|
/* CDROM device path node */
|
|
typedef struct _EFI_CDROM_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT32 BootEntry;
|
|
UINT64 PartitionStart;
|
|
UINT64 PartitionSize;
|
|
} EFI_CDROM_DEVICE_PATH, *PEFI_CDROM_DEVICE_PATH;
|
|
|
|
/* File Path device path node */
|
|
typedef struct _EFI_FILEPATH_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT16 PathName[1];
|
|
} EFI_FILEPATH_DEVICE_PATH, *PEFI_FILEPATH_DEVICE_PATH;
|
|
|
|
/* Media Protocol device path node */
|
|
typedef struct _EFI_MEDIA_PROTOCOL_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
EFI_GUID Protocol;
|
|
} EFI_MEDIA_PROTOCOL_DEVICE_PATH, *PEFI_MEDIA_PROTOCOL_DEVICE_PATH;
|
|
|
|
/* Media Firmware File SubType device path node */
|
|
typedef struct _EFI_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
EFI_GUID FvFileName;
|
|
} EFI_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH, *PEFI_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;
|
|
|
|
/* Media Firmware Volume SubType device path node */
|
|
typedef struct _EFI_MEDIA_FW_VOL_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
EFI_GUID FvName;
|
|
} EFI_MEDIA_FW_VOL_DEVICE_PATH, *PEFI_MEDIA_FW_VOL_DEVICE_PATH;
|
|
|
|
/* Media relative offset range device path node */
|
|
typedef struct _EFI_MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT32 Reserved;
|
|
UINT64 StartingOffset;
|
|
UINT64 EndingOffset;
|
|
} EFI_MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH, *PEFI_MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH;
|
|
|
|
/* BIOS Boot Specification (BBS) device path node */
|
|
typedef struct _EFI_BBS_BBS_DEVICE_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
UINT16 DeviceType;
|
|
UINT16 StatusFlag;
|
|
UINT8 String[1];
|
|
} EFI_BBS_BBS_DEVICE_PATH, *PEFI_BBS_BBS_DEVICE_PATH;
|
|
|
|
/* EFI device path nodes union */
|
|
typedef union _EFI_DEV_PATH
|
|
{
|
|
EFI_DEVICE_PATH_PROTOCOL DevPath;
|
|
EFI_PCI_DEVICE_PATH Pci;
|
|
EFI_PCCARD_DEVICE_PATH PcCard;
|
|
EFI_MEMMAP_DEVICE_PATH MemMap;
|
|
EFI_VENDOR_DEVICE_PATH Vendor;
|
|
EFI_UNKNOWN_DEVICE_VENDOR_DEVICE_PATH UnknownVendor;
|
|
EFI_CONTROLLER_DEVICE_PATH Controller;
|
|
EFI_ACPI_HID_DEVICE_PATH Acpi;
|
|
EFI_ATAPI_DEVICE_PATH Atapi;
|
|
EFI_SCSI_DEVICE_PATH Scsi;
|
|
EFI_FIBRECHANNEL_DEVICE_PATH FibreChannel;
|
|
EFI_1394_DEVICE_PATH F1394;
|
|
EFI_USB_DEVICE_PATH Usb;
|
|
EFI_USB_CLASS_DEVICE_PATH UsbClass;
|
|
EFI_I2O_DEVICE_PATH I2O;
|
|
EFI_MAC_ADDR_DEVICE_PATH MacAddr;
|
|
EFI_IPv4_DEVICE_PATH Ipv4;
|
|
EFI_IPv6_DEVICE_PATH Ipv6;
|
|
EFI_URI_DEVICE_PATH Uri;
|
|
EFI_INFINIBAND_DEVICE_PATH InfiniBand;
|
|
EFI_UART_DEVICE_PATH Uart;
|
|
EFI_HARDDRIVE_DEVICE_PATH HardDrive;
|
|
EFI_CDROM_DEVICE_PATH CD;
|
|
EFI_FILEPATH_DEVICE_PATH FilePath;
|
|
EFI_MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol;
|
|
EFI_BBS_BBS_DEVICE_PATH Bbs;
|
|
} EFI_DEV_PATH, *PEFI_DEV_PATH;
|
|
|
|
/* EFI device path node pointers union */
|
|
typedef union _EFI_DEV_PATH_PTR
|
|
{
|
|
PEFI_DEVICE_PATH_PROTOCOL DevPath;
|
|
PEFI_PCI_DEVICE_PATH Pci;
|
|
PEFI_PCCARD_DEVICE_PATH PcCard;
|
|
PEFI_MEMMAP_DEVICE_PATH MemMap;
|
|
PEFI_VENDOR_DEVICE_PATH Vendor;
|
|
PEFI_UNKNOWN_DEVICE_VENDOR_DEVICE_PATH UnknownVendor;
|
|
PEFI_CONTROLLER_DEVICE_PATH Controller;
|
|
PEFI_ACPI_HID_DEVICE_PATH Acpi;
|
|
PEFI_ATAPI_DEVICE_PATH Atapi;
|
|
PEFI_SCSI_DEVICE_PATH Scsi;
|
|
PEFI_FIBRECHANNEL_DEVICE_PATH FibreChannel;
|
|
PEFI_1394_DEVICE_PATH F1394;
|
|
PEFI_USB_DEVICE_PATH Usb;
|
|
PEFI_USB_CLASS_DEVICE_PATH UsbClass;
|
|
PEFI_I2O_DEVICE_PATH I2O;
|
|
PEFI_MAC_ADDR_DEVICE_PATH MacAddr;
|
|
PEFI_IPv4_DEVICE_PATH Ipv4;
|
|
PEFI_IPv6_DEVICE_PATH Ipv6;
|
|
PEFI_URI_DEVICE_PATH Uri;
|
|
PEFI_INFINIBAND_DEVICE_PATH InfiniBand;
|
|
PEFI_UART_DEVICE_PATH Uart;
|
|
PEFI_HARDDRIVE_DEVICE_PATH HardDrive;
|
|
PEFI_FILEPATH_DEVICE_PATH FilePath;
|
|
PEFI_MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol;
|
|
PEFI_CDROM_DEVICE_PATH CD;
|
|
PEFI_BBS_BBS_DEVICE_PATH Bbs;
|
|
} EFI_DEV_PATH_PTR, *PEFI_DEV_PATH_PTR;
|
|
|
|
/* EFI device path to text protocol */
|
|
typedef struct _EFI_DEVICE_PATH_TO_TEXT_PROTOCOL
|
|
{
|
|
PEFI_DEVICE_PATH_TO_TEXT_NODE ConvertDeviceNodeToText;
|
|
PEFI_DEVICE_PATH_TO_TEXT_PATH ConvertDevicePathToText;
|
|
} EFI_DEVICE_PATH_TO_TEXT_PROTOCOL, *PEFI_DEVICE_PATH_TO_TEXT_PROTOCOL;
|
|
|
|
/* EFI device path from text protocol */
|
|
typedef struct _EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL
|
|
{
|
|
PEFI_DEVICE_PATH_FROM_TEXT_NODE ConvertTextToDeviceNode;
|
|
PEFI_DEVICE_PATH_FROM_TEXT_PATH ConvertTextToDevicePath;
|
|
} EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL, *PEFI_DEVICE_PATH_FROM_TEXT_PROTOCOL;
|
|
|
|
/* EFI device path utility protocol */
|
|
typedef struct _EFI_DEVICE_PATH_UTILITIES_PROTOCOL
|
|
{
|
|
PEFI_DEVICE_PATH_UTILS_GET_DEVICE_PATH_SIZE GetDevicePathSize;
|
|
PEFI_DEVICE_PATH_UTILS_DUP_DEVICE_PATH DuplicateDevicePath;
|
|
PEFI_DEVICE_PATH_UTILS_APPEND_PATH AppendDevicePath;
|
|
PEFI_DEVICE_PATH_UTILS_APPEND_NODE AppendDeviceNode;
|
|
PEFI_DEVICE_PATH_UTILS_APPEND_INSTANCE AppendDevicePathInstance;
|
|
PEFI_DEVICE_PATH_UTILS_GET_NEXT_INSTANCE GetNextDevicePathInstance;
|
|
PEFI_DEVICE_PATH_UTILS_IS_MULTI_INSTANCE IsDevicePathMultiInstance;
|
|
PEFI_DEVICE_PATH_UTILS_CREATE_NODE CreateDeviceNode;
|
|
} EFI_DEVICE_PATH_UTILITIES_PROTOCOL, *PEFI_DEVICE_PATH_UTILITIES_PROTOCOL;
|
|
|
|
/* PCI I/O protocol access registers */
|
|
typedef struct _EFI_PCI_IO_PROTOCOL_ACCESS
|
|
{
|
|
EFI_PCI_IO_PROTOCOL_IO_MEM Read;
|
|
EFI_PCI_IO_PROTOCOL_IO_MEM Write;
|
|
} EFI_PCI_IO_PROTOCOL_ACCESS, *PEFI_PCI_IO_PROTOCOL_ACCESS;
|
|
|
|
/* PCI Root Bridge I/O protocol access registers */
|
|
typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS
|
|
{
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM Read;
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM Write;
|
|
} EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS, *PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS;
|
|
|
|
/* PCI I/O protocol configuration access registers */
|
|
typedef struct _EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS
|
|
{
|
|
EFI_PCI_IO_PROTOCOL_CONFIG Read;
|
|
EFI_PCI_IO_PROTOCOL_CONFIG Write;
|
|
} EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS, *PEFI_PCI_IO_PROTOCOL_CONFIG_ACCESS;
|
|
|
|
/* PCI Root Bridge I/O protocol address */
|
|
typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS
|
|
{
|
|
UINT8 Register;
|
|
UINT8 Function;
|
|
UINT8 Device;
|
|
UINT8 Bus;
|
|
UINT32 ExtendedRegister;
|
|
} EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS, *PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS;
|
|
|
|
/* EFI PCI I/O protocol */
|
|
typedef struct _EFI_PCI_IO_PROTOCOL
|
|
{
|
|
EFI_PCI_IO_PROTOCOL_POLL_IO_MEM PollMem;
|
|
EFI_PCI_IO_PROTOCOL_POLL_IO_MEM PollIo;
|
|
EFI_PCI_IO_PROTOCOL_ACCESS Mem;
|
|
EFI_PCI_IO_PROTOCOL_ACCESS Io;
|
|
EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS Pci;
|
|
EFI_PCI_IO_PROTOCOL_COPY_MEM CopyMem;
|
|
EFI_PCI_IO_PROTOCOL_MAP Map;
|
|
EFI_PCI_IO_PROTOCOL_UNMAP Unmap;
|
|
EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer;
|
|
EFI_PCI_IO_PROTOCOL_FREE_BUFFER FreeBuffer;
|
|
EFI_PCI_IO_PROTOCOL_FLUSH Flush;
|
|
EFI_PCI_IO_PROTOCOL_GET_LOCATION GetLocation;
|
|
EFI_PCI_IO_PROTOCOL_ATTRIBUTES Attributes;
|
|
EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES GetBarAttributes;
|
|
EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES SetBarAttributes;
|
|
UINT64 RomSize;
|
|
PVOID RomImage;
|
|
} EFI_PCI_IO_PROTOCOL, *PEFI_PCI_IO_PROTOCOL;
|
|
|
|
/* EFI PCI Root Bridge I/O protocol */
|
|
typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL
|
|
{
|
|
EFI_HANDLE ParentHandle;
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM PollMem;
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM PollIo;
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS Mem;
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS Io;
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS Pci;
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_COPY_MEM CopyMem;
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_MAP Map;
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_UNMAP Unmap;
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer;
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FREE_BUFFER FreeBuffer;
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FLUSH Flush;
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GET_ATTRIBUTES GetAttributes;
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_SET_ATTRIBUTES SetAttributes;
|
|
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_CONFIGURATION Configuration;
|
|
UINT32 SegmentNumber;
|
|
} EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL, *PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL;
|
|
|
|
#endif /* __XTDK_XTUEFI_H */
|