TianoCore EDK2 master
|
#include "FvSimpleFileSystemInternal.h"
Go to the source code of this file.
Variables | |
EFI_FILE_SYSTEM_INFO | mFsInfoTemplate |
EFI_FILE_PROTOCOL | mFileSystemTemplate |
This driver uses the EFI_FIRMWARE_VOLUME2_PROTOCOL to expose files in firmware volumes via the the EFI_SIMPLE_FILESYSTEM_PROTOCOL and EFI_FILE_PROTOCOL.
It will expose a single directory, containing one file for each file in the firmware volume. If a file has a UI section, its contents will be used as a filename. Otherwise, a string representation of the GUID will be used. Files of an executable type (That is PEIM, DRIVER, COMBINED_PEIM_DRIVER and APPLICATION) will have ".efi" added to their filename.
Its primary intended use is to be able to start EFI applications embedded in FVs from the UEFI shell. It is entirely read-only.
Copyright (c) 2014, ARM Limited. All rights reserved. Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file FvSimpleFileSystem.c.
EFI_STATUS FvFsFindExecutableSection | ( | IN EFI_FIRMWARE_VOLUME2_PROTOCOL * | FvProtocol, |
IN FV_FILESYSTEM_FILE_INFO * | FvFileInfo, | ||
IN OUT UINTN * | BufferSize, | ||
IN OUT VOID ** | Buffer | ||
) |
Find and call ReadSection on the first section found of an executable type.
FvProtocol | A pointer to the EFI_FIRMWARE_VOLUME2_PROTOCOL instance. |
FvFileInfo | A pointer to the FV_FILESYSTEM_FILE_INFO instance that is a struct representing a file's info. |
BufferSize | Pointer to a caller-allocated UINTN. It indicates the size of the memory represented by *Buffer. |
Buffer | Pointer to a pointer to a data buffer to contain file content. |
EFI_SUCCESS | The call completed successfully. |
EFI_WARN_BUFFER_TOO_SMALL | The buffer is too small to contain the requested output. |
EFI_ACCESS_DENIED | The firmware volume is configured to disallow reads. |
EFI_NOT_FOUND | The requested file was not found in the firmware volume. |
EFI_DEVICE_ERROR | A hardware error occurred when attempting toaccess the firmware volume. |
Definition at line 70 of file FvSimpleFileSystem.c.
EFI_STATUS FvFsGetFileInfo | ( | IN FV_FILESYSTEM_FILE_INFO * | FvFileInfo, |
IN OUT UINTN * | BufferSize, | ||
OUT EFI_FILE_INFO * | FileInfo | ||
) |
Helper function for populating an EFI_FILE_INFO for a file.
Note the CreateTime, LastAccessTime and ModificationTime fields in EFI_FILE_INFO are full zero as FV2 protocol has no corresponding info to fill.
FvFileInfo | A pointer to the FV_FILESYSTEM_FILE_INFO instance that is a struct representing a file's info. |
BufferSize | Pointer to a caller-allocated UINTN. It indicates the size of the memory represented by FileInfo. |
FileInfo | A pointer to EFI_FILE_INFO to contain the returned file info. |
EFI_SUCCESS | The call completed successfully. |
EFI_BUFFER_TOO_SMALL | The buffer is too small to contain the requested output. |
Definition at line 293 of file FvSimpleFileSystem.c.
EFI_STATUS FvFsGetFileSize | ( | IN EFI_FIRMWARE_VOLUME2_PROTOCOL * | FvProtocol, |
IN OUT FV_FILESYSTEM_FILE_INFO * | FvFileInfo | ||
) |
Get the size of the buffer that will be returned by FvFsReadFile.
FvProtocol | A pointer to the EFI_FIRMWARE_VOLUME2_PROTOCOL instance. |
FvFileInfo | A pointer to the FV_FILESYSTEM_FILE_INFO instance that is a struct representing a file's info. |
EFI_SUCCESS | The file size was gotten correctly. |
Others | The file size wasn't gotten correctly. |
Definition at line 111 of file FvSimpleFileSystem.c.
EFI_STATUS FvFsReadFile | ( | IN EFI_FIRMWARE_VOLUME2_PROTOCOL * | FvProtocol, |
IN FV_FILESYSTEM_FILE_INFO * | FvFileInfo, | ||
IN OUT UINTN * | BufferSize, | ||
IN OUT VOID ** | Buffer | ||
) |
Helper function to read a file.
The data returned depends on the type of the underlying FV file:
FvProtocol | A pointer to the EFI_FIRMWARE_VOLUME2_PROTOCOL instance. |
FvFileInfo | A pointer to the FV_FILESYSTEM_FILE_INFO instance that is a struct representing a file's info. |
BufferSize | Pointer to a caller-allocated UINTN. It indicates the size of the memory represented by *Buffer. |
Buffer | Pointer to a pointer to a data buffer to contain file content. |
EFI_SUCCESS | The call completed successfully. |
EFI_WARN_BUFFER_TOO_SMALL | The buffer is too small to contain the requested output. |
EFI_ACCESS_DENIED | The firmware volume is configured to disallow reads. |
EFI_NOT_FOUND | The requested file was not found in the firmware volume. |
EFI_DEVICE_ERROR | A hardware error occurred when attempting toaccess the firmware volume. |
Definition at line 214 of file FvSimpleFileSystem.c.
EFI_STATUS EFIAPI FvSimpleFileSystemClose | ( | IN EFI_FILE_PROTOCOL * | This | ) |
Closes a specified file handle.
This | A pointer to the EFI_FILE_PROTOCOL instance that is the file handle to close. |
EFI_SUCCESS | The file was closed. |
Definition at line 612 of file FvSimpleFileSystem.c.
EFI_STATUS EFIAPI FvSimpleFileSystemDelete | ( | IN EFI_FILE_PROTOCOL * | This | ) |
Close and delete the file handle.
This | A pointer to the EFI_FILE_PROTOCOL instance that is the handle to the file to delete. |
EFI_SUCCESS | The file was closed and deleted, and the handle was closed. |
EFI_WARN_DELETE_FAILURE | The handle was closed, but the file was not deleted. |
Definition at line 882 of file FvSimpleFileSystem.c.
EFI_STATUS EFIAPI FvSimpleFileSystemFlush | ( | IN EFI_FILE_PROTOCOL * | This | ) |
Flushes all modified data associated with a file to a device.
This | A pointer to the EFI_FILE_PROTOCOL instance that is the file handle to flush. |
EFI_SUCCESS | The data was flushed. |
EFI_NO_MEDIA | The device has no medium. |
EFI_DEVICE_ERROR | The device reported an error. |
EFI_VOLUME_CORRUPTED | The file system structures are corrupted. |
EFI_WRITE_PROTECTED | The file or medium is write-protected. |
EFI_ACCESS_DENIED | The file was opened read-only. |
EFI_VOLUME_FULL | The volume is full. |
Definition at line 863 of file FvSimpleFileSystem.c.
EFI_STATUS EFIAPI FvSimpleFileSystemGetInfo | ( | IN EFI_FILE_PROTOCOL * | This, |
IN EFI_GUID * | InformationType, | ||
IN OUT UINTN * | BufferSize, | ||
OUT VOID * | Buffer | ||
) |
Returns information about a file.
This | A pointer to the EFI_FILE_PROTOCOL instance that is the file handle the requested information is for. |
InformationType | The type identifier for the information being requested. |
BufferSize | On input, the size of Buffer. On output, the amount of data returned in Buffer. In both cases, the size is measured in bytes. |
Buffer | A pointer to the data buffer to return. The buffer's type is indicated by InformationType. |
EFI_SUCCESS | The information was returned. |
EFI_UNSUPPORTED | The InformationType is not known. |
EFI_NO_MEDIA | The device has no medium. |
EFI_DEVICE_ERROR | The device reported an error. |
EFI_VOLUME_CORRUPTED | The file system structures are corrupted. |
EFI_BUFFER_TOO_SMALL | The BufferSize is too small to read the current directory entry. BufferSize has been updated with the size needed to complete the request. |
Definition at line 916 of file FvSimpleFileSystem.c.
EFI_STATUS EFIAPI FvSimpleFileSystemGetPosition | ( | IN EFI_FILE_PROTOCOL * | This, |
OUT UINT64 * | Position | ||
) |
Returns a file's current position.
This | A pointer to the EFI_FILE_PROTOCOL instance that is the file handle to get the current position on. |
Position | The address to return the file's current position value. |
EFI_SUCCESS | The position was returned. |
EFI_UNSUPPORTED | The request is not valid on open directories. |
EFI_DEVICE_ERROR | An attempt was made to get the position from a deleted file. |
Definition at line 781 of file FvSimpleFileSystem.c.
EFI_STATUS EFIAPI FvSimpleFileSystemOpen | ( | IN EFI_FILE_PROTOCOL * | This, |
OUT EFI_FILE_PROTOCOL ** | NewHandle, | ||
IN CHAR16 * | FileName, | ||
IN UINT64 | OpenMode, | ||
IN UINT64 | Attributes | ||
) |
Opens a new file relative to the source file's location.
This | A pointer to the EFI_FILE_PROTOCOL instance that is the file handle to the source location. This would typically be an open handle to a directory. |
NewHandle | A pointer to the location to return the opened handle for the new file. |
FileName | The Null-terminated string of the name of the file to be opened. The file name may contain the following path modifiers: "\", ".", and "..". |
OpenMode | The mode to open the file. The only valid combinations that the file may be opened with are: Read, Read/Write, or Create/Read/Write. |
Attributes | Only valid for EFI_FILE_MODE_CREATE, in which case these are the attribute bits for the newly created file. |
EFI_SUCCESS | The file was opened. |
EFI_NOT_FOUND | The specified file could not be found on the device. |
EFI_NO_MEDIA | The device has no medium. |
EFI_MEDIA_CHANGED | The device has a different medium in it or the medium is no longer supported. |
EFI_DEVICE_ERROR | The device reported an error. |
EFI_VOLUME_CORRUPTED | The file system structures are corrupted. |
EFI_WRITE_PROTECTED | An attempt was made to create a file, or open a file for write when the media is write-protected. |
EFI_ACCESS_DENIED | The service denied access to the file. |
EFI_OUT_OF_RESOURCES | Not enough resources were available to open the file. |
EFI_VOLUME_FULL | The volume is full. |
Definition at line 470 of file FvSimpleFileSystem.c.
EFI_STATUS EFIAPI FvSimpleFileSystemRead | ( | IN EFI_FILE_PROTOCOL * | This, |
IN OUT UINTN * | BufferSize, | ||
OUT VOID * | Buffer | ||
) |
Reads data from a file.
This | A pointer to the EFI_FILE_PROTOCOL instance that is the file handle to read data from. |
BufferSize | On input, the size of the Buffer. On output, the amount of data returned in Buffer. In both cases, the size is measured in bytes. |
Buffer | The buffer into which the data is read. |
EFI_SUCCESS | Data was read. |
EFI_NO_MEDIA | The device has no medium. |
EFI_DEVICE_ERROR | The device reported an error. |
EFI_DEVICE_ERROR | An attempt was made to read from a deleted file. |
EFI_DEVICE_ERROR | On entry, the current file position is beyond the end of the file. |
EFI_VOLUME_CORRUPTED | The file system structures are corrupted. |
EFI_BUFFER_TOO_SMALL | The BufferSize is too small to read the current directory entry. BufferSize has been updated with the size needed to complete the request. |
Definition at line 652 of file FvSimpleFileSystem.c.
EFI_STATUS EFIAPI FvSimpleFileSystemSetInfo | ( | IN EFI_FILE_PROTOCOL * | This, |
IN EFI_GUID * | InformationType, | ||
IN UINTN | BufferSize, | ||
IN VOID * | Buffer | ||
) |
Sets information about a file.
This | A pointer to the EFI_FILE_PROTOCOL instance that is the file handle the information is for. |
InformationType | The type identifier for the information being set. |
BufferSize | The size, in bytes, of Buffer. |
Buffer | A pointer to the data buffer to write. The buffer's type is indicated by InformationType. |
EFI_SUCCESS | The information was set. |
EFI_UNSUPPORTED | The InformationType is not known. |
EFI_NO_MEDIA | The device has no medium. |
EFI_DEVICE_ERROR | The device reported an error. |
EFI_VOLUME_CORRUPTED | The file system structures are corrupted. |
EFI_WRITE_PROTECTED | InformationType is EFI_FILE_INFO_ID and the media is read-only. |
EFI_WRITE_PROTECTED | InformationType is EFI_FILE_PROTOCOL_SYSTEM_INFO_ID and the media is read only. |
EFI_WRITE_PROTECTED | InformationType is EFI_FILE_SYSTEM_VOLUME_LABEL_ID and the media is read-only. |
EFI_ACCESS_DENIED | An attempt is made to change the name of a file to a file that is already present. |
EFI_ACCESS_DENIED | An attempt is being made to change the EFI_FILE_DIRECTORY Attribute. |
EFI_ACCESS_DENIED | An attempt is being made to change the size of a directory. |
EFI_ACCESS_DENIED | InformationType is EFI_FILE_INFO_ID and the file was opened read-only and an attempt is being made to modify a field other than Attribute. |
EFI_VOLUME_FULL | The volume is full. |
EFI_BAD_BUFFER_SIZE | BufferSize is smaller than the size of the type indicated by InformationType. |
Definition at line 1026 of file FvSimpleFileSystem.c.
EFI_STATUS EFIAPI FvSimpleFileSystemSetPosition | ( | IN EFI_FILE_PROTOCOL * | This, |
IN UINT64 | Position | ||
) |
Sets a file's current position.
This | A pointer to the EFI_FILE_PROTOCOL instance that is the file handle to set the requested position on. |
Position | The byte position from the start of the file to set. |
EFI_SUCCESS | The position was set. |
EFI_UNSUPPORTED | The seek request for nonzero is not valid on open directories. |
EFI_DEVICE_ERROR | An attempt was made to set the position of a deleted file. |
Definition at line 815 of file FvSimpleFileSystem.c.
EFI_STATUS EFIAPI FvSimpleFileSystemWrite | ( | IN EFI_FILE_PROTOCOL * | This, |
IN OUT UINTN * | BufferSize, | ||
IN VOID * | Buffer | ||
) |
Writes data to a file.
This | A pointer to the EFI_FILE_PROTOCOL instance that is the file handle to write data to. |
BufferSize | On input, the size of the Buffer. On output, the amount of data actually written. In both cases, the size is measured in bytes. |
Buffer | The buffer of data to write. |
EFI_SUCCESS | Data was written. |
EFI_UNSUPPORTED | Writes to open directory files are not supported. |
EFI_NO_MEDIA | The device has no medium. |
EFI_DEVICE_ERROR | The device reported an error. |
EFI_DEVICE_ERROR | An attempt was made to write to a deleted file. |
EFI_VOLUME_CORRUPTED | The file system structures are corrupted. |
EFI_WRITE_PROTECTED | The file or medium is write-protected. |
EFI_ACCESS_DENIED | The file was opened read only. |
EFI_VOLUME_FULL | The volume is full. |
Definition at line 748 of file FvSimpleFileSystem.c.
Removes the last directory or file entry in a path by changing the last L'\' to a CHAR_NULL.
Path | The pointer to the path to modify. |
FALSE | Nothing was found to remove. |
TRUE | A directory or file was removed. |
Definition at line 328 of file FvSimpleFileSystem.c.
CHAR16 *EFIAPI TrimFilePathToAbsolutePath | ( | IN CHAR16 * | Path | ) |
Function to clean up paths.
This will be done inline and the existing buffer may be larger than required upon completion.
Path | The pointer to the string containing the path. |
NULL | An error occurred. |
Definition at line 374 of file FvSimpleFileSystem.c.
EFI_FILE_PROTOCOL mFileSystemTemplate |
Definition at line 38 of file FvSimpleFileSystem.c.
EFI_FILE_SYSTEM_INFO mFsInfoTemplate |
Definition at line 26 of file FvSimpleFileSystem.c.