| 2453 | _IRQL_requires_same_ |
| 2454 | _IRQL_requires_min_(DISPATCH_LEVEL) |
| 2455 | static VMM_STATUS VmxRelatedHandler(__inout PRIVATE_VM_DATA* Private, __inout GUEST_CONTEXT* Context, unsigned long long Rip, __inout_opt bool& RepeatInstruction) |
| 2456 | { |
| 2457 | UNREFERENCED_PARAMETER(Private); |
| 2458 | UNREFERENCED_PARAMETER(Context); |
| 2459 | UNREFERENCED_PARAMETER(Rip); |
| 2460 | UNREFERENCED_PARAMETER(RepeatInstruction); |
| 2461 | |
| 2462 | RFLAGS Rflags = {}; |
| 2463 | Rflags.Value = vmread(VMX::VMCS_FIELD_GUEST_RFLAGS); |
| 2464 | Rflags.Bitmap.Eflags.Bitmap.CF = TRUE; |
| 2465 | __vmx_vmwrite(VMX::VMCS_FIELD_GUEST_RFLAGS, Rflags.Value); |
| 2466 | |
| 2467 | return VMM_STATUS::VMM_CONTINUE; |
| 2468 | } |
| 2469 | |
| 2470 | // It is large enough to contain all possible handlers (the last handler has number 68 (EXIT_REASON_TPAUSE)): |
| 2471 | static FnVmexitHandler HandlersTable[72] = {}; |