| 38 | thread_local exception_data data; |
| 39 | |
| 40 | inline bool PER_IS_MSVC_EH(PEXCEPTION_RECORD p) noexcept { |
| 41 | const DWORD EH_EXCEPTION_NUMBER = 0xE06D7363; |
| 42 | const ULONG_PTR EH_MAGIC_NUMBER1 = 0x19930520; |
| 43 | |
| 44 | return p->ExceptionCode == EH_EXCEPTION_NUMBER && |
| 45 | (p->NumberParameters == 3 || p->NumberParameters == 4) && |
| 46 | p->ExceptionInformation[0] == EH_MAGIC_NUMBER1; |
| 47 | } |
| 48 | |
| 49 | inline ULONG_PTR PER_PEXCEPTOBJ(PEXCEPTION_RECORD p) noexcept { |
| 50 | return p->ExceptionInformation[1]; |