Handle NMI and exception vm-exits.
338{
339
340
341
342
343
344
345
346
347
348 switch (InterruptExit.Vector)
349 {
351
352
353
354
355 {
358
360
362
364 {
366 {
367
368
369
371
372
373
374
376 }
377 }
378 }
379
380 break;
381
383
384
385
386
388 {
389
390
391
393 }
394
395 break;
396
398
399
400
401
403
404 break;
405
407
408
409
410
411
412
417 {
418
419
420
421
422
423 }
425 {
426
427
428
430 }
431
432 break;
433
435
436 if (VCpu->EnableExternalInterruptsOnContinue ||
437 VCpu->EnableExternalInterruptsOnContinueMtf ||
438 VCpu->InstrumentationStepInMtf)
439 {
440
441
442
443 }
444 else
445 {
446
447
448
450 }
451
452 break;
453
454 default:
455
456
457
458
460
461 break;
462 }
463}
BOOLEAN DebuggingCallbackHandleDebugBreakpointException(UINT32 CoreId)
routine callback to handle debug breakpoint exception
Definition Callback.c:252
BOOLEAN DebuggingCallbackHandleBreakpointException(UINT32 CoreId)
routine callback to handle breakpoint exception
Definition Callback.c:231
_Use_decl_annotations_ BOOLEAN SyscallHookHandleUD(VIRTUAL_MACHINE_STATE *VCpu)
Detect whether the UD was because of Syscall or Sysret or not.
Definition EferHook.c:267
BOOLEAN EptCheckAndHandleBreakpoint(VIRTUAL_MACHINE_STATE *VCpu)
Check if the breakpoint vm-exit relates to EPT hook or not.
Definition Ept.c:1317
VOID EventInjectInterruptOrException(_In_ VMEXIT_INTERRUPT_INFORMATION InterruptExit)
re-inject interrupt or exception to the guest
Definition Events.c:155
VOID EventInjectUndefinedOpcode(VIRTUAL_MACHINE_STATE *VCpu)
Inject UD to the guest (Invalid Opcode - Undefined Opcode).
Definition Events.c:79
VOID EventInjectBreakpoint()
Inject BP to the guest (Event Injection).
Definition Events.c:46
VOID HvSuppressRipIncrement(VIRTUAL_MACHINE_STATE *VCpu)
Suppress the incrementation of RIP.
Definition Hv.c:320
VOID IdtEmulationHandlePageFaults(_Inout_ VIRTUAL_MACHINE_STATE *VCpu, _In_ VMEXIT_INTERRUPT_INFORMATION InterruptExit)
Handle Page-fault exception bitmap VM-exits.
Definition IdtEmulation.c:296
BOOLEAN SyscallCallbackCheckAndHandleAfterSyscallTrapFlags(VIRTUAL_MACHINE_STATE *VCpu, UINT32 ProcessId, UINT32 ThreadId)
Handle the trap flags as the result of interception of the return of the system-call.
Definition SyscallCallback.c:285
IMPORT_EXPORT_VMM BOOLEAN MemoryMapperReadMemorySafe(_In_ UINT64 VaAddressToRead, _Inout_ PVOID BufferToSaveMemory, _In_ SIZE_T SizeToRead)