UEFI学习笔记(七):UEFI_Spec_2_10 Protocols整理

UEFI学习笔记(七):UEFI_Spec_2_10 Protocols整理

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值