Проверка того, сколько памяти доступно для чтения в другом процессе

Есть ли способ узнать, сколько памяти я могу прочитать из другого процесса, используя ReadProcessMemory?
Если я попытаюсь прочитать слишком много памяти с определенного адреса, он вернет код ошибки 299 и будет считано 0 байт.
Я предполагаю, что это потому, что я пытаюсь читать за пределами выделенного буфера процесса.


person Idov    schedule 01.10.2011    source источник
comment
См. stackoverflow.com/q/5571995/225757. Короче говоря, вы хотите использовать VirtualQueryEx, чтобы узнать об областях памяти, а затем прочитать их по отдельности.   -  person Roland Illig    schedule 01.10.2011
comment
Это может быть неактуально, но я написал программу для чтения одного байта из каждой зафиксированной страницы процесса и этот вопрос содержит основной алгоритм.   -  person Kerrek SB    schedule 01.10.2011


Ответы (1)


Насколько я знаю, единственный способ - попытаться прочитать его. ReadProcessMemory вернет 0, если блок памяти, который вы хотите прочитать, не полностью доступен в процессе, например, его часть не выделена.

Использование меньшего nSize(1024 или 512 или даже 1) является обходным путем.

person CTQY    schedule 05.12.2011