include vmm.inc mov esi, OFFSET32 EventCallback ; points to callback procedure mov edx, OFFSET32 RefData ; points to reference data VMMcall Schedule_Global_Event mov [Event], esi ; event handle |
The Schedule_Global_Event service schedules a global event, which is an event that does not require a specific virtual machine to process it. The system calls the event callback procedure immediately before the returning from the current interrupt. Since any virtual machine can process the event, the system does not switch tasks before calling the procedure.
This is an asynchronous service.
EventCallback
Points to the callback procedure. 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.
The ESI register contains the event handle. The handle can be used in a subsequent call to the Cancel_Global_Event service to cancel the event.
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.