Записать в буфер памяти и проверить, заполнен ли он с исключением SEH на платформе Win32? - PullRequest
1 голос
/ 01 марта 2020

Можно ли выделить буфер памяти размером около 64 КБ с помощью Win32 API и иметь некую «охранную зону» (я не знаю правильный термин для этого) после этого буфера, чтобы код C ++ записывал в буфер и выдать исключение SEH, если буфер заполнен и он пытается выполнить запись в «охранную зону»?

1 Ответ

1 голос
/ 01 марта 2020

Да. Используйте VirtualAlloc. С VirutalProtect, используемым совместно, вы можете даже сделать эту защитную зону только размером страницы памяти (4096 байт, а не целых 64 КБ).

Обратите внимание, что для стека он обрабатывается ОС, вы можете управлять этим только SetThreadStackGuarantee для установки количества буфера до переполнения стека и _resetstkoflw для исправления (восстановления) защиты после исключения переполнения стека.

...