
UEFI设备路径操作函数完整函数参考手册【免费下载链接】edk2EDK II项目地址: https://gitcode.com/gh_mirrors/ed/edk2UEFI设备路径是UEFI系统中用于标识硬件设备和文件系统位置的关键机制。本文将详细介绍UEFI设备路径的核心操作函数帮助开发者快速掌握设备路径的创建、转换和管理技巧。设备路径基础概念UEFI设备路径通过层级化的节点结构表示硬件设备和文件系统位置。每个设备路径由一个或多个设备节点组成每个节点包含类型、子类型和数据字段。常见的设备路径类型包括硬件设备路径如PCI、USB、ACPI设备路径和媒体设备路径等。UEFI设备路径节点树结构示意图展示了从根节点到各层级设备节点的组织关系设备路径转换核心函数1. 设备路径转文本函数ConvertDevicePathToText函数用于将二进制设备路径转换为人类可读的文本格式定义在MdePkg/Include/Protocol/DevicePathToText.h中CHAR16 *EFIAPI ConvertDevicePathToText( IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, IN BOOLEAN DisplayOnly, IN BOOLEAN AllowShortcuts );参数说明DevicePath指向要转换的设备路径DisplayOnlyTRUE表示使用简短显示格式FALSE表示完整格式AllowShortcutsTRUE允许使用快捷表示法使用场景在调试输出或用户界面中显示设备路径信息。2. 文本转设备路径函数ConvertTextToDevicePath函数实现文本到二进制设备路径的转换定义在MdePkg/Include/Protocol/DevicePathFromText.h中EFI_DEVICE_PATH_PROTOCOL *EFIAPI ConvertTextToDevicePath( IN CONST CHAR16 *TextDevicePath );参数说明TextDevicePath设备路径的文本表示字符串使用场景解析配置文件中的设备路径字符串创建对应的二进制设备路径。3. 设备节点操作函数设备路径由多个设备节点组成每个节点使用EFI_DEVICE_PATH_PROTOCOL结构体表示typedef struct { UINT8 Type; UINT8 SubType; UINT8 Length[2]; } EFI_DEVICE_PATH_PROTOCOL;常见的设备节点类型包括硬件设备路径Type0x01如PCI设备路径PCI_DEVICE_PATHACPI设备路径Type0x02如ACPI_HID_DEVICE_PATH媒体设备路径Type0x04如硬盘分区路径HARDDRIVE_DEVICE_PATH设备路径操作实用技巧1. 遍历设备路径节点通过以下代码可以遍历设备路径中的所有节点EFI_DEVICE_PATH_PROTOCOL *DevicePath ...; while (!IsDevicePathEnd(DevicePath)) { // 处理当前节点 switch (DevicePath-Type) { case HARDWARE_DEVICE_PATH: // 硬件设备节点处理 break; case MEDIA_DEVICE_PATH: // 媒体设备节点处理 break; // 其他类型节点处理 } DevicePath NextDevicePathNode(DevicePath); }2. 拼接设备路径使用AppendDevicePath函数可以将两个设备路径拼接在一起EFI_DEVICE_PATH_PROTOCOL *AppendDevicePath( IN EFI_DEVICE_PATH_PROTOCOL *Src1, IN EFI_DEVICE_PATH_PROTOCOL *Src2 );3. 复制设备路径使用DuplicateDevicePath函数创建设备路径的副本EFI_DEVICE_PATH_PROTOCOL *DuplicateDevicePath( IN CONST EFI_DEVICE_PATH_PROTOCOL *OriginalDevicePath );常见设备路径示例1. 硬盘分区设备路径PciRoot(0x0)/Pci(0x1,0x1)/Ata(Primary,Master)/HD(1,MBR,0x0000000000000000,0x0000000000080000,0x0000000007F80000)2. USB设备路径PciRoot(0x0)/Pci(0x1D,0x0)/USB(0x0,0x0)/USB(0x1,0x0)3. 文件路径PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x0,0x0,0x0)/HD(1,MBR,0x0000000000080000,0x0000000000020000,0x0000000000020000)/File(\EFI\BOOT\BOOTX64.EFI)总结UEFI设备路径操作函数是系统固件开发的基础工具通过DevicePathToText和DevicePathFromText等核心函数可以实现设备路径的文本转换和解析。掌握这些函数的使用方法能够帮助开发者更高效地进行UEFI驱动和应用程序开发。更多详细信息请参考EDK2源码中的设备路径相关头文件MdePkg/Include/Protocol/DevicePath.hMdePkg/Include/Library/DevicePathLib.h【免费下载链接】edk2EDK II项目地址: https://gitcode.com/gh_mirrors/ed/edk2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考