반응형 IT창고/System18 다른 프로세스에 접근한여 메모리 값 가져오는 소스 #include #include #include void main() { DWORD pid = 4632;//목적 프로세스의 ID void * pAddr=(void *)0x0012FE80;//목적 주소. HANDLEhProcess=OpenProcess(PROCESS_ALL_ACCESS, 0 , pid); while(1) { getch(); printf("읽어온 주소 : %p\n",pAddr); //다른 프로세스(hProcess)의 메모리(pAddr)을 읽어 온다. char buf[256]={0}; DWORD len; ReadProcessMemory(hProcess, pAddr, buf, 256, &len); printf("읽어온 data : %s\n",buf); } } 2007. 1. 22. 스레드 풀링/이벤트(스레드 감시) /*#include #include DWORD WINAPI foo(void *p) { DWORD pid=(DWORD)p; HANDLEhProcess=OpenProcess(PROCESS_ALL_ACCESS, 0 ,pid); if(hProcess == 0) { printf("Can't Get Process Handle...\n"); return 0; } HANDLEhEvent =OpenEvent(EVENT_ALL_ACCESS,0,"EXIT_EVENT"); HANDLEh[2]={hProcess,hEvent}; DWORD ret =WaitForMultipleObjects(2,h,FALSE,//둘중에 하나만 시그널 되면 INFINITE); if(ret == WAIT_OBJECT_0) { printf("\n___%.. 2007. 1. 22. 세마포어/뮤텍스/이벤트 // 세마포어/*#include #include void main() { HANDLE hSemaphore=CreateSemaphore(0,//보안 3,//Count초기값 3,//최대카운트 "s");//이름 printf("세마포어를 대기합니다.\n"); WaitForSingleObject(hSemaphore,INFINITE);//++Count printf("세마포어를 획득\n"); MessageBox(0,"Release??","",MB_OK); LONG old; ReleaseSemaphore(hSemaphore,1,&old); CloseHandle(hSemaphore); //리소스 카운팅 //세마포어는 카운트 초기값과 최대카운트가있다. //세마포어는 if(카운트)시그널 이다. //카운트는 WaitForSi.. 2007. 1. 22. 스레드/동기화/비동기/크리티컬섹션/뮤텍스 /* 1. 스레드는 각자의 스택을 가진다. 2. 멀티스레드 환경에서 지역변수는 안전하다.-어떤것을 얼마나 사용하던 상관이 없다. 3. 멀티 스레드 환경에서 전역(static 지역) 변수는 불안하다. 반드시 동기화 해야한다. CriticalSection, Mutex, Semaphore, Event 등의 기범을 사용해야한다. - CriticalSection 구역에는 반드시 하나의 스레드만 존재한다. - 상호 배제 구역을 들어가기 전에 Enter() 나가면 Leave()먼저 온것이 들어가면 나중에 온것은 먼저 온것이 나갈때까지 기다려야한다.- 독점 하지만 먼조 온 스레드가 나가더라도 다시 실행하려고 하면 두 스레드는 다시 경쟁상태에 놓이게 된다. */ /* #include #include void Delay(.. 2007. 1. 22. 이전 1 2 3 4 5 다음 반응형