Показать сообщение отдельно

  #7  
Старый 23.02.2023, 04:07
0Z0SK0
Познающий
Регистрация: 14.02.2023
Сообщений: 41
С нами: 1709244

Репутация: 13
По умолчанию

Цитата:
Сообщение от Scar_  

Я так понимаю что если у тебя какая-то ошибка выскочит или краш на пустом месте и тебе будет нужно искать причину чтобы это исправить. Ты попросту её не найдешь так как runtime-debug -> press F или это будет очень сложно сделать.
Для этого предусмотрены методы safe и nt_safe для LI_FN вызова, и тоже самое для LI_MODULE.

Возвращающие 0 при неправильном выполнении функции, минуя появление undefined behavior.

Цитата:
Сообщение от Спойлер  


https://github.com/JustasMasiulis/lazy_importer/blob/master/include/lazy_importer.hpp:





Код:
struct
safe_module_enumerator
{
using
value_type
=
const
detail
::
win
::
LDR_DATA_TABLE_ENTRY_T
;
value_type
*
value
;
value_type
*
head
;
LAZY_IMPORTER_FORCEINLINE
safe_module_enumerator
(
)
noexcept
:
safe_module_enumerator
(
ldr_data_entry
(
)
)
{
}
LAZY_IMPORTER_FORCEINLINE
safe_module_enumerator
(
const
detail
::
win
::
LDR_DATA_TABLE_ENTRY_T
*
ldr
)
noexcept
:
value
(
ldr
->
load_order_next
(
)
)
,
head
(
value
)
{
}
LAZY_IMPORTER_FORCEINLINE
void
reset
(
)
noexcept
{
value
=
head
->
load_order_next
(
)
;
}
LAZY_IMPORTER_FORCEINLINE
bool
next
(
)
noexcept
{
value
=
value
->
load_order_next
(
)
;
return
value
!=
head
&&
value
->
DllBase
;
}
}
;


 
Ответить с цитированием