System_Control

include vmm.inc

mov     eax, Message    ; system control message
mov     ebx, VM         ; VM handle (if needed by message)
mov     esi, Param1     ; message-specific parameter
mov     edi, Param2     ; message-specific parameter
mov     edx, Param3     ; message-specific parameter
VMMCall System_Control

jc      error           ; carry flag set if error
 

Sends system control messages to all the virtual devices and, depending on the message, to the VMM. Uses Flags, and possibly other registers depending on the service.

Message
System control message to send. Can be one of the values listed in VMM Messages, or a private message in the reserved private system control range described above.
VM
Handle of a virtual machine. This parameter is not required by every system control message.
Param1
Message-specific parameter.
Param2
Message-specific parameter.
Param3
Message-specific parameter.

Although virtual devices may receive many of the system control messages, they may send only the following messages:

Message Description
Create_VM May only be sent by the virtual shell device.
Destroy_VM May only be sent by the virtual shell device.
Set_Device_Focus May be sent by any virtual device. If the device ID is zero, all devices with a focus that can be set, must set their focus to the specified virtual machine.
End_PM_App May only be sent by the virtual MS-DOS manager.

The system never uses message numbers in the range BEGIN_RESERVED_PRIVATE_SYSTEM_CONTROL through END_RESERVED_PRIVATE_SYSTEM_CONTROL, which remain free for use by virtual devices. Microsoft has not defined a protocol for virtual devices to reserve regions of the private system control message space and thus avoid accidentally colliding.

Virtual devices must send and reply to messages correctly to prevent erratic system behavior.

This service uses the ECX register, therefore the register cannot be used to pass data through to the virtual device receiving the control message.