, что бы засунуть обработчик не пойманных исключений внутрь класса.
Пример использования:
C++:
Код:
class
MyExceptionFilter
:
public
ExceptionFilter
{
protected
:
long
filter
(
_EXCEPTION_POINTERS
*
ep
)
noexcept
override
{
// handle exception
return
0
;
// EXCEPTION_CONTINUE_SEARCH
}
}
;
Цитата:
Сообщение от Спойлер
Данный класс добавляет хуки на основе исключений. Такие хуки можно поставить туда, куда не впихиваются другие. Минус таких хуков - они очень медленно выполняются.
header:
Код:
#pragma once
#include "ExceptionFilter.h"
#include
#include
#include
class
SilentHooks
:
public
ExceptionFilter
{
#ifdef _WIN64
static
constexpr
auto
kMaxOpcodeLength
=
20
;
#else
static
constexpr
auto
kMaxOpcodeLength
=
10
;
#endif
std
::
map
>
>
hooks_
;
public
:
void
addHook
(
size_t addr
,
const
std
::
function
&
callback
)
noexcept
;
void
removeHook
(
size_t addr
)
noexcept
;
bool
reenableHook
(
size_t addr
)
const
noexcept
;
static
void
changerRetAddr
(
_EXCEPTION_POINTERS
*
ep
,
size_t addr
)
noexcept
;
protected
:
long
filter
(
_EXCEPTION_POINTERS
*
ep
)
noexcept
override
;
}
;