MdeModulePkg/FvSimpleFileSystem: Add a new module to provide access to executable files in FVs.
This module implements Simple FileSystem protocol over Firmware Volume (FV). EFI Modules included into a FV can be listed and launched from the EFI Shell or any other EFI applications. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Brendan Jackman <brendan.jackman@arm.com> Signed-off-by: Feng Tian <feng.tian@intel.com> Reviewed-by: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16547 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
committed by
erictian
parent
32d258b5e7
commit
9da91aea69
@ -0,0 +1,622 @@
|
||||
/** @file
|
||||
The internal header file of FvSimpleFileSystem driver.
|
||||
|
||||
Copyright (c) 2014, ARM Limited. All rights reserved.
|
||||
Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
|
||||
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __FVFS_INTERNAL_H__
|
||||
#define __FVFS_INTERNAL_H__
|
||||
|
||||
#include <Uefi.h>
|
||||
#include <PiDxe.h>
|
||||
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/DevicePathLib.h>
|
||||
#include <Library/MemoryAllocationLib.h>
|
||||
#include <Library/PrintLib.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
#include <Library/UefiLib.h>
|
||||
|
||||
#include <Protocol/DriverBinding.h>
|
||||
#include <Protocol/FirmwareVolume2.h>
|
||||
#include <Protocol/SimpleFileSystem.h>
|
||||
#include <Protocol/UnicodeCollation.h>
|
||||
|
||||
#include <Guid/FileSystemInfo.h>
|
||||
#include <Guid/FileInfo.h>
|
||||
#include <Guid/FileSystemVolumeLabelInfo.h>
|
||||
|
||||
typedef struct _FV_FILESYSTEM_FILE FV_FILESYSTEM_FILE;
|
||||
typedef struct _FV_FILESYSTEM_FILE_INFO FV_FILESYSTEM_FILE_INFO;
|
||||
typedef struct _FV_FILESYSTEM_INSTANCE FV_FILESYSTEM_INSTANCE;
|
||||
|
||||
//
|
||||
// Struct representing an instance of the "filesystem". There will be one of
|
||||
// these structs per FV.
|
||||
//
|
||||
struct _FV_FILESYSTEM_INSTANCE {
|
||||
UINT32 Signature;
|
||||
LIST_ENTRY FileInfoHead;
|
||||
LIST_ENTRY FileHead;
|
||||
EFI_DRIVER_BINDING_PROTOCOL *DriverBinding;
|
||||
EFI_FIRMWARE_VOLUME2_PROTOCOL *FvProtocol;
|
||||
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL SimpleFs;
|
||||
FV_FILESYSTEM_FILE *Root;
|
||||
CHAR16 *VolumeLabel;
|
||||
};
|
||||
|
||||
//
|
||||
// Struct representing a opening file. Each opening operation on file will
|
||||
// create such an instance except for the "root directory", which will only
|
||||
// be created once for each FV.
|
||||
//
|
||||
struct _FV_FILESYSTEM_FILE {
|
||||
UINT32 Signature;
|
||||
LIST_ENTRY Link;
|
||||
FV_FILESYSTEM_FILE_INFO *DirReadNext;
|
||||
FV_FILESYSTEM_INSTANCE *Instance;
|
||||
EFI_FILE_PROTOCOL FileProtocol;
|
||||
FV_FILESYSTEM_FILE_INFO *FvFileInfo;
|
||||
UINT64 Position;
|
||||
};
|
||||
|
||||
//
|
||||
// Struct representing the info of a file.
|
||||
//
|
||||
struct _FV_FILESYSTEM_FILE_INFO {
|
||||
UINT32 Signature;
|
||||
LIST_ENTRY Link;
|
||||
EFI_GUID NameGuid;
|
||||
EFI_FV_FILETYPE Type;
|
||||
EFI_FILE_INFO FileInfo;
|
||||
};
|
||||
|
||||
#define FVFS_FILE_SIGNATURE SIGNATURE_32 ('f', 'v', 'f', 'i')
|
||||
#define FVFS_FILE_INFO_SIGNATURE SIGNATURE_32 ('f', 'v', 'i', 'n')
|
||||
#define FVFS_INSTANCE_SIGNATURE SIGNATURE_32 ('f', 'v', 'f', 's')
|
||||
|
||||
#define FVFS_INSTANCE_FROM_SIMPLE_FS_THIS(This) CR ( \
|
||||
This, \
|
||||
FV_FILESYSTEM_INSTANCE, \
|
||||
SimpleFs, \
|
||||
FVFS_INSTANCE_SIGNATURE \
|
||||
)
|
||||
|
||||
#define FVFS_FILE_FROM_FILE_THIS(This) CR ( \
|
||||
This, \
|
||||
FV_FILESYSTEM_FILE, \
|
||||
FileProtocol, \
|
||||
FVFS_FILE_SIGNATURE \
|
||||
)
|
||||
|
||||
#define FVFS_FILE_INFO_FROM_LINK(This) CR ( \
|
||||
This, \
|
||||
FV_FILESYSTEM_FILE_INFO, \
|
||||
Link, \
|
||||
FVFS_FILE_INFO_SIGNATURE \
|
||||
)
|
||||
|
||||
#define FVFS_FILE_FROM_LINK(FileLink) CR (FileLink, FV_FILESYSTEM_FILE, Link, FVFS_FILE_SIGNATURE)
|
||||
|
||||
#define FVFS_GET_FIRST_FILE(Instance) FVFS_FILE_FROM_LINK (GetFirstNode (&Instance->FileHead))
|
||||
|
||||
#define FVFS_GET_FIRST_FILE_INFO(Instance) FVFS_FILE_INFO_FROM_LINK (GetFirstNode (&Instance->FileInfoHead))
|
||||
|
||||
|
||||
#define FV_FILETYPE_IS_EXECUTABLE(Type) ((Type) == EFI_FV_FILETYPE_PEIM || \
|
||||
(Type) == EFI_FV_FILETYPE_DRIVER || \
|
||||
(Type) == EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER || \
|
||||
(Type) == EFI_FV_FILETYPE_APPLICATION)
|
||||
|
||||
/**
|
||||
Open the root directory on a volume.
|
||||
|
||||
@param This A pointer to the volume to open the root directory.
|
||||
@param RootFile A pointer to the location to return the opened file handle for the
|
||||
root directory.
|
||||
|
||||
@retval EFI_SUCCESS The device was opened.
|
||||
@retval EFI_UNSUPPORTED This volume does not support the requested file system type.
|
||||
@retval EFI_NO_MEDIA The device has no medium.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error.
|
||||
@retval EFI_VOLUME_CORRUPTED The file system structures are corrupted.
|
||||
@retval EFI_ACCESS_DENIED The service denied access to the file.
|
||||
@retval EFI_OUT_OF_RESOURCES The volume was not opened due to lack of resources.
|
||||
@retval EFI_MEDIA_CHANGED The device has a different medium in it or the medium is no
|
||||
longer supported. Any existing file handles for this volume are
|
||||
no longer valid. To access the files on the new medium, the
|
||||
volume must be reopened with OpenVolume().
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemOpenVolume (
|
||||
IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This,
|
||||
OUT EFI_FILE_PROTOCOL **RootFile
|
||||
);
|
||||
|
||||
/**
|
||||
Test to see if this driver supports ControllerHandle.
|
||||
|
||||
@param DriverBinding Protocol instance pointer.
|
||||
@param ControllerHandle Handle of device to test
|
||||
@param RemainingDevicePath Optional parameter use to pick a specific child
|
||||
device to start.
|
||||
|
||||
@retval EFI_SUCCESS This driver supports this device
|
||||
@retval EFI_ALREADY_STARTED This driver is already running on this device
|
||||
@retval other This driver does not support this device
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemDriverSupported (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Start this driver on ControllerHandle by opening a FV protocol and
|
||||
installing a SimpleFileSystem protocol on ControllerHandle.
|
||||
|
||||
@param DriverBinding Protocol instance pointer.
|
||||
@param ControllerHandle Handle of device to bind driver to
|
||||
@param RemainingDevicePath Optional parameter use to pick a specific child
|
||||
device to start.
|
||||
|
||||
@retval EFI_SUCCESS This driver is added to ControllerHandle
|
||||
@retval EFI_ALREADY_STARTED This driver is already running on ControllerHandle
|
||||
@retval other This driver does not support this device
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemDriverStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Stop this driver on ControllerHandle by removing SimpleFileSystem protocol and closing
|
||||
the FV protocol on ControllerHandle.
|
||||
|
||||
@param DriverBinding Protocol instance pointer.
|
||||
@param ControllerHandle Handle of device to stop driver on
|
||||
@param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
|
||||
children is zero stop the entire bus driver.
|
||||
@param ChildHandleBuffer List of Child Handles to Stop.
|
||||
|
||||
@retval EFI_SUCCESS This driver is removed ControllerHandle
|
||||
@retval other This driver was not removed from this device
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemDriverStop (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Opens a new file relative to the source file's location.
|
||||
|
||||
@param 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.
|
||||
@param NewHandle A pointer to the location to return the opened handle for the new
|
||||
file.
|
||||
@param FileName The Null-terminated string of the name of the file to be opened.
|
||||
The file name may contain the following path modifiers: "\", ".",
|
||||
and "..".
|
||||
@param 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.
|
||||
@param Attributes Only valid for EFI_FILE_MODE_CREATE, in which case these are the
|
||||
attribute bits for the newly created file.
|
||||
|
||||
@retval EFI_SUCCESS The file was opened.
|
||||
@retval EFI_NOT_FOUND The specified file could not be found on the device.
|
||||
@retval EFI_NO_MEDIA The device has no medium.
|
||||
@retval EFI_MEDIA_CHANGED The device has a different medium in it or the medium is no
|
||||
longer supported.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error.
|
||||
@retval EFI_VOLUME_CORRUPTED The file system structures are corrupted.
|
||||
@retval EFI_WRITE_PROTECTED An attempt was made to create a file, or open a file for write
|
||||
when the media is write-protected.
|
||||
@retval EFI_ACCESS_DENIED The service denied access to the file.
|
||||
@retval EFI_OUT_OF_RESOURCES Not enough resources were available to open the file.
|
||||
@retval EFI_VOLUME_FULL The volume is full.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemOpen (
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
OUT EFI_FILE_PROTOCOL **NewHandle,
|
||||
IN CHAR16 *FileName,
|
||||
IN UINT64 OpenMode,
|
||||
IN UINT64 Attributes
|
||||
);
|
||||
|
||||
/**
|
||||
Closes a specified file handle.
|
||||
|
||||
@param This A pointer to the EFI_FILE_PROTOCOL instance that is the file
|
||||
handle to close.
|
||||
|
||||
@retval EFI_SUCCESS The file was closed.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemClose (
|
||||
IN EFI_FILE_PROTOCOL *This
|
||||
);
|
||||
|
||||
/**
|
||||
Reads data from a file.
|
||||
|
||||
@param This A pointer to the EFI_FILE_PROTOCOL instance that is the file
|
||||
handle to read data from.
|
||||
@param 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.
|
||||
@param Buffer The buffer into which the data is read.
|
||||
|
||||
@retval EFI_SUCCESS Data was read.
|
||||
@retval EFI_NO_MEDIA The device has no medium.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error.
|
||||
@retval EFI_DEVICE_ERROR An attempt was made to read from a deleted file.
|
||||
@retval EFI_DEVICE_ERROR On entry, the current file position is beyond the end of the file.
|
||||
@retval EFI_VOLUME_CORRUPTED The file system structures are corrupted.
|
||||
@retval 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemRead (
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
IN OUT UINTN *BufferSize,
|
||||
OUT VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
Writes data to a file.
|
||||
|
||||
@param This A pointer to the EFI_FILE_PROTOCOL instance that is the file
|
||||
handle to write data to.
|
||||
@param 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.
|
||||
@param Buffer The buffer of data to write.
|
||||
|
||||
@retval EFI_SUCCESS Data was written.
|
||||
@retval EFI_UNSUPPORTED Writes to open directory files are not supported.
|
||||
@retval EFI_NO_MEDIA The device has no medium.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error.
|
||||
@retval EFI_DEVICE_ERROR An attempt was made to write to a deleted file.
|
||||
@retval EFI_VOLUME_CORRUPTED The file system structures are corrupted.
|
||||
@retval EFI_WRITE_PROTECTED The file or medium is write-protected.
|
||||
@retval EFI_ACCESS_DENIED The file was opened read only.
|
||||
@retval EFI_VOLUME_FULL The volume is full.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemWrite (
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
IN OUT UINTN *BufferSize,
|
||||
IN VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
Returns a file's current position.
|
||||
|
||||
@param This A pointer to the EFI_FILE_PROTOCOL instance that is the file
|
||||
handle to get the current position on.
|
||||
@param Position The address to return the file's current position value.
|
||||
|
||||
@retval EFI_SUCCESS The position was returned.
|
||||
@retval EFI_UNSUPPORTED The request is not valid on open directories.
|
||||
@retval EFI_DEVICE_ERROR An attempt was made to get the position from a deleted file.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemGetPosition (
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
OUT UINT64 *Position
|
||||
);
|
||||
|
||||
/**
|
||||
Sets a file's current position.
|
||||
|
||||
@param This A pointer to the EFI_FILE_PROTOCOL instance that is the
|
||||
file handle to set the requested position on.
|
||||
@param Position The byte position from the start of the file to set.
|
||||
|
||||
@retval EFI_SUCCESS The position was set.
|
||||
@retval EFI_UNSUPPORTED The seek request for nonzero is not valid on open
|
||||
directories.
|
||||
@retval EFI_DEVICE_ERROR An attempt was made to set the position of a deleted file.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemSetPosition (
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
IN UINT64 Position
|
||||
);
|
||||
|
||||
/**
|
||||
Flushes all modified data associated with a file to a device.
|
||||
|
||||
@param This A pointer to the EFI_FILE_PROTOCOL instance that is the file
|
||||
handle to flush.
|
||||
|
||||
@retval EFI_SUCCESS The data was flushed.
|
||||
@retval EFI_NO_MEDIA The device has no medium.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error.
|
||||
@retval EFI_VOLUME_CORRUPTED The file system structures are corrupted.
|
||||
@retval EFI_WRITE_PROTECTED The file or medium is write-protected.
|
||||
@retval EFI_ACCESS_DENIED The file was opened read-only.
|
||||
@retval EFI_VOLUME_FULL The volume is full.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemFlush (
|
||||
IN EFI_FILE_PROTOCOL *This
|
||||
);
|
||||
|
||||
/**
|
||||
Close and delete the file handle.
|
||||
|
||||
@param This A pointer to the EFI_FILE_PROTOCOL instance that is the
|
||||
handle to the file to delete.
|
||||
|
||||
@retval EFI_SUCCESS The file was closed and deleted, and the handle was closed.
|
||||
@retval EFI_WARN_DELETE_FAILURE The handle was closed, but the file was not deleted.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemDelete (
|
||||
IN EFI_FILE_PROTOCOL *This
|
||||
);
|
||||
|
||||
/**
|
||||
Returns information about a file.
|
||||
|
||||
@param This A pointer to the EFI_FILE_PROTOCOL instance that is the file
|
||||
handle the requested information is for.
|
||||
@param InformationType The type identifier for the information being requested.
|
||||
@param 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.
|
||||
@param Buffer A pointer to the data buffer to return. The buffer's type is
|
||||
indicated by InformationType.
|
||||
|
||||
@retval EFI_SUCCESS The information was returned.
|
||||
@retval EFI_UNSUPPORTED The InformationType is not known.
|
||||
@retval EFI_NO_MEDIA The device has no medium.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error.
|
||||
@retval EFI_VOLUME_CORRUPTED The file system structures are corrupted.
|
||||
@retval 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.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemGetInfo (
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
IN EFI_GUID *InformationType,
|
||||
IN OUT UINTN *BufferSize,
|
||||
OUT VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
Sets information about a file.
|
||||
|
||||
@param This A pointer to the EFI_FILE_PROTOCOL instance that is the file
|
||||
handle the information is for.
|
||||
@param InformationType The type identifier for the information being set.
|
||||
@param BufferSize The size, in bytes, of Buffer.
|
||||
@param Buffer A pointer to the data buffer to write. The buffer's type is
|
||||
indicated by InformationType.
|
||||
|
||||
@retval EFI_SUCCESS The information was set.
|
||||
@retval EFI_UNSUPPORTED The InformationType is not known.
|
||||
@retval EFI_NO_MEDIA The device has no medium.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error.
|
||||
@retval EFI_VOLUME_CORRUPTED The file system structures are corrupted.
|
||||
@retval EFI_WRITE_PROTECTED InformationType is EFI_FILE_INFO_ID and the media is
|
||||
read-only.
|
||||
@retval EFI_WRITE_PROTECTED InformationType is EFI_FILE_PROTOCOL_SYSTEM_INFO_ID
|
||||
and the media is read only.
|
||||
@retval EFI_WRITE_PROTECTED InformationType is EFI_FILE_SYSTEM_VOLUME_LABEL_ID
|
||||
and the media is read-only.
|
||||
@retval EFI_ACCESS_DENIED An attempt is made to change the name of a file to a
|
||||
file that is already present.
|
||||
@retval EFI_ACCESS_DENIED An attempt is being made to change the EFI_FILE_DIRECTORY
|
||||
Attribute.
|
||||
@retval EFI_ACCESS_DENIED An attempt is being made to change the size of a directory.
|
||||
@retval 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.
|
||||
@retval EFI_VOLUME_FULL The volume is full.
|
||||
@retval EFI_BAD_BUFFER_SIZE BufferSize is smaller than the size of the type indicated
|
||||
by InformationType.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemSetInfo (
|
||||
IN EFI_FILE_PROTOCOL *This,
|
||||
IN EFI_GUID *InformationType,
|
||||
IN UINTN BufferSize,
|
||||
IN VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
Get the size of the buffer that will be returned by FvFsReadFile.
|
||||
|
||||
@param FvProtocol A pointer to the EFI_FIRMWARE_VOLUME2_PROTOCOL instance.
|
||||
@param FvFileInfo A pointer to the FV_FILESYSTEM_FILE_INFO instance that is a struct
|
||||
representing a file's info.
|
||||
|
||||
@retval EFI_SUCCESS The file size was gotten correctly.
|
||||
@retval Others The file size wasn't gotten correctly.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
FvFsGetFileSize (
|
||||
IN EFI_FIRMWARE_VOLUME2_PROTOCOL *FvProtocol,
|
||||
IN OUT FV_FILESYSTEM_FILE_INFO *FvFileInfo
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieves a Unicode string that is the user readable name of the driver.
|
||||
|
||||
This function retrieves the user readable name of a driver in the form of a
|
||||
Unicode string. If the driver specified by This has a user readable name in
|
||||
the language specified by Language, then a pointer to the driver name is
|
||||
returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
|
||||
by This does not support the language specified by Language,
|
||||
then EFI_UNSUPPORTED is returned.
|
||||
|
||||
@param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
|
||||
EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||
|
||||
@param Language[in] A pointer to a Null-terminated ASCII string
|
||||
array indicating the language. This is the
|
||||
language of the driver name that the caller is
|
||||
requesting, and it must match one of the
|
||||
languages specified in SupportedLanguages. The
|
||||
number of languages supported by a driver is up
|
||||
to the driver writer. Language is specified
|
||||
in RFC 4646 or ISO 639-2 language code format.
|
||||
|
||||
@param DriverName[out] A pointer to the Unicode string to return.
|
||||
This Unicode string is the name of the
|
||||
driver specified by This in the language
|
||||
specified by Language.
|
||||
|
||||
@retval EFI_SUCCESS The Unicode string for the Driver specified by
|
||||
This and the language specified by Language was
|
||||
returned in DriverName.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER DriverName is NULL.
|
||||
|
||||
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||
the language specified by Language.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemComponentNameGetDriverName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **DriverName
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieves a Unicode string that is the user readable name of the controller
|
||||
that is being managed by a driver.
|
||||
|
||||
This function retrieves the user readable name of the controller specified by
|
||||
ControllerHandle and ChildHandle in the form of a Unicode string. If the
|
||||
driver specified by This has a user readable name in the language specified by
|
||||
Language, then a pointer to the controller name is returned in ControllerName,
|
||||
and EFI_SUCCESS is returned. If the driver specified by This is not currently
|
||||
managing the controller specified by ControllerHandle and ChildHandle,
|
||||
then EFI_UNSUPPORTED is returned. If the driver specified by This does not
|
||||
support the language specified by Language, then EFI_UNSUPPORTED is returned.
|
||||
|
||||
@param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
|
||||
EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||
|
||||
@param ControllerHandle[in] The handle of a controller that the driver
|
||||
specified by This is managing. This handle
|
||||
specifies the controller whose name is to be
|
||||
returned.
|
||||
|
||||
@param ChildHandle[in] The handle of the child controller to retrieve
|
||||
the name of. This is an optional parameter that
|
||||
may be NULL. It will be NULL for device
|
||||
drivers. It will also be NULL for a bus drivers
|
||||
that wish to retrieve the name of the bus
|
||||
controller. It will not be NULL for a bus
|
||||
driver that wishes to retrieve the name of a
|
||||
child controller.
|
||||
|
||||
@param Language[in] A pointer to a Null-terminated ASCII string
|
||||
array indicating the language. This is the
|
||||
language of the driver name that the caller is
|
||||
requesting, and it must match one of the
|
||||
languages specified in SupportedLanguages. The
|
||||
number of languages supported by a driver is up
|
||||
to the driver writer. Language is specified in
|
||||
RFC 4646 or ISO 639-2 language code format.
|
||||
|
||||
@param ControllerName[out] A pointer to the Unicode string to return.
|
||||
This Unicode string is the name of the
|
||||
controller specified by ControllerHandle and
|
||||
ChildHandle in the language specified by
|
||||
Language from the point of view of the driver
|
||||
specified by This.
|
||||
|
||||
@retval EFI_SUCCESS The Unicode string for the user readable name in
|
||||
the language specified by Language for the
|
||||
driver specified by This was returned in
|
||||
DriverName.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER ControllerHandle is NULL.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
|
||||
EFI_HANDLE.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER ControllerName is NULL.
|
||||
|
||||
@retval EFI_UNSUPPORTED The driver specified by This is not currently
|
||||
managing the controller specified by
|
||||
ControllerHandle and ChildHandle.
|
||||
|
||||
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||
the language specified by Language.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvSimpleFileSystemComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
);
|
||||
|
||||
extern EFI_UNICODE_COLLATION_PROTOCOL *mUnicodeCollation;
|
||||
extern EFI_FILE_PROTOCOL mFileSystemTemplate;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gFvSimpleFileSystemComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gFvSimpleFileSystemComponentName2;
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user