UEFI 编程模型

UEFI Shell 提供一个编程 API。可使用它编写您自己的 UEFI 应用程序,用于调用某些 Shell 编程 API 或协议。有关详细信息,请参阅UEFI Shell 规范和 EDK2。UEFI Shell 提供一个编程 API,如下表所列。EFI_SHELL_PROTOCOL 向 UEFI 应用程序提供 Shell 服务。通过它,UEFI Shell 应用程序可访问底层 Shell 函数,包括文件、管道、环境变量、当前工作目录、映射、帮助文本、别名,并可启动 Shell 应用程序和脚本。

表 13: UEFI 应用程序 API

函数类型

函数名称

说明

EFI_SHELL_EXECUTE

Execute

使 Shell 分析并执行命令行。

EFI_SHELL_GET_ENV

GetEnv

获取环境变量。

EFI_SHELL_SET_ENV

SetEnv

更改特定环境变量。

EFI_SHELL_GET_ALIAS

GetAlias

检索特定 Shell 命令的别名。

EFI_SHELL_SET_ALIAS

SetAlias

添加或删除特定 Shell 命令的别名。

EFI_SHELL_GET_HELP_TEXT

GetHelpText

返回有关特定命令的帮助信息。

EFI_SHELL_GET_DEVICE_PATH_FROM_MAP

GetDevicePathFromMap

返回与映射对应的设备路径。

EFI_SHELL_GET_MAP_FROM_DEVICE_PATH

GetMapFromDevicePath

返回与特定设备路径对应的映射。

EFI_SHELL_GET_DEVICE_PATH_FROM_FILE_PATH

GetDevicePathFromFilePath

将文件路径转换为设备路径,其中已将所有映射替换为相应的设备路径。

EFI_SHELL_GET_FILE_PATH_FROM_DEVICE_PATH

GetFilePathFromDevicePath

将设备路径转换为文件路径,其中将设备路径中与某个映射对应的部分替换为该映射。

EFI_SHELL_SET_MAP

SetMap

创建、更新或删除设备与设备路径之间的映射。

EFI_SHELL_GET_CUR_DIR

GetCurDir

返回设备上的当前目录。

EFI_SHELL_SET_CUR_DIR

SetCurDir

更改设备上的当前目录。

EFI_SHELL_OPEN_FILE_LIST

OpenFileList

打开与指定的路径模式匹配的文件。

EFI_SHELL_FREE_FILE_LIST

FreeFileList

释放由 OpenFileList() 创建的文件列表。

EFI_SHELL_REMOVE_DUP_IN_FILE_LIST

RemoveDupInFileList

删除给定文件列表中的重复文件。

EFI_SHELL_BATCH_IS_ACTIVE

BatchIsActive

显示是否正在处理任何脚本文件。

EFI_SHELL_IS_ROOT_SHELL

IsRootShell

验证活动的 Shell 是否为根 Shell。

EFI_SHELL_ENABLE_PAGE_BREAK

EnablePageBreak

启用分页输出模式。

EFI_SHELL_DISABLE_PAGE_BREAK

DisablePageBreak

禁用分页输出模式。

EFI_SHELL_GET_PAGE_BREAK

GetPageBreak

获取分页输出模式的启用状态。

EFI_SHELL_GET_DEVICE_NAME

GetDeviceName

获取由设备句柄指定的设备的名称。

EFI_SHELL_GET_FILE_INFO

GetFileInfo

显示有关特定文件句柄的信息。

EFI_SHELL_SET_FILE_INFO

SetFileInfo

更改有关特定文件句柄的信息。

EFI_SHELL_OPEN_FILE_BY_NAME

OpenFileByName

打开按名称指定的文件并返回文件句柄。

EFI_SHELL_CLOSE_FILE

CloseFile

关闭打开的文件。

EFI_SHELL_CREATE_FILE

CreateFile

创建文件。

EFI_SHELL_READ_FILE

ReadFile

从文件读取数据。

EFI_SHELL_WRITE_FILE

WriteFile

将数据写入文件。

EFI_SHELL_DELETE_FILE

DeleteFile

删除文件。

EFI_SHELL_DELETE_FILE_BY_NAME

DeleteFileByName

按名称删除文件。

EFI_SHELL_GET_FILE_POSITION

GetFilePosition

显示文件中当前的读/写位置。

EFI_SHELL_SET_FILE_POSITION

SetFilePosition

更改文件中当前的读/写位置。

EFI_SHELL_FLUSH_FILE

FlushFile

将所有缓冲的数据写入文件。

EFI_SHELL_FIND_FILES

FindFiles

在文件列表中显示所有与某个模式匹配的文件。

EFI_SHELL_FIND_FILES_IN_DIR

FindFilesInDir

在文件列表中显示指定目录中的所有文件。

EFI_SHELL_GET_FILE_SIZE

GetFileSize

显示文件的大小。

EFI_SHELL_OPEN_ROOT

OpenRoot

显示文件系统的根目录。

EFI_SHELL_OPEN_ROOT_BY_HANDLE

OpenRootByHandle

显示特定句柄上文件系统的根目录。

EFI_EVENT

ExecutionBreak

当用户按 CTRL-C 时 UEFI Shell 发出一个事件以指示应中断执行当前的 UEFI Shell 命令。

UINT32

MajorVersion

Shell 环境的主版本。

UINT32

MinorVersion

Shell 环境的次版本。