|
snapshot은 안써도 되는건지?
꼭 써야합니까?
새더군 님이 쓰신 글 :
: 안녕하세요
:
: 다른 프로세스의 메모리 읽어 오는 부분과 쓰레드는 별 상관이 없습니다.
: 쓰레드는 원래 CPU 스케쥴링의 문제이니깐요..
:
: Snapshot 은 말 그대로 현재 내 컴퓨터에서 돌아가는 쓰레드, 프로세스, 메모리 영역의
: 스냅샷을 찍는것을 말합니다.
: 즉, 현재 돌아가고 있는 프로세스들과 그 프로세스에서 사용하는 쓰레드들, 불러들인
: 모듈의 어드레스 등등을 모두 담고 있는것이죠.
: CreateToolhelp32Snapshot 라는 펑션을 참조해 보세요
: 그 스냅샷을 만들어주는 펑션입니다.
:
: 그리고 프로그램의 전체 흐름은 틀리지 않습니다.
:
:
: : 1. 캡션으로 해당 pg 핸들을 찾는다
: : HWND handle = FindWindow(0,"계산기");
: : 2. 해당 pg의 프로세스 ID를 얻는다.
: : GetWindowThreadProcessId(handle, &processID );
: : 3. 프로세스 오픈
: : processHandle = OpenProcess(PROCESS_ALL_ACCESS,FALSE,processID);
:
: 프로세스의 사이즈를 파악한다기보다.
: 현재 OS 에서 어플리케이션이 사용할수 있는(사용자가 직접 손댈수 있는) 메모리 영역의
: 최소값과 최대값을 가져오고 있는것이죠
:
: : 4. pg 싸이즈를 파악한다.
: : GetSystemInfo(&sysInfo);
: : baddr = sysInfo.lpMinimumApplicationAddress;
: : memset(&mbi,0,sizeof(MEMORY_BASIC_INFORMATION));
: : VirtualQueryEx(processHandle,badd....)
: : memoryStart=sysInfo.lpMinimumApplicationAddress ;
: : memorySize=sysInfo.lpMaximumApplicationAddress ;
: : 5. for문으로 해당 pg에서 원하는 부분을 찾는다.
: : ReadProcessMemory(processHandle,(void *)i,(LPVOID)&v,4,&size);
: : 6. close 핸들
:
: 그럼 좋은 하루 되세요..
|