include vpicd.inc mov eax, IRQHand ; IRQ handle mov ebx, VM ; current VM handle VxDcall VPICD_Set_Int_Request |
The VPICD_Set_Int_Request service sets a virtual interrupt request for the specified IRQ and virtual machine. Setting the request causes the system to simulate an interrupt. Although the simulation may occur immediately, in many cases it may not until a later point in time.
IRQHand
Specifies the handle identifying the IRQ to set.
VM
Specifies the handle identifying the virtual machine.
This service has no return value.
The interrupt is not simulated immediately if any of the following conditions are present:
The virtual machine has interrupts disabled
The virtual machine has masked the IRQ
A higher priority virtual IRQ is in service
The virtual machine is suspended, or not able to run
However, since the interrupt may be simulated immediately, a virtual device that has a virtual interrupt handler must be able to handle a call to the handler before this service returns.
Setting an interrupt request does not guarantee that the interrupt will be simulated. For example, if the VM has masked the interrupt and never unmasks it, the interrupt is never simulated. Also, a call to the VPICD_Clear_Int_Request service made before the virtual interrupt is simulated prevents the interrupt simulation.
The virtual VPIC device simulates a level-triggered PIC. This means that once a virtual EOI occurs, another interrupt will be simulated immediately unless the virtual interrupt request is cleared.
Flags