본문 바로가기

[winapi] DC에 대해서...(GetDC / BeginPaint) ### DC (Device Context) ### ** DC란?cairo로 windows에 그림을 그릴때도 Windows DC가 필요하다.때문에 WinAPI의 DC에 대해서 알 필요가 있다. # 기초부터 짚고 넘어가보자Windows는 3개의 DLL(동적 연결 라이브러리)로 구성되어 있다. - KERNEL : 메모리 관리 및 프로그램 실행 - USER : 유저 인터페이스와 윈도우 관리 - GDI : 화면 처리와 그래픽 담당 Windows API 함수 대부분은 이 세가지 DLL에 의해 제공되는 것이다. 즉, Windows의 클라이언트 영역에 그리기를 하려면 이 GDI(Graphics Device Interface) 함수를 사용해야 한다.그리고 HDC는 'Handle to a Device Context' 로 .. 더보기
TRACE 이야기 아래의 링크에 정리가 너무 잘되어 있어 링크만 겁니다. 1. 첫번째 이야기 2. 두번째 이야기 3. 세번째 이야기 4. 네번째 이야기 5. 다섯번째 이야기 6. 여섯번째 이야기 7. 일곱번째 이야기 출처 : http://mgdn.tistory.com 더보기
[MFC] My Thread MFC에서 쓰레드 만들때copy & paste 용도 My ThreadBOOL CUTMModuleDlg::ServiceStart() { // server thread m_ServerThreadKill.ResetEvent(); m_ServerThreadEnd.ResetEvent(); CWinThread* pServerThread = NULL; pServerThread = AfxBeginThread(ServerProc, (LPVOID)this, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); if (pServerThread == NULL) { return FALSE; } else { pServerThread->ResumeThread(); } return TRUE; }void .. 더보기
스레드 수행 시간 측정 (보다 정밀한) ★ 쓰레드 수행 시간 + 시간 측정을 위해 대부분 GetTickCount64 함수를 이용 - 이 코드가 올바른 값을 획득하려면 코드 수행중 인터럽트가 수행되지 않았다는 가정 필요 - 선점형 운영체제에서는 쓰레드가 언제 CPU에 의해 수행될지 알수 없음 - 현재 코드를 수행 중 다른 작업 수행 가능 - 따라서, 쓰레드가 소비한 시간 부정확 - 실제 쓰레드가 부여받은 CPU 시간이 얼마나 되는지 알아내는 함수 필요 - GetThreadTimes / GetProcessTimes 함수 제공 + TSC (Time Stamp Counter) 이용 - 비스타 이전에는 clock timer를 기반으로 10에서 15 밀리초 단위로 CPU 시간 계산 - 비스타 부터 머신이 기동된 후부터 얼마만큼의 CPU 사이클이 수행되었.. 더보기
Process 생성 및 종료 * 프로세스 생성 + CreateProcess 함수를 사용하여 새로운 프로세스 생성 + CreateProcess함수는 새로 생성된 프로세스가 완전히 초기화되기 전에 TRUE 반환 - 운영체제의 로더가 새로운 프로세스가 필요로하는 dll을 로드하기 전에 TRUE를 반환하기 때문에, 페어런트 프로세스는 차일드 프로세스에 어떤 초기화 문제가 발생했는지 알 수 없음 + 새로운 프로세스를 만들면 시스템은 새로운 프로세스 커널 오브젝트와 스레드 커널 오브젝트를 생성 - 커널 오브젝트가 새롭게 생성되면 사용 카운트(usage count) 값이 1로 초기화 - CreateProcess 함수 반환 전, 프로세스 커널 오브젝트와 커널 오브젝트를 최대 접근 권한으로 한번 더 오픈 PROCESS_INFORMATION 구조체 .. 더보기