GetSetDetailedVMError

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.