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 image
EFI_HANDLE DeviceHandle;
EFI_DEVICE_PATH_PROTOCOL *FilePath;
VOID *Reserved;
// Image’s load options
UINT32 LoadOptionsSize;
VOID *LoadOptions;
// Location where image was loaded
VOID *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 SetI
EFI_FILE_FLUSH Flush;
EFI_FILE_OPEN_EX OpenEx; // Added for revision 2
EFI_FILE_READ_EX ReadEx; // Added for revision 2
EFI_FILE_WRITE_EX WriteEx; // Added for revision 2
EFI_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 UsbSyncInterruptTransfer
EFI_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 ClearRootHubPortFeature
UINT16 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 IoAlign
EFI_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;