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.