Struct uefi::proto::media::file::RegularFile

source ·
pub struct RegularFile(/* private fields */);
Expand description

A FileHandle that is also a regular (data) file.

Use FileHandle::into_type or RegularFile::new to create a RegularFile. In addition to supporting the normal File operations, RegularFile supports direct reading and writing.

Implementations§

source§

impl RegularFile

source

pub const END_OF_FILE: u64 = 18_446_744_073_709_551_615u64

A special position used to seek to the end of a file with set_position().

source

pub unsafe fn new(handle: FileHandle) -> Self

Coverts a FileHandle into a RegularFile without checking the file kind.

§Safety

This function should only be called on handles which ARE NOT directories, doing otherwise is unsafe.

source

pub fn read(&mut self, buffer: &mut [u8]) -> Result<usize>

Read data from file.

Try to read as much as possible into buffer. Returns the number of bytes that were actually read.

§Arguments
  • buffer The target buffer of the read operation
§Errors

See section EFI_FILE_PROTOCOL.Read() in the UEFI Specification for more details.

§Quirks

Some UEFI implementations have a bug where large reads will incorrectly return an error. This function avoids that bug by reading in chunks of no more than 1 MiB. This is handled internally within the function; callers can safely pass in a buffer of any size. See https://github.com/rust-osdev/uefi-rs/issues/825 for more information.

source

pub fn write(&mut self, buffer: &[u8]) -> Result<(), usize>

Write data to file

Write buffer to file, increment the file pointer.

If an error occurs, returns the number of bytes that were actually written. If no error occurred, the entire buffer is guaranteed to have been written successfully.

§Arguments
  • buffer Buffer to write to file
§Errors

See section EFI_FILE_PROTOCOL.Write() in the UEFI Specification for more details.

source

pub fn get_position(&mut self) -> Result<u64>

Get the file’s current position

§Errors

See section EFI_FILE_PROTOCOL.GetPosition() in the UEFI Specification for more details.

source

pub fn set_position(&mut self, position: u64) -> Result

Sets the file’s current position

Set the position of this file handle to the absolute position specified by position.

Seeking past the end of the file is allowed, it will trigger file growth on the next write. Using a position of RegularFile::END_OF_FILE will seek to the end of the file.

§Arguments
  • position The new absolution position of the file handle
§Errors

See section EFI_FILE_PROTOCOL.SetPosition() in the UEFI Specification for more details.

Trait Implementations§

source§

impl Debug for RegularFile

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl File for RegularFile

source§

fn is_regular_file(&self) -> Result<bool>

Returns if the underlying file is a regular file. The result is an error if the underlying file was already closed or deleted. Read more
source§

fn is_directory(&self) -> Result<bool>

Returns if the underlying file is a directory. The result is an error if the underlying file was already closed or deleted. Read more
source§

fn open( &mut self, filename: &CStr16, open_mode: FileMode, attributes: FileAttribute ) -> Result<FileHandle>

Try to open a file relative to this file. Read more
source§

fn close(self)

Close this file handle. Same as dropping this structure.
source§

fn delete(self) -> Result

Closes and deletes this file Read more
source§

fn get_info<'buf, Info: FileProtocolInfo + ?Sized>( &mut self, buffer: &'buf mut [u8] ) -> Result<&'buf mut Info, Option<usize>>

Queries some information about a file Read more
source§

fn set_info<Info: FileProtocolInfo + ?Sized>(&mut self, info: &Info) -> Result

Sets some information about a file Read more
source§

fn flush(&mut self) -> Result

Flushes all modified data associated with the file handle to the device Read more
source§

fn get_boxed_info<Info: FileProtocolInfo + ?Sized + Debug>( &mut self ) -> Result<Box<Info>>

Available on crate feature alloc only.
Read the dynamically allocated info for a file.
source§

fn get_boxed_info_in<Info: FileProtocolInfo + ?Sized + Debug, A: Allocator>( &mut self, allocator: A ) -> Result<Box<Info>>

Available on crate features unstable and alloc only.
Read the dynamically allocated info for a file.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Pointee for T

§

type Metadata = ()

The type for metadata in pointers and references to Self.
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.