| 20 | size_t _lastEmptyEntryIndex{ 0ull }; |
| 21 | |
| 22 | static bool IsProjectionEntryValid(ULONG build, const ProjectionEntry& entry) |
| 23 | { |
| 24 | if (build == 0) |
| 25 | { |
| 26 | return true; |
| 27 | } |
| 28 | const auto& min_build = std::get<4>(entry); |
| 29 | const auto& max_build = std::get<5>(entry); |
| 30 | if (min_build == 0 && max_build == 0) |
| 31 | { |
| 32 | return true; |
| 33 | } |
| 34 | if (min_build == 0) |
| 35 | { |
| 36 | return build < max_build; |
| 37 | } |
| 38 | if (max_build == 0) |
| 39 | { |
| 40 | return build >= min_build; |
| 41 | } |
| 42 | return build >= min_build && build < max_build; |
| 43 | } |
| 44 | void _Apply(ProjectionEntry& entry, PVOID symbolAddress) |
| 45 | { |
| 46 | [[maybe_unused]] auto& [type, name, from, to, min_build, max_build] = entry; |
nothing calls this directly
no outgoing calls
no test coverage detected