logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

API로 배우는 Windows 구조와 원리

API로 배우는 Windows 구조와 원리

야스무로 히로카즈 (지은이), 김용준 (옮긴이)
한빛미디어
16,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
알라딘 로딩중
yes24 로딩중
교보문고 로딩중
11st 로딩중
영풍문고 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
G마켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
서점 유형 등록개수 최저가 구매하기
로딩중

eBook

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
로딩중

책 이미지

API로 배우는 Windows 구조와 원리
eBook 미리보기

책 정보

· 제목 : API로 배우는 Windows 구조와 원리 
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 윈도우 프로그래밍
· ISBN : 9788979143010
· 쪽수 : 360쪽
· 출판일 : 2004-10-23

책 소개

Windows API(Application Programming Interface)라고 하는 '창구'를 통해서 Windows의 작동 구조를 이해할 수 있도록 도와준다. Windows 애플리케이션의 구조, 파일 접근의 원리와 제어, 메모리 관리의 구조, 디바이스 드라이버의 구조와 작성 방법 등 그동안 너무나 궁금했던 내부 동작원리를 배울 수 있으며, 배운 내용을 토대로 실무에 활용할 수 있다.

목차

저자 서문
역자 서문
이 책의 주요 내용
목차

1부. 운영체제의 구조를 배우자
1장. 운영체제의 동작 철저 이해
운영체제는 애플리케이션의 요청을 '조정(調停)'한다
운영체제는 높은 특권레벨에서 작동한다
각 세그먼트의 속성은 디스크립터 테이블에 설정한다
I/O 특권레벨을 설정해서 I/O 접근을 제한한다
콜게이트와 소프트웨어 인터럽트로 커널모드로 들어간다
Windows에서의 API 호출 처리 순서
Linux에서의 시스템 호출 처리 순서
Windows 애플리케이션이 시작할 때까지

2장. 운영체제의 3대 기능
01. 프로세스/스레드 관리
02. 메모리 관리
03. 파일 관리

3장. 사용자 입력 구조
인터럽트를 사용해서 이벤트 발생을 알려준다
우선순위가 낮은 인터럽트는 보류한다
윈도우 메시지로 애플리케이션에 통지한다
큐를 2단으로 구성해서 메시지를 놓치는 것을 막는다
메시지 루프로 큐에서 메시지를 꺼낸다

2부. API로 배우는 Windows의 구조
4장. Windows 애플리케이션의 구조
Windows 애플리케이션은 이벤트 반응형이다
메시지를 사용해 이벤트를 통지한다
윈도우 프로시저로 메시지를 처리한다
WinMain 함수에서 실행을 시작한다
윈도우 클래스를 등록해 윈도우를 생성한다
메시지 루프로 메시지를 하나씩 꺼낸다
메시지의 대부분은 DefWindowProc에 처리를 맡긴다

5장. 윈도우
윈도우는 Windows가 관리하는 객체다
윈도우 스타일로 윈도우의 구성요소를 지정한다
윈도우 스타일로 윈도우의 종류를 지정한다
부모 윈도우는 자식 윈도우의 디스플레이
윈도우 간 소유 관계를 설정한다
컨트롤 ID로 자식 윈도우를 식별한다
SetWindowPos API로 Z 순서를 지정한다

6장. 윈도우 메시지
메시지 하나는 단시간에 처리한다
장시간을 필요로 하는 처리는 분할해서 실행한다
PeekMessage API를 사용해 공전 시간에 처리한다
독자적인 메시지를 정의한다
PostMessage를 사용해 큐를 경유하는 메시지를 보낸다
메시지 전달인자에 포인터를 넘긴다

7장. Windows 콘솔 사용
Windows에도 콘솔 환경이 있다
표준 입출력을 사용한다
콘솔 프로그램과 GUI 프로그램의 차이는 작다
GUI 프로그램에서도 콘솔을 이용할 수 있다
콘솔 API를 사용해 본다
저수준 API에서는 마우스 입력도 다룰 수 있다

8장. 파일 접근 제어
파일을 손쉽게 다룰 수 있게 해주는 파일시스템
라이브러리 함수에서는 텍스트 모드에 주의한다
CreateFile API로 파일을 연다
여러 프로그램으로부터의 동시 접근을 제어한다
데이터의 읽고 쓰기는 버퍼링된다
파일의 특정 위치에서 읽기/쓰기를 한다
마무리는 잊기 쉽지만 중요하다

9장. Windows의 메모리 관리
페이징으로 가상 기억장치를 구현한다
페이징으로 실제 메모리 페이지를 자유롭게 배치한다
다른 프로그램의 메모리에는 접근할 수 없다
VirtualAlloc은 가상 주소의 페이지 상태를 변경한다
힙으로부터 필요한 크기만 할당한다

10장. Windows의 프로세스와 스레드
프로그램을 전환해서 멀티태스킹을 구현한다
멀티스레드는 프로그램 내에서의 멀티태스크
CreateProcess API로 프로세스를 시작한다
WaitForSingleObject API로 프로세스의 종료를 기다린다
CreateThread API로 스레드를 생성한다
라이브러리 함수를 사용할 경우에는 _beginthreadex를 이용한다

11장. 스레드 간 동기화
동기화란 무엇인가
동기화에는 시스템 지원이 필요하다
동일 프로세스 내의 스레드 간에 배타적 제어를 하는 크리티컬 섹션
프로세스 간에도 동기화 객체를 사용한다
프로세스 간의 배타적 제어에는 뮤텍스를 사용한다
유한 개의 리소스 관리에는 세마포어를 사용한다
이벤트를 사용해서 다른 스레드에 통지한다

12장. DLL의 작동 원리
DLL이란 무엇인가
DllMain 함수에서 초기화 처리를 한다
함수를 익스포트한다
DLL을 프로그램에서 이용한다
DLL을 실행 시에 로드해 링크한다
DLL에 리소스를 저장해서 다국어를 지원한다

13장. 프로세스 간 데이터 공유
프로세스에는 각각의 가상 주소 공간이 있다
파일 매핑이란 무엇인가
뷰를 만들어 가상 주소 공간에 매핑한다
페이지 파일을 매핑해서 공유 메모리를 만든다
WM_COPYDATA 메시지로 간단하게 데이터를 주고받는다

14장. 실행 파일의 구조
tdump로 실행 파일의 내용을 들여다본다
더미 MS-DOS 프로그램 뒤쪽에 Windows 프로그램이 있다
Windows에서는 옵션 헤더를 참조해서 실행 환경을 설정한다
실행 파일은 섹션 단위로 로드된다
TLS나 리소스는 코드나 데이터와는 다른 섹션에 저장된다
이미지 베이스를 변경할 때는 재배치를 한다
익스포트 정보를 저장하는 .edata 섹션
임포트 정보를 저장하는 idata 섹션

15장. Windows의 접근 제어 구조
왜 보안이 중요한가
파일이나 레지스트리도 객체로 접근 제어를 한다
사용자/그룹 단위로 접근 권한을 설정한다
보안 디스크립터를 객체 생성 시에 지정한다
프로세스의 접근 토큰을 체크한다
명시적으로 보안 디스크립터를 지정한다

16장. 서비스 생성
서비스란 특정 규칙에 따라 만들어진 콘솔 프로그램이다
SCM이 서비스 실행을 제어한다
서비스는 전용 사용자 계정에서 실행된다
main 함수에서 서비스 진입점 등록
실질적인 처리는 ServiceMain 함수에서 한다
제어 핸들러로 SCM에서 송신하는 제어 코드에 응답한다
서비스를 설치/제거한다
프로그램에서 서비스를 제어한다

17장. 프로세스 간 통신을 통한 데이터 교환
파이프는 프로세스 간 데이터 통로다
이름있는 파이프는 같은 이름으로 얼마든지 만들 수 있다
파이프는 파일과 똑같이 읽고 쓸 수 있다
클라이언트에서 파이프에 접속한다
이름없는 파이프의 핸들은 상속해서 사용한다
클립보드는 데이터의 일시적인 보관 장소다
소유권을 획득하고 나서 데이터를 설정한다
설정된 객체의 소유권은 시스템으로 이전된다
지연 렌더링으로 필요에 따라 데이터를 설정한다

18장. 디버거의 구조
디버거의 기본은 중단점이다
디버거의 커널모드 부분을 Windows와 결합한다
디버그 이벤트를 보내서 디버거에 통지한다
디버거의 자식 프로세스로 디버그 대상 프로세스를 시작한다
WaitForDebugEvent로 이벤트를 받는다
디버그 대상 프로세스의 메모리에 접근한다
예외 발생 시에 디버거를 시작한다

19장. 유니코드와 다국어 지원
컴퓨터로 처리하기 위해 문자에 코드를 할당한다
온 세상의 문자를 문자 집합 하나로 정리한다
기존 시스템과 호환성이 높은 UTF-8
CJK 문자를 동시에 표현할 수 없는 경우가 있다
Win32 API에는 ANSI판과 유니코드판이 있다
일반형을 사용해 프로그램을 작성한다
메시지로 주고받는 문자열은 자동으로 변환된다

20장. 폰트
폰트는 자형(字形) 데이터베이스다
논리 폰트를 물리 폰트에 매핑한다
페널티를 계산해서 최적 폰트를 선택한다
문자열 그리기 전용 API를 사용한다
문자 코드에 맞추어 폰트의 문자 집합을 설정한다
유니코드의 문자 코드 범위에서 출력할 수 있는 폰트를 검색한다

21장. 구조화 예외 처리 매커니즘
VC++의 독자적인 키워드를 사용해서 SEH를 이용한다
콜백 함수의 주소를 TIB로 설정한다
어셈블리 언어를 사용해 예외 핸들러를 등록한다
레지스터 세 개를 수정해서 예외 발생 시의 실행 재시작 위치를 변경한다
언와인드를 위해 한 번 더 콜백 함수를 호출한다
미처리 예외를 처리하는 순서는 디버거의 유무에 따라 다르다

22장. 비동기 I/O 처리를 이용한 파일 접근
디스크 접근 대기 시간을 유효하게 사용한다
이벤트 객체를 사용해서 처리 완료를 통지한다
PeekOverlappedResult API로 처리 결과를 얻어온다
동기 I/O와 비동기 I/O는 섞어서 사용할 수 없다
비동기 I/O 전용 API를 이용한다
경계 가능 상태를 위해서는 'Ex'가 붙은 대기용 API를 이용한다

23장. 디바이스 드라이버와 플러그 앤 플레이의 구조
디바이스 드라이버가 하드웨어의 차이를 흡수한다
WDM 드라이버는 Windows 2000/98 모두에서 사용할 수 있다
기능 드라이버가 버스 드라이버를 통하여 장치를 제어한다
필터 드라이버를 생성해서 운영체제의 기능을 확장한다
버스에 접속된 장치를 열거한다
INF 파일을 참조해서 드라이버를 설치한다
전원 관리에는 WDM 드라이버 지원이 필요하다

24장. 디바이스 드라이버 제작 도전
키 배치를 바꾸는 필터 드라이버를 제작한다
키 배치를 바꾸려면 함수가 7개 필요하다
DriverEntry 함수에서 각종 핸들러를 등록한다
AddDeviceHandler 함수로 장치 객체를 생성/추가한다
DefaultHandler 함수로 드라이버 간 통신을 한다
전원 관리와 PnP에는 전용 함수를 사용한다
키 배치 교체의 핵심 처리는 ReadHandler 함수에서 구현한다
ReadComplete 함수로 데이터 읽기 완료를 통지한다
Build 유틸리티를 이용해 빌드한다
필터 드라이버 설치는 전용 설치기를 준비한다

저자소개

야스무로 히로카즈 (지은이)    정보 더보기
컴퓨터 회사의 소프트웨어 개발부에 소속되어 있으며, C++와 Java를 사용해서 각종 플랫폼용 애플리케이션을 개발하고 있다.
펼치기
김용준 (지은이)    정보 더보기
1995년 첫 직장이었던 대기업 IT연구소 면접에서 "게임만들고 싶다"고 얘기해서 임원진들을 놀래킨 똘끼충만 사회초년병에서 어느덧 대학교수, 대표이사, 공무원 생활을 두루 거친 후 다시 행복한 개발자로 돌아온 이단아. 저서로는 일명 해골책 <3D게임 프로그래밍>(한빛미디어), <나는 프로그래머다>(한빛미디어), <좋은 게임을 만드는 핵심원리>(한빛미디어)가 있다.
펼치기

책속에서

시스템의 메모리가 모두 사용중이라도 짧은 시간 동안에 보면 그렇지 않다. 쓰이지 않는 데이터는 메모리에 있을 필요가 없다. 그러므로 이 데이터를 일시적으로 하드디스크에 보존하고, 그 메모리를 다른 용도로 사용하도록 돌려주자는 것이다. 보존된 데이터가 다시 필요하다면 조금 전과 동일하게 다른 메모리를 돌려받은 뒤 데이터를 읽어 들이면 된다. 즉 사용중인 데이터만 메모리에 두고, 그 이외의 데이터는 하드디스크에 보존하는 방법으로, 보이는 메모리를 늘리는 것이다. -본문 128p 중에서


예를 들어, 사용자가 윈도우의 우측 상단에 있는 최대화 버튼을 눌렀을 때 Windows에서는 WM_SYSCOMMAND라는 메시지를 보내온다. 이때 표준 Windows 애플리케이션이라면 화면의 크기에 맞추어 윈도우의 위치와 크기를 변경하고, 최대화 버튼을 복원 버튼으로 변경해야 한다. -본문 70p 중에서


이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
이 포스팅은 제휴마케팅이 포함된 광고로 커미션을 지급 받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책