Exceptions
The hypervisor's intercept redirection mechanism allows a parent partition to intercept processor-generated exceptions in the virtual processors of a child partition. When the intercept message is delivered, the virtual processor will be in a restartable state (that is, the instruction pointer will point to the instruction that generated the exception).
Exception intercepts are checked before multiple exceptions are combined into a double fault or a triple fault. For example, if an exception intercept is installed on the #NP exception and an #NP exception occurs during the delivery of a #GP exception, the #NP exception intercept is triggered. Conversely, if no intercept was installed on the #NP exception, the nested #NP exception is converted into a double fault, which will trigger an intercept on the #DF if such an intercept was installed.
Note that exception intercepts do not occur for software-generated interrupts (that is, through the instructions INT, INTO, INT 3, and ICEBKPT).
The order in which exceptions are detected and reported by the processor depends on the instruction. For example, many instructions can generate multiple exceptions and the order in which these exceptions are detected is well-defined.
The way in which exception intercepts interact with other intercept types also depends on the instruction. For example, an IN instruction might generate a #GP exception intercept before an I/O port intercept, and a RDMSR instruction might generate an MSR intercept before a #GP exception intercept. For more information about the order of intercept delivery, consult the documentation for Intel's and AMD's processor virtualization extensions.
The following pseudo-code shows what occurs when an exception occurs.
if an intercept has been set for the exception { Suspend VP and send message to parent (Exception Intercept) } else { Exception is generated normally }
Send comments about this topic to Microsoft
Build date: 11/16/2013