본문 바로가기
반응형

IT창고/System18

프로세스가 죽으면 다시 살림 /* 1. EProcess 의 포인터가 Process Enviroment Block을 가리키고 있다. PEB(Process Enviroment Block)에는 현재 디렉토리, 환경변수,command line argument을 가지고 있다. 2. Eprocess에는 프로세스 ID를 가지고 있다. */ #include #include /* void main() { //현재 프로세스의 ID얻기 -> EPROCESS 에서 꺼내오는 함수. DWORD pid = GetCurrentProcessId(); printf("프로세스 ID : %d\n",pid); //현재 디렉토리 얻기, char dir[MAX_PATH]; GetCurrentDirectory(MAX_PATH, dir); printf("현재 디렉토리 : %s.. 2007. 1. 22.
핸들값을 다른 프로세스에 복사해주기 /* 1. 윈도우를 만들때 시스템 입장에서는 메모리에 잡힌 윈도우 구조체이다. 2. 펜이 필요해 만들때에도 팬은 시스템 입장에서는 하나의 구조체이다. 3. 파일을 읽거나 쓸때에도 하나의 구조체이다. 윈도우와 관련된 객채를 User Object이다. - 핸들이 전형적이다. 펜과 같이 그래픽관련 객체를 GDI Object이다. -핸들이 지역적이다. 파일과 같이 시스템적으로 관련된 객체를 Kernel Object라 한다. -한정적 핸들 or 상대적 핸들 1. OS가 만드는3가지 객체의 종류 ↑ 2. 핸들의 특징 ↑ 3. 모든 커널객체의 공통적인 특징 (KO - Kernel Object) 1. 보안이라는 속성을 갖는다. 2. 시그널이라는 속성을 같는다. 3. 참조개수가 있다. 4. 이름이 있다. 5. 소유자는 .. 2007. 1. 22.
이미 실행중인 응용프로그램이면 실행안되게 /* 1. 실행가능한 파일을 프로그램이라한다. 2. 프로그램이 하나 실행되면 하나의 프로세스가 된다. 같은 프로그램이라도 2번실행되면 프로세스는 2개가 된다. 3. 프로세서는 CPU를 말한다. 4. 프로세스 하나당 쓰레드 하나가 생성된다. 5. 에러 전역변수는 프로세스당 하나라서 스레드가 2개일때 하나의 스레드가 처리하기 전에 다른 스레드가 에러를 발생하면 먼저 에러를 발생한 스레드의 에러는 알수가 없다. 6. 그레서 스레드당 하나의 에러전역변수를 지원해주는것이 있다. GetLastError(); 7. 브레이크 포인트(F9)하고 서치창에 @err과 @err,hr를 넣으면 에러를 알수 있다. 8. 성공시에도 GetLastError호출할때가 있다. */ #include #include #include //함.. 2007. 1. 22.
스레드/프로그레스바/스레드 실행동안 다른작업도 가능하도록 #include #include #include LRESULT CALLBACK WndProc(HWND hwnd,UINT iMessage,WPARAM wParam,LPARAM lParam); //윈도우 환경에서의 스레드 함수의모양 - 외우세요 DWORD WINAPI foo(void *p) { HWND hPrg=(HWND)p; //WM_LBUTTONDOWN의 복사 { for(int i = 0 ; i < 1000; ++i) { SendMessage(hPrg, PBM_SETPOS,i,0); //프로세스 전진 Sleep(20); } } return 0; } TCHAR lpszClass[] = TEXT("first"); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPr.. 2007. 1. 22.
반응형