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

Method HandleExecuteRead

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

Source from the content-addressed store, hash-verified

1380 }
1381
1382 bool HandleExecuteRead(unsigned long long Pa, const void* NextInstruction)
1383 {
1384 unsigned long long Pa4Kb = ALIGN_DOWN_BY(Pa, PageSize);
1385 auto Handler = m_Handlers.find(Pa4Kb);
1386 if (Handler == m_Handlers.end())
1387 {
1388 return false;
1389 }
1390
1391 auto& HandlerEntry = Handler->second;
1392 if (!HandlerEntry.Handlers.OnExecuteRead.Value)
1393 {
1394 return false;
1395 }
1396
1397 auto* Pte = HandlerEntry.Pte;
1398
1399 m_PendingHandler.Rip = NextInstruction;
1400 m_PendingHandler.Pte = Pte;
1401 m_PendingHandler.PendingPrevEntry = *Pte;
1402
1403 *Pte = HandlerEntry.Handlers.OnExecuteRead;
1404 invept();
1405
1406 return true;
1407 }
1408
1409 bool HandleExecuteWrite(unsigned long long Pa, const void* NextInstruction)
1410 {

Callers 1

EptViolationHandlerFunction · 0.80

Calls 1

endMethod · 0.80

Tested by

no test coverage detected