include vmm.inc mov ebx, VM ; VM handle or 0 if Create_VM error mov ecx, GetSet ; zero if get, nonzero zero if set mov eax, Error ; error code if ecx nonzero mov edx, RefData ; reference data if ecx is nonzero VMMcall GetSetDetailedVMError jz no_error_info ; zero set if no error information mov [Error], eax ; error code mov [RefData], edx ; reference data for the error code
Sets detailed error code for a virtual machine crash or start-up error. This service is only available for Windows version 3.1 or later. Uses EAX, EDX, Flags.
VM
Handle of the virtual machine. If this parameter is zero, the service gets or sets error information for the Create_VM message.
GetSet
Value specifying the action to take. If zero, the service retrieves error information. If nonzero, the service sets error information.
Error
Error code to set. This parameter is ignored if the GetSet parameter is zero. There are the following error code values:
Value | Meaning |
GSDVME_CrtNoMsg | Problem creating the VM. The system will not display any error message; it is the responsibility of the virtual device to use the SHELL_Message service to display a custom error message. |
GSDVME_DevNuke | Device-specific problem. |
GSDVME_DevNukeHdwr | Device-specific problem caused by software running in the virtual machine. |
GSDVME_InsMemEMS | Available EMS memory is less than requested; set by the virtual V86 mode memory manager. |
GSDVME_InsMemV86 | Insufficient V86 memory; set by the virtual V86 mode memory manager. |
GSDVME_InsMemV86Hi | Insufficient high MS-DOS memory; set by the virtual MS-DOS manager. |
GSDVME_InsMemVid | Insufficient base video memory; set by the virtual display device. |
GSDVME_InsMemVM | Insufficient base virtual machine memory for control block or instance buffer. |
GSDVME_InsMemXMS | Available XMS memory is less than requested; set by the virtual V86 mode memory manager. |
GSDVME_InsV86Space | Available V86 address space is less than requested; set by the virtual V86 mode memory manager. |
GSDVME_InvalFlt | Invalid fault. |
GSDVME_InvalGpFlt | Invalid GP fault. |
GSDVME_InvalInst | Attempt to execute an invalid instruction. |
GSDVME_InvalPgFlt | Invalid page fault. |
GSDVME_InsMemDev | Could not allocate base virtual machine memory for device. |
GSDVME_NukeNoMsg | Fatal problem forcing the VM to be destroyed. The system will not display any error message; it is the responsibility of the virtual device to use the SHELL_Message service to display a custom error message. |
GSDVME_OkNukeMask | Reserved for the exclusive use of the virtual MS-DOS manager. |
GSDVME_PrivInst | Attempt to execute a privileged instruction. |
GSDVME_UserNuke | User requested running virtual machine be terminated. |
Error values that have the high word set to 2 are intended to be used when a virtual machine fails on start up.
RefData
Reference data to set. If the Error parameter is GSDVME_PrivInst, GSDVME_InvalInst, GSDVME_InvalPgFlt, GSDVME_InvalGpFlt, or GSDVME_InvalFlt, this parameter is the address of a VMFaultInfo structure that contains data associated with the error. Otherwise, RefData is a pointer to an eight-character buffer giving the name of the virtual device that reported the error.
This parameter is ignored if the GetSet parameter is zero. This parameter is zero if there is no associated reference data.