2010-12-10 5 views
0


Есть ли способ прочитать другую память процесса, как если бы ее память была частью моей памяти процессов в C++/Windows (без использования «ReadProcessMemory»)?Unifying 2 space memories

Как насчет «CreateRemoteThread»? Я хочу иметь возможность читать память другого процесса, но не только в моем удаленном потоке и из самого моего приложения. это сделает эту работу?

+0

Что случилось с ReadProcessMemory? – Puppy

+0

Я ищу более быстрый способ ... – Idov

ответ

1

MSDN has a sample that explains how to use CreateFileMapping to share memory between two processes.

В принципе, вы создаете отображение файлов с явным именем, используя файл подкачки в качестве резервного хранилища, а затем открыть этот файл карту во втором процессе с тем же именем. Чтобы сопоставить один и тот же адрес в обоих процессах, вам необходимо передать ранее согласованный диапазон памяти и передать это значение MapViewOfFileEx. Имейте в виду, что вы не можете гарантировать, что какой-либо адрес памяти не используется между двумя процессами в целом, поэтому вы можете не захотеть основывать свой дизайн на том же адресе между двумя процессами.

1

Одна вещь, которую вы, возможно, захотите попробовать, - создать временный файл и затем сопоставить файл с обоих процессов. Это должно дать вам общие страницы памяти.

+0

Собственно, создавая файл? но мне нужно, чтобы он обновлялся в реальном времени ... – Idov

+0

Если вы сопоставляете один и тот же файл с обоими процессами, память напрямую разделяется, а файл диска просто используется для подкачки. Он обновляется в режиме реального времени без явных системных вызовов чтения или записи. –

Смежные вопросы