uefi_raw/protocol/
disk.rs1use crate::{guid, Event, Guid, Status};
2use core::ffi::c_void;
3
4#[derive(Debug)]
5#[repr(C)]
6pub struct DiskIoProtocol {
7 pub revision: u64,
8 pub read_disk: unsafe extern "efiapi" fn(
9 this: *const Self,
10 media_id: u32,
11 offset: u64,
12 buffer_size: usize,
13 buffer: *mut c_void,
14 ) -> Status,
15 pub write_disk: unsafe extern "efiapi" fn(
16 this: *mut Self,
17 media_id: u32,
18 offset: u64,
19 buffer_size: usize,
20 buffer: *const c_void,
21 ) -> Status,
22}
23
24impl DiskIoProtocol {
25 pub const GUID: Guid = guid!("ce345171-ba0b-11d2-8e4f-00a0c969723b");
26 pub const REVISION: u64 = 0x00010000;
27}
28
29#[repr(C)]
30#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd)]
31pub struct DiskIo2Token {
32 pub event: Event,
33 pub transaction_status: Status,
34}
35
36#[derive(Debug)]
37#[repr(C)]
38pub struct DiskIo2Protocol {
39 pub revision: u64,
40 pub cancel: unsafe extern "efiapi" fn(this: *mut Self) -> Status,
41 pub read_disk_ex: unsafe extern "efiapi" fn(
42 this: *const Self,
43 media_id: u32,
44 offset: u64,
45 token: *mut DiskIo2Token,
46 buffer_size: usize,
47 buffer: *mut c_void,
48 ) -> Status,
49 pub write_disk_ex: unsafe extern "efiapi" fn(
50 this: *mut Self,
51 media_id: u32,
52 offset: u64,
53 token: *mut DiskIo2Token,
54 buffer_size: usize,
55 buffer: *const c_void,
56 ) -> Status,
57 pub flush_disk_ex:
58 unsafe extern "efiapi" fn(this: *mut Self, token: *mut DiskIo2Token) -> Status,
59}
60
61impl DiskIo2Protocol {
62 pub const GUID: Guid = guid!("151c8eae-7f2c-472c-9e54-9828194f6a88");
63 pub const REVISION: u64 = 0x00020000;
64}