(path: &str, data: &[u8])
| 73 | } |
| 74 | |
| 75 | pub fn shell_write_file(path: &str, data: &[u8]) -> Result { |
| 76 | let shell = get_shell_protocol(); |
| 77 | let c_path = |
| 78 | CString16::try_from(path).map_err(|_| uefi::Error::from(Status::INVALID_PARAMETER))?; |
| 79 | |
| 80 | unsafe { |
| 81 | let mode = FileMode::READ | FileMode::WRITE | FileMode::CREATE; |
| 82 | let mut handle: MaybeUninit<ShellFileHandle> = MaybeUninit::zeroed(); |
| 83 | (shell.open_file_by_name)(c_path.as_ptr().cast(), handle.as_mut_ptr(), mode.bits()) |
| 84 | .to_result()?; |
| 85 | |
| 86 | let file_handle = handle.assume_init(); |
| 87 | |
| 88 | let mut write_size = data.len(); |
| 89 | let status = (shell.write_file)(file_handle, &mut write_size, data.as_ptr() as *mut _); |
| 90 | |
| 91 | let _ = (shell.close_file)(file_handle); |
| 92 | |
| 93 | status.to_result() |
| 94 | } |
| 95 | } |
no test coverage detected