Call_VM_Event

include vmm.inc

mov ebx, VM ; VM handle

mov esi, OFFSET32 EventCallback ; points to callback procedure

mov edx, OFFSET32 RefData ; points to reference data

VMMcall Call_VM_Event

mov [Event], esi ; event handle or zero if not scheduled


The Call_VM_Event service either calls the event callback procedure immediately, or schedules an event for the specified virtual machine. This service schedules the event if the virtual device is processing a hardware interrupt that interrupted the VMM, or the current virtual machine is not the specified virtual machine. In all other cases, the service calls the callback procedure and returns without scheduling an event.

Parameters

VM

Specifies a handle identifying the virtual machine to process the event.

EventCallback

Points to the callback procedure to install. For more information about the callback procedure, see the following “Comments” section.

RefData

Points to reference data to be passed to the event callback procedure.

Return Value

The ESI register is zero if the service calls the callback procedure. Otherwise, the ESI register contains the event handle. The event handle can be used in subsequent calls to the Cancel_VM_Event service to cancel the event.

This is an asynchronous service.

Comments

Since the specified virtual machine must process the event, the system carries out a task switch if necessary before calling the procedure. The callback procedure can carry out any actions and use any VMM services. The system calls the event callback procedure as follows:

mov ebx, VM ; current VM handle

mov edx, OFFSET32 RefData ; points to reference data

mov ebp, OFFSET32 crs ; points to a Client_Reg_Struc

call [EventCallback]

The VM parameter is a handle identifying the current virtual machine, the RefData parameter points to reference data supplied by the virtual machine that scheduled the event, and the crs parameter points to a Client_Reg_Struc structure containing the contents of the virtual machine's registers.

The callback procedure can modify the EAX, EBX, ECX, EDX, ESI, and EDI registers.

Uses

Flags

See Also

Cancel_VM_Event, Schedule_VM_Event