use crate::*;
use winapi::um::winnt::{JOBOBJECT_BASIC_LIMIT_INFORMATION, JOBOBJECT_EXTENDED_LIMIT_INFORMATION, JobObjectBasicLimitInformation, JobObjectExtendedLimitInformation};
#[derive(Clone, Copy, Debug, Default)]
#[repr(C)] pub struct BasicLimitInformation {
pub per_process_user_time_limit: u64, pub per_job_user_time_limit: u64, pub limit_flags: job::object::limit::Flags,
pub minimum_working_set_size: usize, pub maximum_working_set_size: usize, pub active_process_limit: u32, pub affinity: usize, pub priority_class: u32, pub scheduling_class: u32, }
structure!(@assert layout BasicLimitInformation => JOBOBJECT_BASIC_LIMIT_INFORMATION {
per_process_user_time_limit == PerProcessUserTimeLimit,
per_job_user_time_limit == PerJobUserTimeLimit,
limit_flags == LimitFlags,
minimum_working_set_size == MinimumWorkingSetSize,
maximum_working_set_size == MaximumWorkingSetSize,
active_process_limit == ActiveProcessLimit,
affinity == Affinity,
priority_class == PriorityClass,
scheduling_class == SchedulingClass,
});
#[derive(Clone, Copy, Debug, Default)]
#[repr(C)] pub struct ExtendedLimitInformation {
pub basic_limit_information: BasicLimitInformation,
pub io_info: io::Counters,
pub process_memory_limit: usize, pub job_memory_limit: usize, pub peak_process_memory_used: usize, pub peak_job_memory_used: usize, }
structure!(@assert layout ExtendedLimitInformation => JOBOBJECT_EXTENDED_LIMIT_INFORMATION {
basic_limit_information == BasicLimitInformation,
io_info == IoInfo,
process_memory_limit == ProcessMemoryLimit,
job_memory_limit == JobMemoryLimit,
peak_process_memory_used == PeakProcessMemoryUsed,
peak_job_memory_used == PeakJobMemoryUsed,
});
impl job::QueryInformationJobObject for JOBOBJECT_BASIC_LIMIT_INFORMATION { fn query_from(job: &job::OwnedHandle) -> Result<Self, Error> { unsafe { job::query_fixed(job, JobObjectBasicLimitInformation) } } }
impl job::QueryInformationJobObject for job::object::BasicLimitInformation { fn query_from(job: &job::OwnedHandle) -> Result<Self, Error> { unsafe { job::query_fixed(job, JobObjectBasicLimitInformation) } } }
impl job::QueryInformationJobObject for JOBOBJECT_EXTENDED_LIMIT_INFORMATION { fn query_from(job: &job::OwnedHandle) -> Result<Self, Error> { unsafe { job::query_fixed(job, JobObjectExtendedLimitInformation) } } }
impl job::QueryInformationJobObject for job::object::ExtendedLimitInformation { fn query_from(job: &job::OwnedHandle) -> Result<Self, Error> { unsafe { job::query_fixed(job, JobObjectExtendedLimitInformation) } } }
impl job::SetInformationJobObject for JOBOBJECT_BASIC_LIMIT_INFORMATION { fn set_on(self, job: &job::OwnedHandle) -> Result<(), Error> { unsafe { job::set(job, JobObjectBasicLimitInformation, &self) } } }
impl job::SetInformationJobObject for job::object::BasicLimitInformation { fn set_on(self, job: &job::OwnedHandle) -> Result<(), Error> { unsafe { job::set(job, JobObjectBasicLimitInformation, &self) } } }
impl job::SetInformationJobObject for JOBOBJECT_EXTENDED_LIMIT_INFORMATION { fn set_on(self, job: &job::OwnedHandle) -> Result<(), Error> { unsafe { job::set(job, JobObjectExtendedLimitInformation, &self) } } }
impl job::SetInformationJobObject for job::object::ExtendedLimitInformation { fn set_on(self, job: &job::OwnedHandle) -> Result<(), Error> { unsafe { job::set(job, JobObjectExtendedLimitInformation, &self) } } }