| 1358 | } |
| 1359 | |
| 1360 | bool HandleExecute(unsigned long long Pa) |
| 1361 | { |
| 1362 | unsigned long long Pa4Kb = ALIGN_DOWN_BY(Pa, PageSize); |
| 1363 | auto Handler = m_Handlers.find(Pa4Kb); |
| 1364 | if (Handler == m_Handlers.end()) |
| 1365 | { |
| 1366 | return false; |
| 1367 | } |
| 1368 | |
| 1369 | auto& Entry = Handler->second; |
| 1370 | auto PteEntry = Entry.Handlers.OnExecute; |
| 1371 | if (!PteEntry.Value) |
| 1372 | { |
| 1373 | return false; |
| 1374 | } |
| 1375 | |
| 1376 | *Entry.Pte = PteEntry; |
| 1377 | invept(); |
| 1378 | |
| 1379 | return true; |
| 1380 | } |
| 1381 | |
| 1382 | bool HandleExecuteRead(unsigned long long Pa, const void* NextInstruction) |
| 1383 | { |
no test coverage detected