Suspend_VM

include vmm.inc

mov     ebx, VMHandle
VMMCall Suspend_VM
jc      not_suspended
 

Suspends the execution of a specified virtual machine. This service fails if the specified virtual machine either owns the critical section, or is the system virtual machine. Uses Flags.

VMHandle
Handle of the virtual machine to suspend.

An error occurs if the virtual machine is in a critical section, or if the VMHandle parameter specifies the system virtual machine.

This service increments the suspend count for the virtual machine. If the virtual machine was not already suspended, the system notifies virtual devices of the suspension by sending a VM_Suspend message to the control procedure for each virtual device. A virtual device must not refuse to suspend a virtual machine. If a virtual machine remains suspended, subsequent calls to Suspend_VM do not cause the VM_Suspend notification.

When a virtual machine is suspended, the system sets the VMStat_Suspended bit in the CB_VM_Status field of the virtual machine's control block. Although virtual devices may examine and modify the contents of the control block of a virtual machine, the virtual devices must not examine or modify any memory owned by a suspended virtual machine unless the virtual device previously locked that memory.

Note that the actual suspension of a virtual machine may be delayed for various reasons. When the suspension is delayed, the service returns success, but the actual suspension does not take effect until later.

See Also

No_Fail_Resume_VM, Resume_VM, VM_Suspend