use binrw::{io::TakeSeekExt, prelude::*};
use smb_dtyp::SID;
use smb_dtyp::binrw_util::prelude::*;
#[binrw::binrw]
#[derive(Debug, PartialEq, Eq)]
pub struct FileQuotaInformation {
#[bw(calc = PosMarker::default())]
#[br(temp)]
sid_length: PosMarker<u32>,
pub change_time: FileTime,
pub quota_used: u64,
pub quota_threshold: u64,
pub quota_limit: u64,
#[br(map_stream = |s| s.take_seek(sid_length.value as u64))]
#[bw(write_with = PosMarker::write_size, args(&sid_length))]
pub sid: SID,
}
impl FileQuotaInformation {
pub const MIN_SIZE: usize = std::mem::size_of::<u32>()
+ std::mem::size_of::<FileTime>()
+ std::mem::size_of::<u64>()
+ std::mem::size_of::<u64>()
+ std::mem::size_of::<u64>()
+ SID::MIN_SIZE;
}
#[binrw::binrw]
#[derive(Debug, PartialEq, Eq)]
pub struct FileGetQuotaInformation {
#[bw(calc = PosMarker::default())]
#[br(temp)]
sid_length: PosMarker<u32>,
#[br(map_stream = |s| s.take_seek(sid_length.value as u64))]
#[bw(write_with = PosMarker::write_size, args(&sid_length))]
pub sid: SID,
}