#pragma once #include #include #include class windows_emulator; void dispatch_exception(windows_emulator& win_emu, DWORD status, const std::vector::ULONG_PTR>& parameters); template requires(std::is_integral_v && !std::is_same_v) void dispatch_exception(windows_emulator& win_emu, const T status, const std::vector::ULONG_PTR>& parameters) { dispatch_exception(win_emu, static_cast(status), parameters); } void dispatch_access_violation(windows_emulator& win_emu, uint64_t address, memory_operation operation); void dispatch_guard_page_violation(windows_emulator& win_emu, uint64_t address, memory_operation operation); void dispatch_illegal_instruction_violation(windows_emulator& win_emu); void dispatch_integer_division_by_zero(windows_emulator& win_emu); void dispatch_single_step(windows_emulator& win_emu); void dispatch_breakpoint(windows_emulator& win_emu);