UEFI学习笔记(七):UEFI_Spec_2_10 Protocols整理
UEFI学习笔记(七):UEFI_Spec_2_10 Protocols整理
- UEFI Protocols
- 1. EFI_LOADED_IMAGE_PROTOCOL
- 2. EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL
- 3. EFI_DEVICE_PATH_PROTOCOL
- 4. EFI_DRIVER_BINDING_PROTOCOL
- 5. EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL
- 6. EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL
- 7. EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL
- 8. EFI_DRIVER_DIAGNOSTICS2_PROTOCOL
- 9. EFI_COMPONENT_NAME2_PROTOCOL
- 10. EFI_SIMPLE_TEXT_INPUT_PROTOCOL
- 11. EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
- 12. EFI_SIMPLE_POINTER_PROTOCOL
- 13. EFI_SERIAL_IO_PROTOCOL
- 14. EFI_LOAD_FILE_PROTOCOL
- 15. EFI_LOAD_FILE2_PROTOCOL
- 16. EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
- 17. EFI_FILE_PROTOCOL
- 18. EFI_DISK_IO_PROTOCOL
- 19. EFI_BLOCK_IO_PROTOCOL
- 20. EFI_BLOCK_IO2_PROTOCOL
- 21. EFI_UNICODE_COLLATION_PROTOCOL
- 22. EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL
- 23. EFI_PCI_IO_PROTOCOL
- 24. EFI_USB_IO_PROTOCOL
- 25. EFI_SIMPLE_NETWORK_PROTOCOL
- 26. EFI_PXE_BASE_CODE_PROTOCOL
- 27. EFI_BIS_PROTOCOL
- 28. EFI_DEBUG_SUPPORT_PROTOCOL
- 29. EFI_DEBUGPORT_PROTOCOL
- 30. EFI_DECOMPRESS_PROTOCOL
- 31. EFI_EBC_PROTOCOL
- 32. EFI_GRAPHICS_OUTPUT_PROTOCOL
- 33. EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL
- 34. EFI_EXT_SCSI_PASS_THRU_PROTOCOL
- 35. EFI_USB2_HC_PROTOCOL
- 36. EFI_AUTHENTICATION_INFO_PROTOCOL
- 37. EFI_DEVICE_PATH_UTILITIES_PROTOCOL
- 38. EFI_DEVICE_PATH_TO_TEXT_PROTOCOL
- 39. EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL
- 40. EFI_EDID_DISCOVERED_PROTOCOL
- 41. EFI_EDID_ACTIVE_PROTOCOL
- 42. EFI_EDID_OVERRIDE_PROTOCOL
- 43. EFI_ISCSI_INITIATOR_NAME_PROTOCOL
- 44. EFI_TAPE_IO_PROTOCOL
- 45. EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL
- 46. EFI_ARP_SERVICE_BINDING_PROTOCOL
- 47. EFI_ARP_PROTOCOL
- 48. EFI_DHCP4_SERVICE_BINDING_PROTOCOL
- 49. EFI_DHCP4_PROTOCOL
- 50. EFI_TCP4_SERVICE_BINDING_PROTOCOL
- 51. EFI_TCP4_PROTOCOL
- 52. EFI_IP4_SERVICE_BINDING_PROTOCOL
- 53. EFI_IP4_PROTOCOL
- 54. EFI_IP4_CONFIG2_PROTOCOL
- 55. EFI_UDP4_SERVICE_BINDING_PROTOCOL
- 56. EFI_UDP4_PROTOCOL
- 57. EFI_MTFTP4_SERVICE_BINDING_PROTOCOL
- 58. EFI_MTFTP4_PROTOCOL
- 59. EFI_HASH_PROTOCOL
- 60. EFI_HASH_SERVICE_BINDING_PROTOCOL
- 61. EFI_SD_MMC_PASS_THRU_PROTOCOL
UEFI Protocols
1. EFI_LOADED_IMAGE_PROTOCOL
提供已加载到内存中的映像信息。
typedef struct {UINT32 Revision;EFI_HANDLE ParentHandle;EFI_System_Table *SystemTable;// Source location of the imageEFI_HANDLE DeviceHandle;EFI_DEVICE_PATH_PROTOCOL *FilePath;VOID *Reserved;// Image’s load optionsUINT32 LoadOptionsSize;VOID *LoadOptions;// Location where image was loadedVOID *ImageBase;UINT64 ImageSize;EFI_MEMORY_TYPE ImageCodeType;EFI_MEMORY_TYPE ImageDataType;EFI_IMAGE_UNLOAD Unload;
} EFI_LOADED_IMAGE_PROTOCOL;
2. EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL
提供已加载映像所在设备的路径描述,使系统能够准确确定已加载映像的来源。
3. EFI_DEVICE_PATH_PROTOCOL
提供关于物理设备或逻辑设备的通用路径/位置信息。
typedef struct _EFI_DEVICE_PATH_PROTOCOL {UINT8 Type;UINT8 SubType;UINT8 Length[2];
} EFI_DEVICE_PATH_PROTOCOL;
4. EFI_DRIVER_BINDING_PROTOCOL
提供服务以确定 UEFI 驱动程序是否支持给定的控制器,以及提供服务以启动和停止给定的控制器。
typedef struct _EFI_DRIVER_BINDING_PROTOCOL {EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED Supported;EFI_DRIVER_BINDING_PROTOCOL_START Start;EFI_DRIVER_BINDING_PROTOCOL_STOP Stop;UINT32 Version;EFI_HANDLE ImageHandle;EFI_HANDLE DriverBindingHandle;
} EFI_DRIVER_BINDING_PROTOCOL;
5. EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL
提供驱动家族 Override 机制,为给定的控制器选择最佳驱动。
typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL {EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION GetVersion;
} EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL;
6. EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL
提供一个平台特定的 Override 机制,用于为给定的控制器选择最佳驱动程序。
typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL {EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER GetDriver;EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH GetDriverPath;EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED DriverLoaded;
} EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL;
7. EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL
提供一个针对总线的 Override 机制,以便为给定的控制器选择最佳驱动程序。
typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL {EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER GetDriver;
} EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL;
8. EFI_DRIVER_DIAGNOSTICS2_PROTOCOL
为 UEFI 驱动所管理的控制器提供诊断服务。
typedef struct _EFI_DRIVER_DIAGNOSTICS2_PROTOCOL {EFI_DRIVER_DIAGNOSTICS2_RUN_DIAGNOSTICS RunDiagnostics;CHAR8 *SupportedLanguages;
} EFI_DRIVER_DIAGNOSTICS2_PROTOCOL;
9. EFI_COMPONENT_NAME2_PROTOCOL
为 UEFI 驱动和驱动所管理的控制器提供用户可读名称。
typedef struct _EFI_COMPONENT_NAME2_PROTOCOL {EFI_COMPONENT_NAME_GET_DRIVER_NAME GetDriverName;EFI_COMPONENT_NAME_GET_CONTROLLER_NAME GetControllerName;CHAR8 *SupportedLanguages;
} EFI_COMPONENT_NAME2_PROTOCOL;
10. EFI_SIMPLE_TEXT_INPUT_PROTOCOL
支持简单控制台风格文本输入的设备的协议接口。
typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL {EFI_INPUT_RESET Reset;EFI_INPUT_READ_KEY ReadKeyStroke;EFI_EVENT WaitForKey;
} EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
11. EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
支持简单控制台风格文本输出的设备的协议接口。
typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL {EFI_TEXT_RESET Reset;EFI_TEXT_STRING OutputString;EFI_TEXT_TEST_STRING TestString;EFI_TEXT_QUERY_MODE QueryMode;EFI_TEXT_SET_MODE SetMode;EFI_TEXT_SET_ATTRIBUTE SetAttribute;EFI_TEXT_CLEAR_SCREEN ClearScreen;EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition;EFI_TEXT_ENABLE_CURSOR EnableCursor;SIMPLE_TEXT_OUTPUT_MODE *Mode;
} EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
12. EFI_SIMPLE_POINTER_PROTOCOL
用于鼠标和轨迹球等设备的协议接口。
typedef struct _EFI_SIMPLE_POINTER_PROTOCOL {EFI_SIMPLE_POINTER_RESET Reset;EFI_SIMPLE_POINTER_GET_STATE GetState;EFI_EVENT WaitForInput;EFI_SIMPLE_INPUT_MODE *Mode;
} EFI_SIMPLE_POINTER_PROTOCOL;
13. EFI_SERIAL_IO_PROTOCOL
该协议用于与任何类型的基于字符的I/O设备通信。
typedef struct {UINT32 Revision;EFI_SERIAL_RESET Reset;EFI_SERIAL_SET_ATTRIBUTES SetAttributes;EFI_SERIAL_SET_CONTROL_BITS SetControl;EFI_SERIAL_GET_CONTROL_BITS GetControl;EFI_SERIAL_WRITE Write;EFI_SERIAL_READ Read;SERIAL_IO_MODE *Mode;CONST EFI_GUID *DeviceTypeGuid; // Revision 1.1
} EFI_SERIAL_IO_PROTOCOL;
14. EFI_LOAD_FILE_PROTOCOL
用于从任意设备读取文件 (主要是启动选项) 的协议接口。
typedef struct _EFI_LOAD_FILE_PROTOCOL {EFI_LOAD_FILE LoadFile;
} EFI_LOAD_FILE_PROTOCOL;
15. EFI_LOAD_FILE2_PROTOCOL
用于从不是引导选项的任意设备获取文件的协议接口。
typedef EFI_LOAD_FILE_PROTOCOL EFI_LOAD_FILE2_PROTOCOL;
16. EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
提供对设备的文件类型访问的最小接口。
typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL {UINT64 Revision;EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_OPEN_VOLUME OpenVolume;
} EFI_SIMPLE_FILE_SYSTEM_PROTOCOL;
17. EFI_FILE_PROTOCOL
提供对支持的文件系统的基于文件的访问。
typedef struct_EFI_FILE_PROTOCOL {UINT64 Revision;EFI_FILE_OPEN Open;EFI_FILE_CLOSE Close;EFI_FILE_DELETE Delete;EFI_FILE_READ Read;EFI_FILE_WRITE Write;EFI_FILE_GET_POSITION GetPosition;EFI_FILE_SET_POSITION SetPosition;EFI_FILE_GET_INFO GetInfo;EFI_FILE_SET_INFO SetIEFI_FILE_FLUSH Flush;EFI_FILE_OPEN_EX OpenEx; // Added for revision 2EFI_FILE_READ_EX ReadEx; // Added for revision 2EFI_FILE_WRITE_EX WriteEx; // Added for revision 2EFI_FILE_FLUSH_EX FlushEx; // Added for revision 2
} EFI_FILE_PROTOCOL;
18. EFI_DISK_IO_PROTOCOL
该协议用于抽象块设备I/O接口。
typedef struct _EFI_DISK_IO_PROTOCOL {UINT64 Revision;EFI_DISK_READ ReadDisk;EFI_DISK_WRITE WriteDisk;
} EFI_DISK_IO_PROTOCOL;
19. EFI_BLOCK_IO_PROTOCOL
该协议提供对块设备的控制。
typedef struct _EFI_BLOCK_IO_PROTOCOL {UINT64 Revision;EFI_BLOCK_IO_MEDIA *Media;EFI_BLOCK_RESET Reset;EFI_BLOCK_READ ReadBlocks;EFI_BLOCK_WRITE WriteBlocks;EFI_BLOCK_FLUSH FlushBlocks;
} EFI _BLOCK_IO_PROTOCOL;
20. EFI_BLOCK_IO2_PROTOCOL
用于支持块I/O风格访问的设备的协议接口。该接口能够进行非阻塞式交易。
typedef struct _EFI_BLOCK_IO2_PROTOCOL {EFI_BLOCK_IO_MEDIA *Media;EFI_BLOCK_RESET_EX Reset;EFI_BLOCK_READ_EX ReadBlocksEx;EFI_BLOCK_WRITE_EX WriteBlocksEx;EFI_BLOCK_FLUSH_EX FlushBlocksEx;
} EFI_BLOCK_IO2_PROTOCOL;
21. EFI_UNICODE_COLLATION_PROTOCOL
用于执行不区分大小写的字符串比较。
typedef struct {EFI_UNICODE_COLLATION_STRICOLL StriColl;EFI_UNICODE_COLLATION_METAIMATCH MetaiMatch;EFI_UNICODE_COLLATION_STRLWR StrLwr;EFI_UNICODE_COLLATION_STRUPR StrUpr;EFI_UNICODE_COLLATION_FATTOSTR FatToStr;EFI_UNICODE_COLLATION_STRTOFAT StrToFat;CHAR8 *SupportedLanguages;
} EFI_UNICODE_COLLATION_PROTOCOL;
22. EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL
提供基本内存、I/O、PCI配置和DMA接口,用于将内存、I/O、PCI配置和DMA访问抽象到PCI根桥控制器。
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;
23. EFI_PCI_IO_PROTOCOL
提供驱动程序用来访问其PCI控制器的基本内存、I/O、PCI配置和DMA接口.
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;VOID *RomImage;
} EFI_PCI_IO_PROTOCOL;
24. EFI_USB_IO_PROTOCOL
提供管理USB设备并与之通信的服务。
typedef struct _EFI_USB_IO_PROTOCOL {EFI_USB_IO_CONTROL_TRANSFER UsbControlTransfer;EFI_USB_IO_BULK_TRANSFER UsbBulkTransfer;EFI_USB_IO_ASYNC_INTERRUPT_TRANSFER UsbAsyncInterruptTransfer;EFI_USB_IO_SYNC_INTERRPUT_TRANSFER UsbSyncInterruptTransferEFI_USB_IO_ISOCHRONOUS_TRANSFER UsbIsochronousTransfer;EFI_USB_IO_ASYNC_ISOCHRONOUS_TRANSFER UsbAsyncIsochronousTransfer;EFI_USB_IO_GET_DEVICE_DESCRIPTOR UsbGetDeviceDescriptor;EFI_USB_IO_GET_CONFIG_DESCRIPTOR UsbGetConfigDescriptor;EFI_USB_IO_GET_INTERFACE_DESCRIPTOR UsbGetInterfaceDescriptor;EFI_USB_IO_GET_ENDPOINT_DESCRIPTOR UsbGetEndpointDescriptor;EFI_USB_IO_GET_STRING_DESCRIPTOR UsbGetStringDescriptor;EFI_USB_IO_GET_SUPPORTED_LANGUAGES UsbGetSupportedLanguages;EFI_USB_IO_PORT_RESET UsbPortReset;
} EFI_USB_IO_PROTOCOL;
25. EFI_SIMPLE_NETWORK_PROTOCOL
提供初始化网络接口、发送数据包、接收数据包和关闭网络接口的服务。
typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL {
UINT64 Revision;EFI_SIMPLE_NETWORK_START Start;EFI_SIMPLE_NETWORK_STOP Stop;EFI_SIMPLE_NETWORK_INITIALIZE Initialize;EFI_SIMPLE_NETWORK_RESET Reset;EFI_SIMPLE_NETWORK_SHUTDOWN Shutdown;EFI_SIMPLE_NETWORK_RECEIVE_FILTERS ReceiveFilters;EFI_SIMPLE_NETWORK_STATION_ADDRESS StationAddress;EFI_SIMPLE_NETWORK_STATISTICS Statistics;EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC MCastIpToMac;EFI_SIMPLE_NETWORK_NVDATA NvData;EFI_SIMPLE_NETWORK_GET_STATUS GetStatus;EFI_SIMPLE_NETWORK_TRANSMIT Transmit;EFI_SIMPLE_NETWORK_RECEIVE Receive;EFI_EVENT WaitForPacket;EFI_SIMPLE_NETWORK_MODE *Mode;
} EFI_SIMPLE_NETWORK_PROTOCOL;
26. EFI_PXE_BASE_CODE_PROTOCOL
为支持网络启动的设备提供协议接口,为支持网络启动的设备提供协议接口。
typedef struct {UINT64 Revision;EFI_PXE_BASE_CODE_START Start;EFI_PXE_BASE_CODE_STOP Stop;EFI_PXE_BASE_CODE_DHCP Dhcp;EFI_PXE_BASE_CODE_DISCOVER Discover;EFI_PXE_BASE_CODE_MTFTP Mtftp;EFI_PXE_BASE_CODE_UDP_WRITE UdpWrite;EFI_PXE_BASE_CODE_UDP_READ UdpRead;EFI_PXE_BASE_CODE_SET_IP_FILTER SetIpFilter;EFI_PXE_BASE_CODE_ARP Arp;EFI_PXE_BASE_CODE_SET_PARAMETERS SetParameters;EFI_PXE_BASE_CODE_SET_STATION_IP SetStationIp;EFI_PXE_BASE_CODE_SET_PACKETS SetPackets;EFI_PXE_BASE_CODE_MODE *Mode;
} EFI_PXE_BASE_CODE_PROTOCOL;
27. EFI_BIS_PROTOCOL
该协议用于针对数字证书检查数据块的数字签名,以用于完整性和授权检查。
typedef struct _EFI_BIS_PROTOCOL {EFI_BIS_INITIALIZE Initialize;EFI_BIS_SHUTDOWN Shutdown;EFI_BIS_FREE Free;EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_CERTIFICATE GetBootObjectAuthorizationCertificate;EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_CHECKFLAG GetBootObjectAuthorizationCheckFlag;EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_UPDATE_TOKEN GetBootObjectAuthorizationUpdateToken;EFI_BIS_GET_SIGNATURE_INFO GetSignatureInfo;EFI_BIS_UPDATE_BOOT_OBJECT_AUTHORIZATION UpdateBootObjectAuthorization;EFI_BIS_VERIFY_BOOT_OBJECT VerifyBootObject;EFI_BIS_VERIFY_OBJECT_WITH_CREDENTIAL VerifyObjectWithCredential;
} EFI_BIS_PROTOCOL;
28. EFI_DEBUG_SUPPORT_PROTOCOL
这个协议提供了服务,使调试代理能够注册回调函数,这些回调函数会在周期性地调用或特定处理器异常发生时被触发。
def struct {EFI_INSTRUCTION_SET_ARCHITECTURE Isa;EFI_GET_MAXIMUM_PROCESSOR_INDEX GetMaximumProcessorIndex;EFI_REGISTER_PERIODIC_CALLBACK RegisterPeriodicCallback;EFI_REGISTER_EXCEPTION_CALLBACK RegisterExceptionCallback;EFI_INVALIDATE_INSTRUCTION_CACHE InvalidateInstructionCache;
} EFI_DEBUG_SUPPORT_PROTOCOL;
29. EFI_DEBUGPORT_PROTOCOL
此协议提供调试代理和远程主机之间的通信链路,抽象出调试主机和调试目标系统之间的字节流连接。
typedef struct {EFI_DEBUGPORT_RESET Reset;EFI_DEBUGPORT_WRITE Write;EFI_DEBUGPORT_READ Read;EFI_DEBUGPORT_POLL Poll;
} EFI_DEBUGPORT_PROTOCOL;
30. EFI_DECOMPRESS_PROTOCOL
提供解压缩服务,用于解压使用 EFI 压缩算法压缩的镜像。
typedef struct _EFI_DECOMPRESS_PROTOCOL {EFI_DECOMPRESS_GET_INFO GetInfo;EFI_DECOMPRESS_DECOMPRESS Decompress;
} EFI_DECOMPRESS_PROTOCOL;
31. EFI_EBC_PROTOCOL
该协议提供允许执行EFI Byte Code映像并提供相关服务。
typedef struct _EFI_EBC_PROTOCOL {EFI_EBC_CREATE_THUNK CreateThunk;EFI_EBC_UNLOAD_IMAGE UnloadImage;EFI_EBC_REGISTER_ICACHE_FLUSH RegisterICacheFlush;EFI_EBC_GET_VERSION GetVersion;
} EFI_EBC_PROTOCOL;
32. EFI_GRAPHICS_OUTPUT_PROTOCOL
用于图形显示的协议。它提供了一组函数,用于初始化、控制和操作显示设备的图形输出。这个协议支持多种图形模式和操作,使系统能够在启动时显示图形内容。
typedef struct EFI_GRAPHICS_OUTPUT_PROTCOL {EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE QueryMode;EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE SetMode;EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT Blt;EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Mode;
} EFI_GRAPHICS_OUTPUT_PROTOCOL;
33. EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL
此协议提供的服务允许将NVM Express命令发送到NVM Express控制器或NVM Express控制器中的特定命名空间。此协议接口针对存储进行了优化。
typedef struct _EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL {EFI_NVM_EXPRESS_PASS_THRU_MODE *Mode;EFI_NVM_EXPRESS_PASS_THRU_PASSTHRU PassThru;EFI_NVM_EXPRESS_PASS_THRU_GET_NEXT_NAMESPACE GetNextNamespace;EFI_NVM_EXPRESS_PASS_THRU_BUILD_DEVICE_PATH BuildDevicePath;EFI_NVM_EXPRESS_PASS_THRU_GET_NAMESPACE GetNamespace;
} EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL;
34. EFI_EXT_SCSI_PASS_THRU_PROTOCOL
提供允许将SCSI直通命令发送到连接到SCSI通道的SCSI设备的服务。它还允许将基于数据包的命令(ATAPI命令)发送到连接到ATA控制器的ATAPI设备。
typedef struct _EFI_EXT_SCSI_PASS_THRU_PROTOCOL {EFI_EXT_SCSI_PASS_THRU_MODE *Mode;EFI_EXT_SCSI_PASS_THRU_PASSTHRU PassThru;EFI_EXT_SCSI_PASS_THRU_GET_NEXT_TARGET_LUN GetNextTargetLun;EFI_EXT_SCSI_PASS_THRU_BUILD_DEVICE_PATH BuildDevicePath;EFI_EXT_SCSI_PASS_THRU_GET_TARGET_LUN GetTargetLun;EFI_EXT_SCSI_PASS_THRU_RESET_CHANNEL ResetChannel;EFI_EXT_SCSI_PASS_THRU_RESET_TARGET_LUN ResetTargetLun;EFI_EXT_SCSI_PASS_THRU_GET_NEXT_TARGE GetNextTarget;
} EFI_EXT_SCSI_PASS_THRU_PROTOCOL;
35. EFI_USB2_HC_PROTOCOL
提供基本的USB主机控制器管理、USB总线上的基本数据事务以及USB根集线器访问。
typedef struct _EFI_USB2_HC_PROTOCOL {EFI_USB2_HC_PROTOCOL_GET_CAPABILITY GetCapability;EFI_USB2_HC_PROTOCOL_RESET Reset;EFI_USB2_HC_PROTOCOL_GET_STATE GetState;EFI_USB2_HC_PROTOCOL_SET_STATE SetState;EFI_USB2_HC_PROTOCOL_CONTROL_TRANSFER ControlTransfer;EFI_USB2_HC_PROTOCOL_BULK_TRANSFER BulkTransfer;EFI_USB2_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER AsyncInterruptTransfer;EFI_USB2_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER SyncInterruptTransfer;EFI_USB2_HC_PROTOCOL_ISOCHRONOUS_TRANSFER IsochronousTransfer;EFI_USB2_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER AsyncIsochronousTransfer;EFI_USB2_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS GetRootHubPortStatus;EFI_USB2_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE SetRootHubPortFeature;EFI_USB2_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE ClearRootHubPortFeatureUINT16 MajorRevision;UINT16 MinorRevision;
} EFI_USB2_HC_PROTOCOL;
36. EFI_AUTHENTICATION_INFO_PROTOCOL
该协议在任何设备句柄上使用,以获得与物理或逻辑设备相关联的认证信息。
typedef struct _EFI_AUTHENTICATION_INFO_PROTOCOL {EFI_AUTHENTICATION_INFO_PROTOCOL_GET Get;EFI_AUTHENTICATION_INFO_PROTOCOL_SET Set;
} EFI_AUTHENTICATION_INFO_PROTOCOL;
37. EFI_DEVICE_PATH_UTILITIES_PROTOCOL
创建和操作设备路径和设备节点。
typedef struct _EFI_DEVICE_PATH_UTILITIES_PROTOCOL {EFI_DEVICE_PATH_UTILS_GET_DEVICE_PATH_SIZE GetDevicePathSize;EFI_DEVICE_PATH_UTILS_DUP_DEVICE_PATH DuplicateDevicePath;EFI_DEVICE_PATH_UTILS_APPEND_PATH AppendDevicePath;EFI_DEVICE_PATH_UTILS_APPEND_NODE AppendDeviceNode;EFI_DEVICE_PATH_UTILS_APPEND_INSTANCE AppendDevicePathInstance;EFI_DEVICE_PATH_UTILS_GET_NEXT_INSTANCE GetNextDevicePathInstance;EFI_DEVICE_PATH_UTILS_IS_MULTI_INSTANCE IsDevicePathMultiInstance;EFI_DEVICE_PATH_UTILS_CREATE_NODE CreateDeviceNode;
} EFI_DEVICE_PATH_UTILITIES_PROTOCOL;
38. EFI_DEVICE_PATH_TO_TEXT_PROTOCOL
将设备节点和路径转换为文本。
typedef struct _EFI_DEVICE_PATH_TO_TEXT_PROTOCOL {EFI_DEVICE_PATH_TO_TEXT_NODE ConvertDeviceNodeToText;EFI_DEVICE_PATH_TO_TEXT_PATH ConvertDevicePathToText;
} EFI_DEVICE_PATH_TO_TEXT_PROTOCOL;
39. EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL
将文本转换为设备路径和设备节点。
typedef struct _EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL {EFI_DEVICE_PATH_FROM_TEXT_NODE ConvertTextToDevicNode;EFI_DEVICE_PATH_FROM_TEXT_PATH ConvertTextToDevicPath;
} EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL;
40. EFI_EDID_DISCOVERED_PROTOCOL
该协议包含从视频输出设备获取的EDID(Extended Display Identification Data,扩展显示识别数据)信息。
typedef struct {UINT32 SizeOfEdid;UINT8 *Edid;
} EFI_EDID_DISCOVERED_PROTOCOL;
41. EFI_EDID_ACTIVE_PROTOCOL
该协议包含活动视频输出设备的EDID信息。如果覆盖可用,则这是从EFI_EDID_OVERRIDE_PROTOCOL检索的EDID信息;如果没有覆盖可用,则这是从EFI_EDID_DISCOVERED_PROTOCOL检索的EDID信息的相同副本。
typedef struct {UINT32 SizeOfEdid;UINT8 *Edid;
} EFI_EDID_ACTIVE_PROTOCOL;
42. EFI_EDID_OVERRIDE_PROTOCOL
该协议由平台产生,以允许平台向图形输出协议的生产者提供EDID信息。
typedef struct _EFI_EDID_OVERRIDE_PROTOCOL {EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID GetEdid;
} EFI_EDID_OVERRIDE_PROTOCOL;
43. EFI_ISCSI_INITIATOR_NAME_PROTOCOL
设置和获取 iSCSI 启动器名称。
typedef struct _EFI_ISCSI_INITIATOR_NAME_PROTOCOL {EFI_ISCSI_INITIATOR_NAME_GET Get;EFI_ISCSI_INITIATOR_NAME_SET Set;
} EFI_ISCSI_INITIATOR_NAME_PROTOCOL;
44. EFI_TAPE_IO_PROTOCOL
提供控制和访问磁带设备的服务。
typedef struct_EFI_TAPE_IO_PROTOCOL {EFI_TAPE_READ TapeRead;EFI_TAPE_WRITE TapeWrite;EFI_TAPE_REWIND TapeRewind;EFI_TAPE_SPACE TapeSpace;EFI_TAPE_WRITEFM TapeWriteFM;EFI_TAPE_RESET TapeReset;
} EFI_TAPE_IO_PROTOCOL;
45. EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL
用于定位MNP(Microcom Networking Protocol)驱动程序支持的通信设备,并创建和销毁可以使用底层通信设备的 MNP 子协议驱动程序的实例。
typedef struct _EFI_MANAGED_NETWORK_PROTOCOL {EFI_MANAGED_NETWORK_GET_MODE_DATA GetModeData;EFI_MANAGED_NETWORK_CONFIGURE Configure;EFI_MANAGED_NETWORK_MCAST_IP_TO_MAC McastIpToMac;EFI_MANAGED_NETWORK_GROUPS Groups;EFI_MANAGED_NETWORK_TRANSMIT Transmit;EFI_MANAGED_NETWORK_RECEIVE Receive;EFI_MANAGED_NETWORK_CANCEL Cancel;EFI_MANAGED_NETWORK_POLL Poll;
} EFI_MANAGED_NETWORK_PROTOCOL;
46. EFI_ARP_SERVICE_BINDING_PROTOCOL
用于定位 ARP 驱动程序支持的通信设备,并创建和销毁 ARP 子协议驱动程序的实例。
47. EFI_ARP_PROTOCOL
用于将本地网络协议地址解析为网络硬件地址。
typedef struct _EFI_ARP_PROTOCOL {EFI_ARP_CONFIGURE Configure;EFI_ARP_ADD Add;EFI_ARP_FIND Find;EFI_ARP_DELETE Delete;EFI_ARP_FLUSH Flush;EFI_ARP_REQUEST Request;EFI_ARP_CANCEL Cancel;
} EFI_ARP_PROTOCOL;
48. EFI_DHCP4_SERVICE_BINDING_PROTOCOL
用于定位由 EFI DHCPv4 协议驱动程序支持的通信设备,并创建和销毁可以使用底层通信设备的 EFI DHCPv4 协议子驱动实例。
49. EFI_DHCP4_PROTOCOL
此协议用于收集EFI IPv4协议驱动程序的配置信息,并提供DHCPv4服务器和PXE(Preboot Execution Environment)引导服务器发现服务。
typedef struct _EFI_DHCP4_PROTOCOL {EFI_DHCP4_GET_MODE_DATA GetModeData;EFI_DHCP4_CONFIGURE Configure;EFI_DHCP4_START Start;EFI_DHCP4_RENEW_REBIND RenewRebind;EFI_DHCP4_RELEASE Release;EFI_DHCP4_STOP Stop;EFI_DHCP4_BUILD Build;EFI_DHCP4_TRANSMIT_RECEIVE TransmitReceive;EFI_DHCP4_PARSE Parse;
} EFI_DHCP4_PROTOCOL;
50. EFI_TCP4_SERVICE_BINDING_PROTOCOL
用于定位EFI TCPv4协议驱动程序,以创建和销毁驱动程序的子级,以使用TCP协议与其他主机通信。
51. EFI_TCP4_PROTOCOL
提供发送和接收数据流的服务。
typedef struct _EFI_TCP4_PROTOCOL {EFI_TCP4_GET_MODE_DATA GetModeData;EFI_TCP4_CONFIGURE Configure;EFI_TCP4_ROUTES Routes;EFI_TCP4_CONNECT Connect;EFI_TCP4_ACCEPT Accept;EFI_TCP4_TRANSMIT Transmit;EFI_TCP4_RECEIVE Receive;EFI_TCP4_CLOSE Close;EFI_TCP4_CANCEL Cancel;EFI_TCP4_POLL Poll;
} EFI_TCP4_PROTOCOL;
52. EFI_IP4_SERVICE_BINDING_PROTOCOL
用于定位EFI IPv4协议驱动程序支持的通信设备,并创建和销毁可以使用底层通信设备的EFI IPv4协议子协议驱动程序的实例。
53. EFI_IP4_PROTOCOL
实现了一个简单的面向数据包的接口,驱动程序、守护程序和应用程序可以使用该接口来发送和接收网络数据包。
typedef struct _EFI_IP4_PROTOCOL {EFI_IP4_GET_MODE_DATA GetModeData;EFI_IP4_CONFIGURE Configure;EFI_IP4_GROUPS Groups;EFI_IP4_ROUTES Routes;EFI_IP4_TRANSMIT Transmit;EFI_IP4_RECEIVE Receive;EFI_IP4_CANCEL Cancel;EFI_IP4_POLL Poll;
} EFI_IP4_PROTOCOL;
54. EFI_IP4_CONFIG2_PROTOCOL
提供为EFI IPv4网络堆栈设置和获取各种类型配置的机制。
typedef struct _EFI_IP4_CONFIG2_PROTOCOL {EFI_IP4_CONFIG2_SET_DATA SetData;EFI_IP4_CONFIG2_GET_DATA GetData;EFI_IP4_CONFIG2_REGISTER_NOTIFY RegisterDataNotify;EFI_IP4_CONFIG2_UNREGISTER_NOTIFY UnregisterDataNotify;
} EFI_IP4_CONFIG2_PROTOCOL;
55. EFI_UDP4_SERVICE_BINDING_PROTOCOL
用于定位由EFI UDPv4协议驱动程序支持的通信设备,并创建和销毁可以使用底层通信设备的EFI UDPv4协议子协议驱动程序的实例。
56. EFI_UDP4_PROTOCOL
提供简单的面向数据包的服务来发送和接收UDP数据包。
typedef struct _EFI_UDP4_PROTOCOL {EFI_UDP4_GET_MODE_DATA GetModeData;EFI_UDP4_CONFIGURE Configure;EFI_UDP4_GROUPS Groups;EFI_UDP4_ROUTES Routes;EFI_UDP4_TRANSMIT Transmit;EFI_UDP4_RECEIVE Receive;EFI_UDP4_CANCEL Cancel;EFI_UDP4_POLL Poll;
} EFI_UDP4_PROTOCOL;
57. EFI_MTFTP4_SERVICE_BINDING_PROTOCOL
用于定位EFI MTFTPv4协议(Multicast Trivial FTP)驱动程序支持的通信设备,并创建和销毁可以使用底层通信设备的EFI MTFTPv4协议子协议驱动程序的实例。
58. EFI_MTFTP4_PROTOCOL
为客户端单播和/或多播TFTP操作提供基本服务。
typedef struct _EFI_MTFTP4_PROTOCOL {EFI_MTFTP4_GET_MODE_DATA GetModeData;EFI_MTFTP4_CONFIGURE Configure;EFI_MTFTP4_GET_INFO GetInfo;EFI_MTFTP4_PARSE_OPTIONS ParseOptions;EFI_MTFTP4_READ_FILE ReadFile;EFI_MTFTP4_WRITE_FILE WriteFile;EFI_MTFTP4_READ_DIRECTORY ReadDirectory;EFI_MTFTP4_POLL Poll;
} EFI_MTFTP4_PROTOCOL;
59. EFI_HASH_PROTOCOL
该协议描述了标准的散列函数。
typedef _EFI_HASH_PROTOCOL {EFI_HASH_GET_HASH_SIZE GetHashSize;EFI_HASH_HASH Hash;
} EFI_HASH_PROTOCOL;
60. EFI_HASH_SERVICE_BINDING_PROTOCOL
用于定位驱动程序提供的哈希服务支持,并创建和销毁EFI哈希协议的实例,以便多个驱动程序可以使用底层哈希服务.
61. EFI_SD_MMC_PASS_THRU_PROTOCOL
允许SD/eMMC命令被发送到SD/eMMC控制器的协议接口。
typedef struct _EFI_SD_MMC_PASS_THRU_PROTOCOL {
UINTN IoAlignEFI_SD_MMC_PASS_THRU_PASSTHRU PassThru;EFI_SD_MMC_PASS_THRU_GET_NEXT_SLOT GetNextSlot;EFI_SD_MMC_PASS_THRU_BUILD_DEVICE_PATH BuildDevicePath;EFI_SD_MMC_PASS_THRU_GET_SLOT_NUMBER GetSlotNumber;EFI_SD_MMC_PASS_THRU_RESET_DEVICE ResetDevice;
} EFI_SD_MMC_PASS_THRU_PROTOCOL;