목차
감수자의 글
저자 서문
이 책의 주요 내용
이 책의 학습 로드맵
예제 수록 내용
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 사용법
찾아보기