MCPcopy Create free account
hub / github.com/HoShiMin/Kernel-Bridge / HandleExecuteWrite

Method HandleExecuteWrite

Kernel-Bridge/API/Hypervisor.cpp:1409–1434  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1407 }
1408
1409 bool HandleExecuteWrite(unsigned long long Pa, const void* NextInstruction)
1410 {
1411 unsigned long long Pa4Kb = ALIGN_DOWN_BY(Pa, PageSize);
1412 auto Handler = m_Handlers.find(Pa4Kb);
1413 if (Handler == m_Handlers.end())
1414 {
1415 return false;
1416 }
1417
1418 auto& HandlerEntry = Handler->second;
1419 if (!HandlerEntry.Handlers.OnExecuteWrite.Value)
1420 {
1421 return false;
1422 }
1423
1424 auto* Pte = HandlerEntry.Pte;
1425
1426 m_PendingHandler.Rip = NextInstruction;
1427 m_PendingHandler.Pte = Pte;
1428 m_PendingHandler.PendingPrevEntry = *Pte;
1429
1430 *Pte = HandlerEntry.Handlers.OnExecuteWrite;
1431 invept();
1432
1433 return true;
1434 }
1435
1436 bool CompletePendingHandler(const void* Rip)
1437 {

Callers 1

EptViolationHandlerFunction · 0.80

Calls 1

endMethod · 0.80

Tested by

no test coverage detected