/** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory * FILE: sdk/xtdk/xtuefi.h * DESCRIPTION: XT UEFI support * DEVELOPERS: Rafal Kupiec */ #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; /* Enumeration of EFI I/O widths */ typedef enum _EFI_IO_WIDTH { IO_UINT8, IO_UINT16, IO_UINT32, IO_UINT64, MMIO_COPY_UINT8, MMIO_COPY_UINT16, MMIO_COPY_UINT32, MMIO_COPY_UINT64 } EFI_IO_WIDTH, *PEFI_IO_WIDTH; /* Enumeration of EFI I/O operation types */ typedef enum _EFI_IO_OPERATION_TYPE { EfiBusMasterRead, EfiBusMasterWrite, EfiBusMasterCommonBuffer } EFI_IO_OPERATION_TYPE, *PEFI_IO_OPERATION_TYPE; /* Enumeration of EFI GOP pixel formats */ typedef enum _EFI_GRAPHICS_PIXEL_FORMAT { PixelRedGreenBlueReserved8BitPerColor, PixelBlueGreenRedReserved8BitPerColor, PixelBitMask, PixelBltOnly, PixelFormatMax } EFI_GRAPHICS_PIXEL_FORMAT, *PEFI_GRAPHICS_PIXEL_FORMAT; /* Enumeration of EFI GOP output BLT operations */ typedef enum EFI_GRAPHICS_OUTPUT_BLT_OPERATION { EfiBltVideoFill, EfiBltVideoToBltBuffer, EfiBltBufferToVideo, EfiBltVideoToVideo, EfiGraphicsOutputBltOperationMax } EFI_GRAPHICS_OUTPUT_BLT_OPERATION, *PEFI_GRAPHICS_OUTPUT_BLT_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_KEY_STATE EFI_KEY_STATE, *PEFI_KEY_STATE; typedef struct _EFI_KEY_DATA EFI_KEY_DATA, *PEFI_KEY_DATA; typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL, *PEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL; 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; typedef struct _EFI_BLOCK_IO_PROTOCOL EFI_BLOCK_IO_PROTOCOL, *PEFI_BLOCK_IO_PROTOCOL; typedef struct _EFI_BLOCK_IO2_PROTOCOL EFI_BLOCK_IO2_PROTOCOL, *PEFI_BLOCK_IO2_PROTOCOL; typedef struct _EFI_BLOCK_IO2_TOKEN EFI_BLOCK_IO2_TOKEN, *PEFI_BLOCK_IO2_TOKEN; typedef struct _EFI_DISK_IO_PROTOCOL EFI_DISK_IO_PROTOCOL, *PEFI_DISK_IO_PROTOCOL; typedef struct _EFI_DISK_IO2_TOKEN EFI_DISK_IO2_TOKEN, *PEFI_DISK_IO2_TOKEN; typedef struct _EFI_DISK_IO2_PROTOCOL EFI_DISK_IO2_PROTOCOL, *PEFI_DISK_IO2_PROTOCOL; typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL EFI_SIMPLE_FILE_SYSTEM_PROTOCOL, *PEFI_SIMPLE_FILE_SYSTEM_PROTOCOL; typedef struct _EFI_FILE_IO_TOKEN EFI_FILE_IO_TOKEN, *PEFI_FILE_IO_TOKEN; typedef struct _EFI_FILE_HANDLE EFI_FILE_HANDLE, *PEFI_FILE_HANDLE; typedef struct _EFI_FILE_INFO EFI_FILE_INFO, *PEFI_FILE_INFO; typedef struct _EFI_FILE_SYSTEM_INFO EFI_FILE_SYSTEM_INFO, *PEFI_FILE_SYSTEM_INFO; typedef struct _EFI_FILE_SYSTEM_VOLUME_LABEL EFI_FILE_SYSTEM_VOLUME_LABEL, *PEFI_FILE_SYSTEM_VOLUME_LABEL; typedef struct _EFI_LOAD_FILE_PROTOCOL EFI_LOAD_FILE_PROTOCOL, *PEFI_LOAD_FILE_PROTOCOL; typedef struct _EFI_IO_ACCESS EFI_IO_ACCESS, *PEFI_IO_ACCESS; typedef struct _EFI_DEVICE_IO_PROTOCOL EFI_DEVICE_IO_PROTOCOL, *PEFI_DEVICE_IO_PROTOCOL; typedef struct _EFI_HASH_PROTOCOL EFI_HASH_PROTOCOL, *PEFI_HASH_PROTOCOL; typedef struct _EFI_UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL, *PEFI_UNICODE_COLLATION_PROTOCOL; typedef struct _EFI_PIXEL_BITMASK EFI_PIXEL_BITMASK, *PEFI_PIXEL_BITMASK; typedef struct _EFI_GRAPHICS_OUTPUT_MODE_INFORMATION EFI_GRAPHICS_OUTPUT_MODE_INFORMATION, *PEFI_GRAPHICS_OUTPUT_MODE_INFORMATION; typedef struct _EFI_GRAPHICS_OUTPUT_BLT_PIXEL EFI_GRAPHICS_OUTPUT_BLT_PIXEL, *PEFI_GRAPHICS_OUTPUT_BLT_PIXEL; typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE, *PEFI_GRAPHICS_OUTPUT_PROTOCOL_MODE; typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL EFI_GRAPHICS_OUTPUT_PROTOCOL, *PEFI_GRAPHICS_OUTPUT_PROTOCOL; typedef struct _EFI_EDID_DISCOVERED_PROTOCOL EFI_EDID_DISCOVERED_PROTOCOL, *PEFI_EDID_DISCOVERED_PROTOCOL; typedef struct _EFI_EDID_ACTIVE_PROTOCOL EFI_EDID_ACTIVE_PROTOCOL, *PEFI_EDID_ACTIVE_PROTOCOL; typedef struct _EFI_EDID_OVERRIDE_PROTOCOL EFI_EDID_OVERRIDE_PROTOCOL, *PEFI_EDID_OVERRIDE_PROTOCOL; typedef struct _EFI_SERVICE_BINDING EFI_SERVICE_BINDING, *PEFI_SERVICE_BINDING; typedef struct _EFI_DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING_PROTOCOL, *PEFI_DRIVER_BINDING_PROTOCOL; typedef struct _EFI_COMPONENT_NAME_PROTOCOL EFI_COMPONENT_NAME_PROTOCOL, *PEFI_COMPONENT_NAME_PROTOCOL; typedef struct _EFI_COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2_PROTOCOL, *PEFI_COMPONENT_NAME2_PROTOCOL; typedef struct _EFI_LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE_PROTOCOL, *PEFI_LOADED_IMAGE_PROTOCOL; typedef struct _EFI_RNG_PROTOCOL EFI_RNG_PROTOCOL, *PEFI_RNG_PROTOCOL; typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL, *PEFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL; typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL, *PEFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL; typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL, *PEFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL; typedef struct _EFI_EBC_PROTOCOL EFI_EBC_PROTOCOL, *PEFI_EBC_PROTOCOL; typedef struct _EFI_MBR_PARTITION_RECORD EFI_MBR_PARTITION_RECORD, *PEFI_MBR_PARTITION_RECORD; typedef struct _EFI_MASTER_BOOT_RECORD EFI_MASTER_BOOT_RECORD, *PEFI_MASTER_BOOT_RECORD; typedef struct _EFI_GPT_PARTITION_TABLE_HEADER EFI_GPT_PARTITION_TABLE_HEADER, *PEFI_GPT_PARTITION_TABLE_HEADER; typedef struct _EFI_GPT_PARTITION_ENTRY EFI_GPT_PARTITION_ENTRY, *PEFI_GPT_PARTITION_ENTRY; /* 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; typedef union _EFI_HASH_OUTPUT EFI_HASH_OUTPUT, *PEFI_HASH_OUTPUT; typedef union _EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION, *PEFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION; /* 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_OUTPUT_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 EFI_STATUS (*PEFI_INPUT_RESET_EX)(IN PEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL This, IN BOOLEAN ExtendedVerification); typedef EFI_STATUS (*PEFI_INPUT_READ_KEY_EX)(IN PEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL This, OUT PEFI_KEY_DATA KeyData); typedef EFI_STATUS (*PEFI_SET_STATE)(IN PEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL This, IN PUINT8 KeyToggleState); typedef EFI_STATUS (*PEFI_KEY_NOTIFY_FUNCTION)(IN PEFI_KEY_DATA KeyData); typedef EFI_STATUS (*PEFI_REGISTER_KEYSTROKE_NOTIFY)(IN PEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL This, IN PEFI_KEY_DATA KeyData, IN PEFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction, OUT PVOID *NotifyHandle); typedef EFI_STATUS (*PEFI_UNREGISTER_KEYSTROKE_NOTIFY)(IN PEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL This, IN PVOID NotificationHandle); 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); typedef EFI_STATUS (*PEFI_BLOCK_RESET)(IN PEFI_BLOCK_IO_PROTOCOL This, IN BOOLEAN ExtendedVerification); typedef EFI_STATUS (*PEFI_BLOCK_READ)(IN PEFI_BLOCK_IO_PROTOCOL This, IN UINT32 MediaId, IN EFI_LBA LBA, IN UINT_PTR BufferSize, OUT PVOID Buffer); typedef EFI_STATUS (*PEFI_BLOCK_WRITE)(IN PEFI_BLOCK_IO_PROTOCOL This, IN UINT32 MediaId, IN EFI_LBA LBA, IN UINT_PTR BufferSize, IN PVOID Buffer); typedef EFI_STATUS (*PEFI_BLOCK_FLUSH)(IN PEFI_BLOCK_IO_PROTOCOL This); typedef EFI_STATUS (*PEFI_BLOCK_RESET_EX)(IN PEFI_BLOCK_IO2_PROTOCOL This, IN BOOLEAN ExtendedVerification); typedef EFI_STATUS (*PEFI_BLOCK_READ_EX)(IN PEFI_BLOCK_IO2_PROTOCOL This, IN UINT32 MediaId, IN EFI_LBA LBA, IN OUT PEFI_BLOCK_IO2_TOKEN Token, IN UINT_PTR BufferSize, OUT PVOID Buffer); typedef EFI_STATUS (*PEFI_BLOCK_WRITE_EX)(IN PEFI_BLOCK_IO2_PROTOCOL This, IN UINT32 MediaId, IN EFI_LBA LBA, IN OUT PEFI_BLOCK_IO2_TOKEN Token, IN UINT_PTR BufferSize, IN PVOID Buffer); typedef EFI_STATUS (*PEFI_BLOCK_FLUSH_EX)(IN PEFI_BLOCK_IO2_PROTOCOL This, IN OUT PEFI_BLOCK_IO2_TOKEN Token); typedef EFI_STATUS (*PEFI_DISK_READ)(IN PEFI_DISK_IO_PROTOCOL This, IN UINT32 MediaId, IN UINT64 Offset, IN UINT_PTR BufferSize, OUT PVOID Buffer); typedef EFI_STATUS (*PEFI_DISK_WRITE)(IN PEFI_DISK_IO_PROTOCOL This, IN UINT32 MediaId, IN UINT64 Offset, IN UINT_PTR BufferSize, IN PVOID Buffer); typedef EFI_STATUS (*PEFI_DISK_CANCEL_EX)(IN PEFI_DISK_IO2_PROTOCOL This); typedef EFI_STATUS (*PEFI_DISK_READ_EX)(IN PEFI_DISK_IO2_PROTOCOL This, IN UINT32 MediaId, IN UINT64 Offset, IN OUT PEFI_DISK_IO2_TOKEN Token, IN UINT_PTR BufferSize, OUT PVOID Buffer); typedef EFI_STATUS (*PEFI_DISK_WRITE_EX)(IN PEFI_DISK_IO2_PROTOCOL This, IN UINT32 MediaId, IN UINT64 Offset, IN OUT PEFI_DISK_IO2_TOKEN Token, IN UINT_PTR BufferSize, IN PVOID Buffer); typedef EFI_STATUS (*PEFI_DISK_FLUSH_EX)(IN PEFI_DISK_IO2_PROTOCOL This, IN OUT PEFI_DISK_IO2_TOKEN Token); typedef EFI_STATUS (*PEFI_VOLUME_OPEN)(IN PEFI_SIMPLE_FILE_SYSTEM_PROTOCOL This, OUT PEFI_FILE_HANDLE *Root); typedef EFI_STATUS (*PEFI_FILE_OPEN)(IN PEFI_FILE_HANDLE File, OUT PEFI_FILE_HANDLE *NewHandle, IN PUINT16 FileName, IN UINT64 OpenMode, IN UINT64 Attributes); typedef EFI_STATUS (*PEFI_FILE_CLOSE)(IN PEFI_FILE_HANDLE File); typedef EFI_STATUS (*PEFI_FILE_DELETE)(IN PEFI_FILE_HANDLE File); typedef EFI_STATUS (*PEFI_FILE_READ)(IN PEFI_FILE_HANDLE File, IN OUT PUINT_PTR BufferSize, OUT PVOID Buffer); typedef EFI_STATUS (*PEFI_FILE_WRITE)(IN PEFI_FILE_HANDLE File, IN OUT PUINT_PTR BufferSize, IN PVOID Buffer); typedef EFI_STATUS (*PEFI_FILE_SET_POSITION)(IN PEFI_FILE_HANDLE File, IN UINT64 Position); typedef EFI_STATUS (*PEFI_FILE_GET_POSITION)(IN PEFI_FILE_HANDLE File, OUT PUINT64 Position); typedef EFI_STATUS (*PEFI_FILE_GET_INFO)(IN PEFI_FILE_HANDLE File, IN PEFI_GUID InformationType, IN OUT PUINT_PTR BufferSize, OUT PVOID Buffer); typedef EFI_STATUS (*PEFI_FILE_SET_INFO)(IN PEFI_FILE_HANDLE File, IN PEFI_GUID InformationType, IN UINT_PTR BufferSize, IN PVOID Buffer); typedef EFI_STATUS (*PEFI_FILE_FLUSH)(IN PEFI_FILE_HANDLE File); typedef EFI_STATUS (*PEFI_FILE_OPEN_EX)(IN PEFI_FILE_HANDLE File, OUT PEFI_FILE_HANDLE *NewHandle, IN PUINT16 FileName, IN UINT64 OpenMode, IN UINT64 Attributes, IN OUT PEFI_FILE_IO_TOKEN Token); typedef EFI_STATUS (*PEFI_FILE_READ_EX)(IN PEFI_FILE_HANDLE File, IN OUT PEFI_FILE_IO_TOKEN Token); typedef EFI_STATUS (*PEFI_FILE_WRITE_EX)(IN PEFI_FILE_HANDLE File, IN OUT PEFI_FILE_IO_TOKEN Token); typedef EFI_STATUS (*PEFI_FILE_FLUSH_EX)(IN PEFI_FILE_HANDLE File, IN OUT PEFI_FILE_IO_TOKEN Token); typedef EFI_STATUS (*PEFI_LOAD_FILE)(IN PEFI_LOAD_FILE_PROTOCOL This, IN PEFI_DEVICE_PATH_PROTOCOL FilePath, IN BOOLEAN BootPolicy, IN OUT PUINT_PTR BufferSize, IN PVOID Buffer); typedef EFI_STATUS (*PEFI_DEVICE_IO)(IN PEFI_DEVICE_IO_PROTOCOL This, IN EFI_IO_WIDTH Width, IN UINT64 Address, IN UINT_PTR Count, IN OUT PVOID Buffer); typedef EFI_STATUS (*PEFI_PCIDEV_DEVICE_PATH)(IN PEFI_DEVICE_IO_PROTOCOL This, IN UINT64 Address, IN OUT PEFI_DEVICE_PATH_PROTOCOL *PciDevicePath); typedef EFI_STATUS (*PEFI_IO_MAP)(IN PEFI_DEVICE_IO_PROTOCOL This, IN EFI_IO_OPERATION_TYPE Operation, IN PEFI_PHYSICAL_ADDRESS HostAddress, IN OUT PUINT_PTR NumberOfBytes, OUT PEFI_PHYSICAL_ADDRESS DeviceAddress, OUT PVOID *Mapping); typedef EFI_STATUS (*PEFI_IO_UNMAP)(IN PEFI_DEVICE_IO_PROTOCOL This, IN PVOID Mapping); typedef EFI_STATUS (*PEFI_IO_ALLOCATE_BUFFER)(IN PEFI_DEVICE_IO_PROTOCOL This, IN EFI_ALLOCATE_TYPE Type, IN EFI_MEMORY_TYPE MemoryType, IN UINT_PTR Pages, IN OUT PEFI_PHYSICAL_ADDRESS HostAddress); typedef EFI_STATUS (*PEFI_IO_FLUSH)(IN PEFI_DEVICE_IO_PROTOCOL This); typedef EFI_STATUS (*PEFI_IO_FREE_BUFFER)(IN PEFI_DEVICE_IO_PROTOCOL This, IN UINT_PTR Pages, IN EFI_PHYSICAL_ADDRESS HostAddress); typedef INT_PTR (*PEFI_UNICODE_STRICOLL)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN PUINT16 s1, IN PUINT16 s2); typedef BOOLEAN (*PEFI_UNICODE_METAIMATCH)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN PUINT16 String, IN PUINT16 Pattern); typedef VOID (*PEFI_UNICODE_STRLWR)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN OUT PUINT16 Str); typedef VOID (*PEFI_UNICODE_STRUPR)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN OUT PUINT16 Str); typedef VOID (*PEFI_UNICODE_FATTOSTR)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN UINT_PTR FatSize, IN PUINT8 Fat, OUT PUINT16 String); typedef BOOLEAN (*PEFI_UNICODE_STRTOFAT)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN PUINT16 String, IN UINT_PTR FatSize, OUT PUINT8 Fat); typedef EFI_STATUS (*PEFI_HASH_GET_HASH_SIZE)(IN CONST PEFI_HASH_PROTOCOL This, IN CONST PEFI_GUID HashAlgorithm, OUT PUINT_PTR HashSize); typedef EFI_STATUS (*PEFI_HASH_HASH)(IN CONST PEFI_HASH_PROTOCOL This, IN CONST PEFI_GUID HashAlgorithm, IN BOOLEAN Extend, IN CONST PUINT8 Message, IN UINT64 MessageSize, IN OUT PEFI_HASH_OUTPUT Hash); typedef EFI_STATUS (*PEFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE)(IN PEFI_GRAPHICS_OUTPUT_PROTOCOL This, IN UINT32 ModeNumber, OUT PUINT_PTR SizeOfInfo, OUT PEFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info); typedef EFI_STATUS (*PEFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE)(IN PEFI_GRAPHICS_OUTPUT_PROTOCOL This, IN UINT32 ModeNumber); typedef EFI_STATUS (*PEFI_GRAPHICS_OUTPUT_PROTOCOL_BLT)(IN PEFI_GRAPHICS_OUTPUT_PROTOCOL This, IN PEFI_GRAPHICS_OUTPUT_BLT_PIXEL BltBuffer, IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation, IN UINT_PTR SourceX, IN UINT_PTR SourceY, IN UINT_PTR DestinationX, IN UINT_PTR DestinationY, IN UINT_PTR Width, IN UINT_PTR Height, IN UINT_PTR Delta); typedef EFI_STATUS (*PEFI_EDID_OVERRIDE_PROTOCOL_GET_EDID)(IN PEFI_EDID_OVERRIDE_PROTOCOL This, IN PEFI_HANDLE ChildHandle, OUT PUINT32 Attributes, IN OUT PUINT_PTR EdidSize, IN OUT PUINT8 *Edid); typedef EFI_STATUS (*PEFI_SERVICE_BINDING_CREATE_CHILD)(IN PEFI_SERVICE_BINDING This, IN PEFI_HANDLE ChildHandle); typedef EFI_STATUS (*PEFI_SERVICE_BINDING_DESTROY_CHILD)(IN PEFI_SERVICE_BINDING This, IN EFI_HANDLE ChildHandle); typedef EFI_STATUS (*PEFI_DRIVER_BINDING_PROTOCOL_SUPPORTED)(IN PEFI_DRIVER_BINDING_PROTOCOL This, IN EFI_HANDLE ControllerHandle, IN PEFI_DEVICE_PATH_PROTOCOL RemainingDevicePath); typedef EFI_STATUS (*PEFI_DRIVER_BINDING_PROTOCOL_START)(IN PEFI_DRIVER_BINDING_PROTOCOL This, IN EFI_HANDLE ControllerHandle, IN PEFI_DEVICE_PATH_PROTOCOL RemainingDevicePath); typedef EFI_STATUS (*PEFI_DRIVER_BINDING_PROTOCOL_STOP)(IN PEFI_DRIVER_BINDING_PROTOCOL This, IN EFI_HANDLE ControllerHandle, IN UINT_PTR NumberOfChildren, IN PEFI_HANDLE ChildHandleBuffer); typedef EFI_STATUS (*PEFI_COMPONENT_NAME_GET_DRIVER_NAME)(IN PEFI_COMPONENT_NAME_PROTOCOL This, IN PUINT8 Language, OUT PUINT16 *DriverName); typedef EFI_STATUS (*PEFI_COMPONENT_NAME_GET_CONTROLLER_NAME)(IN PEFI_COMPONENT_NAME_PROTOCOL This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle, IN PUINT8 Language, OUT PUINT16 *ControllerName); typedef EFI_STATUS (*PEFI_COMPONENT_NAME2_GET_DRIVER_NAME)(IN PEFI_COMPONENT_NAME2_PROTOCOL This, IN PUINT8 Language, OUT PUINT16 *DriverName); typedef EFI_STATUS (*PEFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)(IN PEFI_COMPONENT_NAME2_PROTOCOL This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle, IN PUINT8 Language, OUT PUINT16 *ControllerName); typedef EFI_STATUS (*PEFI_RNG_GET_INFO)(IN PEFI_RNG_PROTOCOL This, IN OUT PUINT_PTR RNGAlgorithmListSize, OUT PEFI_GUID RNGAlgorithmList); typedef EFI_STATUS (*PEFI_RNG_GET_RNG)(IN PEFI_RNG_PROTOCOL This, IN PEFI_GUID RNGAlgorithm, IN UINT_PTR RNGValueLength, OUT PUINT8 RNGValue); typedef EFI_STATUS (*PEFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER)(IN PEFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL This, IN EFI_HANDLE ControllerHandle, IN OUT PEFI_HANDLE DriverImageHandle); typedef EFI_STATUS (*PEFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH)(IN PEFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL This, IN EFI_HANDLE ControllerHandle, IN OUT PEFI_DEVICE_PATH_PROTOCOL *DriverImagePath); typedef EFI_STATUS (*PEFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED)(IN PEFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL This, IN EFI_HANDLE ControllerHandle, IN PEFI_DEVICE_PATH_PROTOCOL DriverImagePath, IN EFI_HANDLE DriverImageHandle); typedef EFI_STATUS (*PEFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER)(IN PEFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL This, IN OUT PEFI_HANDLE DriverImageHandle); typedef UINT32 (*PEFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION)(IN PEFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL This); typedef EFI_STATUS (*PEFI_EBC_CREATE_THUNK)(IN PEFI_EBC_PROTOCOL This, IN EFI_HANDLE ImageHandle, IN PVOID EbcEntryPoint, OUT PVOID *Thunk); typedef EFI_STATUS (*PEFI_EBC_UNLOAD_IMAGE)(IN PEFI_EBC_PROTOCOL This, IN EFI_HANDLE ImageHandle); typedef EFI_STATUS (*PEFI_EBC_ICACHE_FLUSH)(IN EFI_PHYSICAL_ADDRESS Start, IN UINT64 Length); typedef EFI_STATUS (*PEFI_EBC_REGISTER_ICACHE_FLUSH)(IN PEFI_EBC_PROTOCOL This, IN PEFI_EBC_ICACHE_FLUSH Flush); typedef EFI_STATUS (*PEFI_EBC_GET_VERSION)(IN PEFI_EBC_PROTOCOL This, IN OUT PUINT64 Version); /* 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; /* EFI Capsule Block Descriptor */ typedef struct _EFI_CAPSULE_BLOCK_DESCRIPTOR { UINT64 Length; union { EFI_PHYSICAL_ADDRESS DataBlock; EFI_PHYSICAL_ADDRESS ContinuationPointer; } Union; } EFI_CAPSULE_BLOCK_DESCRIPTOR, *PEFI_CAPSULE_BLOCK_DESCRIPTOR; /* 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_OUTPUT_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 Key State information */ typedef struct _EFI_KEY_STATE { UINT32 KeyShiftState; UINT8 KeyToggleState; } EFI_KEY_STATE, *PEFI_KEY_STATE; /* EFI Key Data information */ typedef struct _EFI_KEY_DATA { EFI_INPUT_KEY Key; EFI_KEY_STATE KeyState; } EFI_KEY_DATA, *PEFI_KEY_DATA; /* EFI Simple Text Input Ex protocol */ typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL { PEFI_INPUT_RESET_EX Reset; PEFI_INPUT_READ_KEY_EX ReadKeyStrokeEx; EFI_EVENT WaitForKeyEx; PEFI_SET_STATE SetState; PEFI_REGISTER_KEYSTROKE_NOTIFY RegisterKeyNotify; PEFI_UNREGISTER_KEYSTROKE_NOTIFY UnregisterKeyNotify; } EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL, *PEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL; /* 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; /* Block I/O media structure */ typedef struct _EFI_BLOCK_IO_MEDIA { UINT32 MediaId; BOOLEAN RemovableMedia; BOOLEAN MediaPresent; BOOLEAN LogicalPartition; BOOLEAN ReadOnly; BOOLEAN WriteCaching; UINT32 BlockSize; UINT32 IoAlign; EFI_LBA LastBlock; EFI_LBA LowestAlignedLba; UINT32 LogicalBlocksPerPhysicalBlock; UINT32 OptimalTransferLengthGranularity; } EFI_BLOCK_IO_MEDIA, *PEFI_BLOCK_IO_MEDIA; /* EFI Block I/O protocol */ typedef struct _EFI_BLOCK_IO_PROTOCOL { UINT64 Revision; PEFI_BLOCK_IO_MEDIA Media; PEFI_BLOCK_RESET Reset; PEFI_BLOCK_READ ReadBlocks; PEFI_BLOCK_WRITE WriteBlocks; PEFI_BLOCK_FLUSH FlushBlocks; } EFI_BLOCK_IO_PROTOCOL, *PEFI_BLOCK_IO_PROTOCOL; /* EFI Block IO2 protocol */ typedef struct _EFI_BLOCK_IO2_PROTOCOL { PEFI_BLOCK_IO_MEDIA Media; PEFI_BLOCK_RESET_EX Reset; PEFI_BLOCK_READ_EX ReadBlocksEx; PEFI_BLOCK_WRITE_EX WriteBlocksEx; PEFI_BLOCK_FLUSH_EX FlushBlocksEx; } EFI_BLOCK_IO2_PROTOCOL, *PEFI_BLOCK_IO2_PROTOCOL; /* EFI Block IO2 token */ typedef struct _EFI_BLOCK_IO2_TOKEN { EFI_EVENT Event; EFI_STATUS TransactionStatus; } EFI_BLOCK_IO2_TOKEN, *PEFI_BLOCK_IO2_TOKEN; /* EFI Disk IO protocol */ typedef struct _EFI_DISK_IO_PROTOCOL { UINT64 Revision; PEFI_DISK_READ ReadDisk; PEFI_DISK_WRITE WriteDisk; } EFI_DISK_IO_PROTOCOL, *PEFI_DISK_IO_PROTOCOL; /* EFI Disk IO2 token */ typedef struct _EFI_DISK_IO2_TOKEN { EFI_EVENT Event; EFI_STATUS TransactionStatus; } EFI_DISK_IO2_TOKEN, *PEFI_DISK_IO2_TOKEN; /* EFI Disk IO2 protocol */ typedef struct _EFI_DISK_IO2_PROTOCOL { UINT64 Revision; PEFI_DISK_CANCEL_EX Cancel; PEFI_DISK_READ_EX ReadDiskEx; PEFI_DISK_WRITE_EX WriteDiskEx; PEFI_DISK_FLUSH_EX FlushDiskEx; } EFI_DISK_IO2_PROTOCOL, *PEFI_DISK_IO2_PROTOCOL; /* EFI Simple File System (SFS) protocol */ typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL { UINT64 Revision; PEFI_VOLUME_OPEN OpenVolume; } EFI_SIMPLE_FILE_SYSTEM_PROTOCOL, *PEFI_SIMPLE_FILE_SYSTEM_PROTOCOL; /* EFI File I/O token */ typedef struct _EFI_FILE_IO_TOKEN { EFI_EVENT Event; EFI_STATUS Status; UINT_PTR BufferSize; PVOID Buffer; } EFI_FILE_IO_TOKEN, *PEFI_FILE_IO_TOKEN; /* EFI File Handle */ typedef struct _EFI_FILE_HANDLE { UINT64 Revision; PEFI_FILE_OPEN Open; PEFI_FILE_CLOSE Close; PEFI_FILE_DELETE Delete; PEFI_FILE_READ Read; PEFI_FILE_WRITE Write; PEFI_FILE_GET_POSITION GetPosition; PEFI_FILE_SET_POSITION SetPosition; PEFI_FILE_GET_INFO GetInfo; PEFI_FILE_SET_INFO SetInfo; PEFI_FILE_FLUSH Flush; PEFI_FILE_OPEN_EX OpenEx; PEFI_FILE_READ_EX ReadEx; PEFI_FILE_WRITE_EX WriteEx; PEFI_FILE_FLUSH_EX FlushEx; } EFI_FILE_HANDLE, *PEFI_FILE_HANDLE; /* EFI File Info structure */ typedef struct _EFI_FILE_INFO { UINT64 Size; UINT64 FileSize; UINT64 PhysicalSize; EFI_TIME CreateTime; EFI_TIME LastAccessTime; EFI_TIME ModificationTime; UINT64 Attribute; UINT16 FileName[1]; } EFI_FILE_INFO, *PEFI_FILE_INFO; /* EFI File System Info structure */ typedef struct _EFI_FILE_SYSTEM_INFO { UINT64 Size; BOOLEAN ReadOnly; UINT64 VolumeSize; UINT64 FreeSpace; UINT32 BlockSize; UINT16 VolumeLabel[1]; } EFI_FILE_SYSTEM_INFO, *PEFI_FILE_SYSTEM_INFO; /* EFI File System Volume Label */ typedef struct _EFI_FILE_SYSTEM_VOLUME_LABEL { UINT16 VolumeLabel[1]; } EFI_FILE_SYSTEM_VOLUME_LABEL, *PEFI_FILE_SYSTEM_VOLUME_LABEL; /* Load file protocol */ typedef struct _EFI_LOAD_FILE_PROTOCOL { PEFI_LOAD_FILE LoadFile; } EFI_LOAD_FILE_PROTOCOL, *PEFI_LOAD_FILE_PROTOCOL; /* EFI I/O access structure */ typedef struct _EFI_IO_ACCESS { PEFI_DEVICE_IO Read; PEFI_DEVICE_IO Write; } EFI_IO_ACCESS, *PEFI_IO_ACCESS; /* EFI Device I/O protocol */ typedef struct _EFI_DEVICE_IO_PROTOCOL { EFI_IO_ACCESS Mem; EFI_IO_ACCESS Io; EFI_IO_ACCESS Pci; PEFI_IO_MAP Map; PEFI_PCIDEV_DEVICE_PATH PciDevicePath; PEFI_IO_UNMAP Unmap; PEFI_IO_ALLOCATE_BUFFER AllocateBuffer; PEFI_IO_FLUSH Flush; PEFI_IO_FREE_BUFFER FreeBuffer; } EFI_DEVICE_IO_PROTOCOL, *PEFI_DEVICE_IO_PROTOCOL; /* EFI Hash Output union */ typedef union _EFI_HASH_OUTPUT { PUINT8 Md5Hash; PUINT8 Sha1Hash; PUINT8 Sha224Hash; PUINT8 Sha256Hash; PUINT8 Sha384Hash; PUINT8 Sha512Hash; } EFI_HASH_OUTPUT, *PEFI_HASH_OUTPUT; /* EFI Hash protocol */ typedef struct _EFI_HASH_PROTOCOL { PEFI_HASH_GET_HASH_SIZE GetHashSize; PEFI_HASH_HASH Hash; } EFI_HASH_PROTOCOL, *PEFI_HASH_PROTOCOL; /* EFI Unicode Collation protocol */ typedef struct _EFI_UNICODE_COLLATION_PROTOCOL { PEFI_UNICODE_STRICOLL StriColl; PEFI_UNICODE_METAIMATCH MetaiMatch; PEFI_UNICODE_STRLWR StrLwr; PEFI_UNICODE_STRUPR StrUpr; PEFI_UNICODE_FATTOSTR FatToStr; PEFI_UNICODE_STRTOFAT StrToFat; PUINT8 SupportedLanguages; } EFI_UNICODE_COLLATION_PROTOCOL, *PEFI_UNICODE_COLLATION_PROTOCOL; /* EFI Pixel bitmask */ typedef struct _EFI_PIXEL_BITMASK { UINT32 RedMask; UINT32 GreenMask; UINT32 BlueMask; UINT32 ReservedMask; } EFI_PIXEL_BITMASK, *PEFI_PIXEL_BITMASK; /* EFI GOP output mode information */ typedef struct _EFI_GRAPHICS_OUTPUT_MODE_INFORMATION { UINT32 Version; UINT32 HorizontalResolution; UINT32 VerticalResolution; EFI_GRAPHICS_PIXEL_FORMAT PixelFormat; EFI_PIXEL_BITMASK PixelInformation; UINT32 PixelsPerScanLine; } EFI_GRAPHICS_OUTPUT_MODE_INFORMATION, *PEFI_GRAPHICS_OUTPUT_MODE_INFORMATION; /* EFI GOP output blt pixel */ typedef struct _EFI_GRAPHICS_OUTPUT_BLT_PIXEL { UINT8 Blue; UINT8 Green; UINT8 Red; UINT8 Reserved; } EFI_GRAPHICS_OUTPUT_BLT_PIXEL, *PEFI_GRAPHICS_OUTPUT_BLT_PIXEL; /* EFI GOP output blt pixel */ typedef union _EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION { EFI_GRAPHICS_OUTPUT_BLT_PIXEL Pixel; UINT32 Raw; } EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION, *PEFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION; /* EFI GOP output protocol mode */ typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE { UINT32 MaxMode; UINT32 Mode; PEFI_GRAPHICS_OUTPUT_MODE_INFORMATION Info; UINT_PTR SizeOfInfo; EFI_PHYSICAL_ADDRESS FrameBufferBase; UINT_PTR FrameBufferSize; } EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE, *PEFI_GRAPHICS_OUTPUT_PROTOCOL_MODE; /* EFI GOP output protocol */ typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL { PEFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE QueryMode; PEFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE SetMode; PEFI_GRAPHICS_OUTPUT_PROTOCOL_BLT Blt; PEFI_GRAPHICS_OUTPUT_PROTOCOL_MODE Mode; } EFI_GRAPHICS_OUTPUT_PROTOCOL, *PEFI_GRAPHICS_OUTPUT_PROTOCOL; /* EFI EDID discover protocol */ typedef struct _EFI_EDID_DISCOVERED_PROTOCOL { UINT32 SizeOfEdid; PUINT8 Edid; } EFI_EDID_DISCOVERED_PROTOCOL, *PEFI_EDID_DISCOVERED_PROTOCOL; /* EFI EDID active protocol */ typedef struct _EFI_EDID_ACTIVE_PROTOCOL { UINT32 SizeOfEdid; PUINT8 Edid; } EFI_EDID_ACTIVE_PROTOCOL, *PEFI_EDID_ACTIVE_PROTOCOL; /* EFI EDID override protocol */ typedef struct _EFI_EDID_OVERRIDE_PROTOCOL { PEFI_EDID_OVERRIDE_PROTOCOL_GET_EDID GetEdid; } EFI_EDID_OVERRIDE_PROTOCOL, *PEFI_EDID_OVERRIDE_PROTOCOL; /* EFI Service binding */ typedef struct _EFI_SERVICE_BINDING { PEFI_SERVICE_BINDING_CREATE_CHILD CreateChild; PEFI_SERVICE_BINDING_DESTROY_CHILD DestroyChild; } EFI_SERVICE_BINDING, *PEFI_SERVICE_BINDING; /* EFI driver binding protocol */ typedef struct _EFI_DRIVER_BINDING_PROTOCOL { PEFI_DRIVER_BINDING_PROTOCOL_SUPPORTED Supported; PEFI_DRIVER_BINDING_PROTOCOL_START Start; PEFI_DRIVER_BINDING_PROTOCOL_STOP Stop; UINT32 Version; EFI_HANDLE ImageHandle; EFI_HANDLE DriverBindingHandle; } EFI_DRIVER_BINDING_PROTOCOL, *PEFI_DRIVER_BINDING_PROTOCOL; /* EFI component name protocol */ typedef struct _EFI_COMPONENT_NAME_PROTOCOL { PEFI_COMPONENT_NAME_GET_DRIVER_NAME GetDriverName; PEFI_COMPONENT_NAME_GET_CONTROLLER_NAME GetControllerName; PUINT8 SupportedLanguages; } EFI_COMPONENT_NAME_PROTOCOL, *PEFI_COMPONENT_NAME_PROTOCOL; /* EFI component name2 protocol */ typedef struct _EFI_COMPONENT_NAME2_PROTOCOL { PEFI_COMPONENT_NAME2_GET_DRIVER_NAME GetDriverName; PEFI_COMPONENT_NAME2_GET_CONTROLLER_NAME GetControllerName; PUINT8 SupportedLanguages; } EFI_COMPONENT_NAME2_PROTOCOL, *PEFI_COMPONENT_NAME2_PROTOCOL; /* EFI loaded image protocol */ typedef struct _EFI_LOADED_IMAGE_PROTOCOL { UINT32 Revision; EFI_HANDLE ParentHandle; PEFI_SYSTEM_TABLE SystemTable; EFI_HANDLE DeviceHandle; PEFI_DEVICE_PATH_PROTOCOL FilePath; PVOID Reserved; UINT32 LoadOptionsSize; PVOID LoadOptions; PVOID ImageBase; UINT64 ImageSize; EFI_MEMORY_TYPE ImageCodeType; EFI_MEMORY_TYPE ImageDataType; PEFI_IMAGE_UNLOAD Unload; } EFI_LOADED_IMAGE_PROTOCOL, *PEFI_LOADED_IMAGE_PROTOCOL; /* EFI RNG protocol */ typedef struct _EFI_RNG_PROTOCOL { PEFI_RNG_GET_INFO GetInfo; PEFI_RNG_GET_RNG GetRNG; } EFI_RNG_PROTOCOL, *PEFI_RNG_PROTOCOL; /* EFI platform driver override protocol */ typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL { PEFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER GetDriver; PEFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH GetDriverPath; PEFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED DriverLoaded; } EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL, *PEFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL; /* EFI bus specific driver override protocol */ typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL { PEFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER GetDriver; } EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL, *PEFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL; /* EFI driver family override protocol */ typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL { PEFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION GetVersion; } EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL, *PEFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL; /* EFI EBC protocol */ typedef struct _EFI_EBC_PROTOCOL { PEFI_EBC_CREATE_THUNK CreateThunk; PEFI_EBC_UNLOAD_IMAGE UnloadImage; PEFI_EBC_REGISTER_ICACHE_FLUSH RegisterICacheFlush; PEFI_EBC_GET_VERSION GetVersion; } EFI_EBC_PROTOCOL, *PEFI_EBC_PROTOCOL; /* MBR partition information */ typedef struct _EFI_MBR_PARTITION_RECORD { UINT8 BootIndicator; UINT8 StartHead; UINT8 StartSector; UINT8 StartTrack; UINT8 OSIndicator; UINT8 EndHead; UINT8 EndSector; UINT8 EndTrack; UINT8 StartingLBA[4]; UINT8 SizeInLBA[4]; } EFI_MBR_PARTITION_RECORD, *PEFI_MBR_PARTITION_RECORD; /* Master Boot Record (MBR) information */ typedef struct _EFI_MASTER_BOOT_RECORD { UINT8 BootStrapCode[440]; UINT8 UniqueMbrSignature[4]; UINT8 Unknown[2]; EFI_MBR_PARTITION_RECORD Partition[4]; UINT16 Signature; } EFI_MASTER_BOOT_RECORD, *PEFI_MASTER_BOOT_RECORD; /* GUID Partition Table (GPT) header */ typedef struct _EFI_GPT_PARTITION_TABLE_HEADER { EFI_TABLE_HEADER Header; EFI_LBA MyLBA; EFI_LBA AlternateLBA; EFI_LBA FirstUsableLBA; EFI_LBA LastUsableLBA; EFI_GUID DiskGUID; EFI_LBA PartitionEntryLBA; UINT32 NumberOfPartitionEntries; UINT32 SizeOfPartitionEntry; UINT32 PartitionEntryArrayCRC32; } EFI_GPT_PARTITION_TABLE_HEADER, *PEFI_GPT_PARTITION_TABLE_HEADER; /* GUID Partition Table (GPT) partition entry */ typedef struct _EFI_GPT_PARTITION_ENTRY { EFI_GUID PartitionTypeGUID; EFI_GUID UniquePartitionGUID; EFI_LBA StartingLBA; EFI_LBA EndingLBA; UINT64 Attributes; UINT16 PartitionName[36]; } EFI_GPT_PARTITION_ENTRY, *PEFI_GPT_PARTITION_ENTRY; #endif /* __XTDK_XTUEFI_H */