use super::file::{Directory, FileHandle, FileImpl};
use crate::proto::Protocol;
use crate::{unsafe_guid, Result, Status};
use core::ptr;
#[repr(C)]
#[unsafe_guid("964e5b22-6459-11d2-8e39-00a0c969723b")]
#[derive(Protocol)]
pub struct SimpleFileSystem {
revision: u64,
open_volume:
extern "efiapi" fn(this: &mut SimpleFileSystem, root: &mut *mut FileImpl) -> Status,
}
impl SimpleFileSystem {
pub fn open_volume(&mut self) -> Result<Directory> {
let mut ptr = ptr::null_mut();
(self.open_volume)(self, &mut ptr)
.into_with_val(|| unsafe { Directory::new(FileHandle::new(ptr)) })
}
}