디바이스 드라이버 개발은 한 가지만 알아서는 어렵다. C 언어만 알아서는 안 된다. 운영체제의 동작 원리도 알아야 하고 하드웨어도 알아야 한다.
이 책은 디바이스 드라이버 개발을 처음 접하는 독자에게 윈도우 동작 원리를 설명하고, 디바이스 드라이버와 윈도우가 어떻게 상호 작용하는지 설명한다. 간단한 디바이스 드라이버 제작부터 단계적으로 실습하면서 응용프로그램과 상호 작용하는 법, 인터럽트와 스레드 처리 등을 다룬다. 응용 실습으로 가상 USB 디바이스 드라이버, 가상 시리얼 디바이스 드라이버, 마우스 필터 드라이버 등을 소개해 독자가 필요에 따라 바로 응용할 수 있게 배려했다. 윈도우 2000 이전의 디바이스 드라이버를 개발하는 방법과 윈도우 비스타에서 처음 소개된 WDF(Windows Driver Foundation)도 수록하여 한 권의 책으로 윈도우 디바이스 드라이버의 다양한 요소를 학습할 수 있다.
주요 내용
감수자의 글 저자 서문 이 책의 주요 내용 이 책의 학습 로드맵 예제 수록 내용 PART 1 이론편 01장 MS-DDK 소개 1.1 DDK 다운로드 1.2 DDK 설치 1.3 DDK Tools 1.4 디바이스 드라이버의 빌드 02장 세상에서 가장 간단한 디바이스 드라이버 작성하기 2.1 문맥(Context)의 의미 2.2 SIMPLE 디바이스 드라이버 예제 파악하기 2.3 SIMPLE 디바이스 드라이버 빌드 과정과 설치 방법 2.4 설치된 SIMPLE 디바이스 드라이버 확인하기 03장 설치 파일(INF)에 대한 이해 3.1 이름이 정해져 있는 섹션 3.2 이름이 정해져 있지 않은 섹션 3.3 지시자(Directives) 3.4 설치 파일 예제 분석 04장 디바이스 스택(Device Stack) 4.1 디바이스 스택의 개념 파악 4.2 장치 관리자 대화상자를 통한 디바이스 스택의 모습 4.3 디바이스 스택의 모습을 결정하는 설치 파일의 이해 4.4 디바이스 스택을 구성하는 드라이버 코드에 대한 이해 4.5 DDK Tool "Device Tree"를 통해 본 실제 디바이스 스택의 모습 05장 스레드와 IRQL 5.1 가상 메모리, 프로그램 모듈, 스레드 5.2 인터럽트 요구 레벨(IRQL)과 스레드 5.3 동기화 문제(Synchronization Problem) 5.4 타이머 스케줄러와 Idle 스케줄러 5.5 Idle 스케줄러와 디바이스 드라이버 06장 응용 프로그램과 연결되는 디바이스 드라이버 6.1 응용 프로그램이 디바이스 드라이버를 찾는 방법 6.2 디바이스 드라이버와 대화하기 위해서 응용 프로그램이 사용하는 함수 6.3 응용 프로그램에서 커널까지 6.4 커널에서 IO 관리자까지 6.5 IO 관리자에서 디바이스 드라이버까지 6.6 예외와 스택 프레임 07장 디바이스 드라이버 엔트리 7.1 DriverEntry 루틴 - 필수 함수 7.2 AddDevice 루틴 - 필수 함수 7.3 DriverUnload 루틴 - 필수 함수 7.4 공통 IRPDispatch 루틴 7.5 PnP IRPDispatch 루틴 - 필수 함수 7.6 Power IRPDispatch 루틴 - 필수 함수 7.7 IRP StartIO 루틴 - 선택 함수 7.8 IRP Cancel 루틴 - 선택 함수 7.9 IRP Completion 루틴 - 필수 함수 7.10 BuiltIn Timer와 Custom Timer 루틴 - 선택 함수 7.11 System 스레드와 WorkItem 루틴 - 선택 함수 7.12 H/W 인터럽트 서비스 루틴, DPC 루틴 - 선택 함수 08장 드라이버가 사용하는 자료구조 8.1 LIST_ENTRY 8.2 KQUEUE 8.3 KDEVICE_QUEUE 8.4 IO_REMOVE_LOCK 8.5 MDL(Memory Descriptor List) 09장 하드웨어에 접근하는 드라이버 코드 구현 9.1 하드웨어 자원(Resource)에 접근하는 방법(IO Port, 메모리, 인터럽트, DMA) 9.2 PNP IRP_MN_START_DEVICE와 자원 정보 10장 필터 드라이버의 매력 10.1 필터 드라이버와 디바이스 스택 10.2 필터 드라이버 기본 골격 10.3 필터 드라이버의 설치 11장 DDK가 제공하는 함수 분석 11.1 IO 관리자가 제공하는 함수 11.2 커널이 제공하는 함수 PART 2 응용편 12장 USB 버스를 사용하는 드라이버 개발 12.1 USB 버스를 사용하는 다양한 디바이스 스택 분석 12.2 USBDI(USB Bus Driver Interface) 12.3 URB(USB Request Block) 12.4 가상 USB 장치로 DDK가 제공하는 USB 드라이버 분석하기(BULKUSB) 13장 WDF 소개 13.1 WDM과 WDF 13.2 KMDF 예제 드라이버 분석 13.3 USB 버스를 사용하는 KMDF 예제 소스 14장 NT 구형(Legacy) 드라이버 개발 14.1 NT 구형(Legacy) 드라이버와 WDM 드라이버 14.2 NT 구형(Legacy) 드라이버의 로딩과 언로딩 14.3 NT 구형(Legacy) 드라이버가 사용되는 영역 15장 후킹 드라이버 개발 15.1 정규 필터 방식을 사용하는 후킹 방식(디바이스 스택 필터링) 15.2 비정규 방식을 사용하는 후킹 방식(테이블 후킹과 코드 후킹) PART 3 실습편 01 응용 프로그램에서 디바이스 드라이버까지(CreateFile, CloseHandle) 02 응용 프로그램에서 디바이스 드라이버까지(파일 핸들을 통한 문맥 유지 1) 03 응용 프로그램에서 디바이스 드라이버까지(파일 핸들을 통한 문맥 유지 2) 04 응용 프로그램에서 디바이스 드라이버까지(취소와 Cleanup 실습) 05 응용 프로그램에서 디바이스 드라이버까지 06 StartIo 루틴 작성법 1 07 StartIo 루틴 작성법 2 08 Interrupt Service Routine(ISR)과 Deferred Procedure Call(DPC) 루틴 작성법 09 마우스 필터 드라이버 작성 10 가상 USB 디바이스를 위한 버스 드라이버 작성 11 NT 구형(Legacy) 드라이버 실습(파일 시스템 필터 드라이버) 12 가상 시리얼 디바이스 드라이버 부록 A: 실전에서 사용하는 다양한 디바이스 스택의 모습 B: WinDbg 사용법 찾아보기
자료명 | 등록일 | 다운로드 |
---|---|---|
예제소스 | 2016-04-06 | 다운로드 |