2010-12-10 6 views
0


"ReadProcessMemory"를 사용하지 않고 다른 프로세스 메모리를 C++/Windows에서 프로세스 메모리의 일부로 읽는 방법이 있습니까?2 개의 공간 메모리 통합하기

"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

두 프로세스에서 동일한 파일을 매핑하면 디스크 파일은 단순히 스왑 공간으로 사용되지만 메모리는 직접 공유됩니다. 명시 적 읽기 또는 쓰기 시스템 호출없이 실시간으로 업데이트됩니다. –