use crate::{guid, Event, Guid, Status}; use core::ffi::c_void; #[derive(Debug)] #[repr(C)] pub struct DiskIoProtocol { pub revision: u64, pub read_disk: unsafe extern "efiapi" fn( this: *const Self, media_id: u32, offset: u64, buffer_size: usize, buffer: *mut c_void, ) -> Status, pub write_disk: unsafe extern "efiapi" fn( this: *mut Self, media_id: u32, offset: u64, buffer_size: usize, buffer: *const c_void, ) -> Status, } impl DiskIoProtocol { pub const GUID: Guid = guid!("ce345171-ba0b-11d2-8e4f-00a0c969723b"); pub const REVISION: u64 = 0x00010000; } #[repr(C)] #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd)] pub struct DiskIo2Token { pub event: Event, pub transaction_status: Status, } #[derive(Debug)] #[repr(C)] pub struct DiskIo2Protocol { pub revision: u64, pub cancel: unsafe extern "efiapi" fn(this: *mut Self) -> Status, pub read_disk_ex: unsafe extern "efiapi" fn( this: *const Self, media_id: u32, offset: u64, token: *mut DiskIo2Token, buffer_size: usize, buffer: *mut c_void, ) -> Status, pub write_disk_ex: unsafe extern "efiapi" fn( this: *mut Self, media_id: u32, offset: u64, token: *mut DiskIo2Token, buffer_size: usize, buffer: *const c_void, ) -> Status, pub flush_disk_ex: unsafe extern "efiapi" fn(this: *mut Self, token: *mut DiskIo2Token) -> Status, } impl DiskIo2Protocol { pub const GUID: Guid = guid!("151c8eae-7f2c-472c-9e54-9828194f6a88"); pub const REVISION: u64 = 0x00020000; }