use crate::{IrqlCanLowerTo, IrqlCanRaiseTo, IrqlLevel, Passive};
pub trait IrqlFn<Level: IrqlLevel, Args, Min: IrqlLevel = Passive> {
type Output;
fn call<IRQL>(&self, args: Args) -> Self::Output
where
IRQL: IrqlCanRaiseTo<Level> + IrqlCanLowerTo<Min>;
}
pub trait IrqlFnMut<Level: IrqlLevel, Args, Min: IrqlLevel = Passive> {
type Output;
fn call_mut<IRQL>(&mut self, args: Args) -> Self::Output
where
IRQL: IrqlCanRaiseTo<Level> + IrqlCanLowerTo<Min>;
}
pub trait IrqlFnOnce<Level: IrqlLevel, Args, Min: IrqlLevel = Passive> {
type Output;
fn call_once<IRQL>(self, args: Args) -> Self::Output
where
IRQL: IrqlCanRaiseTo<Level> + IrqlCanLowerTo<Min>;
}