pub enum VmiEventAction {
Continue,
Deny,
ReinjectInterrupt,
Singlestep,
FastSinglestep,
Emulate,
}Expand description
The primary action to take when resuming from a VMI event.
These actions are mutually exclusive. Each variant maps to a distinct hypervisor resume behavior.
Variants§
Continue
Resume the vCPU normally, allowing the trapped instruction to proceed with its original side effects.
Deny
Deny the event (suppress CR/MSR write side effects).
The instruction has already executed and RIP has advanced, but the register write is not committed. Effectively makes the instruction a no-op.
ReinjectInterrupt
Reinject the interrupt back into the guest.
Used when a monitored interrupt (e.g. INT3) was not placed by us and should be delivered to the guest’s own interrupt handler.
Singlestep
Single-step one instruction.
When returned from a non-singlestep event, enables singlestep for the next instruction. When returned from a singlestep event, continues singlestepping for one more instruction. When absent from a singlestep event response, singlestep is automatically disabled.
FastSinglestep
Fast single-step one instruction in the response’s view, then silently switch back to the event’s original view. Unlike regular singlestep, this never generates a VMI event.
Emulate
Emulate the faulting instruction inside the hypervisor instead of returning to the guest. Useful for handling read/write memory access events without switching views.
Trait Implementations§
Source§impl Clone for VmiEventAction
impl Clone for VmiEventAction
Source§fn clone(&self) -> VmiEventAction
fn clone(&self) -> VmiEventAction
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for VmiEventAction
impl Debug for VmiEventAction
Source§impl Default for VmiEventAction
impl Default for VmiEventAction
Source§fn default() -> VmiEventAction
fn default() -> VmiEventAction
Source§impl PartialEq for VmiEventAction
impl PartialEq for VmiEventAction
impl Copy for VmiEventAction
impl Eq for VmiEventAction
impl StructuralPartialEq for VmiEventAction
Auto Trait Implementations§
impl Freeze for VmiEventAction
impl RefUnwindSafe for VmiEventAction
impl Send for VmiEventAction
impl Sync for VmiEventAction
impl Unpin for VmiEventAction
impl UnsafeUnpin for VmiEventAction
impl UnwindSafe for VmiEventAction
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.