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

Method HandleWrite

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

Source from the content-addressed store, hash-verified

1331 }
1332
1333 bool HandleWrite(unsigned long long Pa, const void* NextInstruction)
1334 {
1335 unsigned long long Pa4Kb = ALIGN_DOWN_BY(Pa, PageSize);
1336 auto Handler = m_Handlers.find(Pa4Kb);
1337 if (Handler == m_Handlers.end())
1338 {
1339 return false;
1340 }
1341
1342 auto& HandlerEntry = Handler->second;
1343 if (!HandlerEntry.Handlers.OnWrite.Value)
1344 {
1345 return false;
1346 }
1347
1348 auto* Pte = HandlerEntry.Pte;
1349
1350 m_PendingHandler.Rip = NextInstruction;
1351 m_PendingHandler.Pte = Pte;
1352 m_PendingHandler.PendingPrevEntry = *Pte;
1353
1354 *Pte = HandlerEntry.Handlers.OnWrite;
1355 invept();
1356
1357 return true;
1358 }
1359
1360 bool HandleExecute(unsigned long long Pa)
1361 {

Callers 1

EptViolationHandlerFunction · 0.80

Calls 1

endMethod · 0.80

Tested by

no test coverage detected