uefi 下面如何创建文件夹
来源:互联网 发布:alpine 安装软件 编辑:程序博客网 时间:2024/05/16 17:56
uefi shell 提供了一个类似linux shell 创建文件夹的命令
今天 就来研究一下,它的具体实现:
在shellPkg 下面,本身就有一个mkdir.c 的文件。
很明显,它调用到了一个ShellCreateDirectory的函数:
} else { ASSERT(FileHandle == NULL); // // create the directory named NewDirName // Status = ShellCreateDirectory(NewDirName, &FileHandle); if (FileHandle != NULL) { gEfiShellProtocol->CloseFile(FileHandle); } if (EFI_ERROR(Status)) { ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MKDIR_CREATEFAIL), gShellLevel2HiiHandle, NewDirName); ShellStatus = SHELL_ACCESS_DENIED; break; } }
d
EFI_STATUSEFIAPIShellCreateDirectory( IN CONST CHAR16 *DirectoryName, OUT SHELL_FILE_HANDLE *FileHandle ){ if (gEfiShellProtocol != NULL) { // // Use UEFI Shell 2.0 method // return (gEfiShellProtocol->CreateFile(DirectoryName, EFI_FILE_DIRECTORY, FileHandle )); } else { return (ShellOpenFileByName(DirectoryName, FileHandle, EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CREATE, EFI_FILE_DIRECTORY )); }}
所有shellProtocol 的实现都在ShellProtocol.c 这个文件里面:
真正创建文件夹的是这一句:
Status = InternalOpenFileDevicePath(DevicePath, FileHandle, EFI_FILE_MODE_READ|EFI_FILE_MODE_WRITE|EFI_FILE_MODE_CREATE, FileAttribs);
阅读全文