190702-5 Study 핸들이란 커널 오브젝트에 할당되는 숫자에 지나지 않는다. Windows는 커널 오브젝트를 생성할 때마다 핸들이라는 정수값을 하나씩 부여한다. 커널 오브젝트는 Windows 운영체제에 종속적이다. 도서관의 도서는 도서관에 의해서만 폐기 처분될 수 있다. 커널 오브젝트는 운영체제에 종속저긴 관계로, 여러 프로세스에 의해 접근(함수를통해)이 가능하다. 핸들(테이블)은 프로세스에 종속적이다. 프로세스 핸들은 프로세스의 커널 오브젝트를 가리키기 위한 것 프로세스 ID는 커널 오브젝트가 아니라 프로세스 자체를 구분 짓기 위한 것
190702-4 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. worker 쓰레드 UI 쓰레드 #include #include DWORD __stdcall DrawThread(LPVOID pParam); DWORD __stdcall UIThread(LPVOID pParam); LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam); LRESULT CALLBACK ChildProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam); HINSTANCE g_hInst; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevI..
190702-3 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. #include #include void Sleep() { for(int i = 0 ; i INC n -> Write n (3가지 연산이 결합이 된다.) 원자적인 연산 : 어떤 연산이 수행되는 동안 다른 연산에 의해 방해가되면 안된다. (명령 한줄두줄이 아님) ● 쓰레드 선점당할시 발생하는 문제 #include #include int val=0; DWORD __stdcall ThreadFunc(LPVOID pParam) { printf("ThreadFunc Param : %d 생성\n", GetCurrentThreadId()); for(int i = 0 ; i
190702-2 - 윈도우의 중요한 예제 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. 06커널오브젝트와핸들 핸들테이블을 상속해서 상속한 핸들테이블의 핸들을 가지고 자식이 사용가능하다. child #include #include void main() { HANDLE hParentProcess; DWORD handle; printf("부모에서 생성한 이벤트의 핸들: "); scanf("%d", &handle); HANDLE hEvent = (HANDLE)handle; printf("이벤트 신호 상태 기다림...\n"); DWORD idx = WaitForSingleObject(hEvent, INFINITE); //● 신호상태 까지 INFINITE기다린다. if( idx != WAIT_OB..
190701-2 - 핸들, 동기, 신호/비신호 (1일차) 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. #include #include #include void main() { //const char* s = "Hello!"; // 상수 메모리 문자열 ////s[0] = 'a'; // 변경할 수 업 //printf("%s\n", s); char cur[MAX_PATH]; char sys[MAX_PATH]; char win[MAX_PATH]; // 현재 작업 디렉토리 GetCurrentDirectory(MAX_PATH, cur); //● 작업 디렉토리 : 프로세스는 자기만의 작업디렉토리가 있다. //SetCurrentDirectory("C:\\Temp"); //GetCurrentDirec..
윈도우즈 시스템 프로그래밍에 관련된 내용입니다. 190701-1 - 커널오브젝트, 아스키코드와 유니코드 (1일차) 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. C/C++의 DLL등을 .Net에서 갖다가 그대로 쓸 수 있다. (유명한 C++/C 라이브러리는 C#으로 포팅 되어있다.) 다른 언어를 사용할 때 BCL을 사용해야한다. (이론적으로 모든 언어로 프로그래밍이 가능하다. 그러나 거의다 C#으로 개발함) Win32라이브러리에서 os와 밀접한 부분을 공부한다. 그 부분이 시스템 프로그래밍이다. 여기서는 프로세스와 쓰레드, 핸들 종류, 메모리, DLL(동적 링크 라이브러리), 동기화 객체, +a 등을 중요하게 공부할 것이다. 쓰레드와 동기화 부분은 다른 쪽으로 넘어가도 중요한 부분이 될..