windows에서 원하는 대상 프로세스의 가상메모리 상태를 알아보는방법..
프로세스 핸들을 알려면 프로세스 ID 값을 알아야 아래와 같이 핸들을 가져올수 있다.
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwProcessId);
typedef struct _MEMORY_BASIC_INFORMATION {
PVOID BaseAddress; //pvAddress 매개변수로 전달한 주소를 페이지 크기 단위로 내림한 값.
PVOID AllocationBase; // pvAddress 매개변수로 전달한 수고를 포함하는 영역의 시작 주소.
DWORD AllocationProtect; // 해당 영역이 최초로 예약될 때 할당된 보호특성.
SIZE_T RegionSize; /* BaseAddress로부터 시작하여 pvAddress 매개변수로 전달한 주소를 포함하는
페이지와 동일한 보호특성, 상태, 페이지 형태를 가진 인접하는 모든 페이지들의 전체 크기를 바이트 단위로 나타낸다.*/
DWORD State; //pvAddress값을 포함하는 RegionSize값과 같은 범위의 페이지 상태를 나타낸다.
DWORD Protect; //pvAddress값을 포함하는 같은 특성을 지닌 인접 페이지들의 보호 특성을 나타낸다.
DWORD Type; //pvAddress값을 포함하는 같은 특성을 지닌 인접 페이지들의 물리저장소 형태를 나타낸다.
} MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;
MEMORY_BASIC_INFORMATION mbi;
VirtualQueryEx(hProcess, pvAddress, &mbi, sizeof(mbi);값을 받아 왔다면..
pvAddress값이 포함되어있는 가상 주소의 시작 주소와 사이즈 등의 값을 알수있다..
ex)
mbi.AllocationBase 값이 pvAddress주소를 포함하는 영역의 시작주소..
mbi.RegionSize 값이 pvAddress주소를 포함하는 영역의 총 사이즈..
'프로그래밍' 카테고리의 다른 글
윈도우즈폰 7 애플리캐이션 아키텍쳐 설명 동영상. (0) | 2011.04.19 |
---|---|
dll과 메모리 맵 파일(memory-mapped file)의 관계. (0) | 2011.03.07 |
가상메모리의 상태를 알아보자! (0) | 2011.03.03 |
운영체제 시스템 정보를 알아보자! (0) | 2011.03.03 |
stl std::remove의 이해와 활용 (0) | 2011.02.18 |
댓글