목차
Chapter 1. 소개 = 1
1-1 소개 = 2
1-2 Windows Driver Model = 3
1-2-1 WDM과 NT 형태 드라이버 = 4
1-2-2 바로 이용할 수 있는 드라이버 = 5
1-2-3 부록 CD-ROM = 6
1-2-4 디바이스 드라이버 개발에 유용한 도구 = 6
1-2-5 이 책에서 다루지 않는 드라이버의 종류 = 7
1-3 새로운 사고 = 8
1-3-1 디바이스 드라이버의 실행환경 = 8
1-3-2 전문용어와 정보원 = 9
1-4 Win32 프로그램 인터페이스 = 10
1-4-1 기본 I/O = 10
1-4-2 비동기 I/O 요구 = 11
1-4-3 환경 = 12
1-4-4 디바이스 고유의 제한 = 12
1-4-5 드라이버로의 기타 Win32 액세스 = 12
1-5 결론 = 13
Chapter 2. 개념도 = 15
2-1 소개 = 16
2-2 디바이스 드라이버의 요소 = 17
2-2-1 드라이버 엔트리 포인트와 콜백 = 18
2-2-2 디스패치 루틴 = 20
2-2-3 디바이스의 작성 = 21
2-2-4 하드웨어 자원의 할당 = 22
2-2-5 다른 드라이버의 호출 = 22
2-2-6 하드웨어 액세스의 직렬화 = 22
2-2-7 하드웨어와의 통신 = 23
2-2-8 하드웨어 문제 = 24
2-2-9 전원관리 = 24
2-2-10 Windows Management lnstrumentation = 25
2-2-11 NT 이벤트 보고 = 25
2-2-12 시스템 스레드 = 25
2-3 디바이스 드라이버의 종류 = 25
2-3-1 Windows의 개요 = 26
2-3-2 I/O요구 처리 = 27
2-3-3 플러그 앤드 플레이 디바이스 스택 = 28
2-3-4 표준 버스 드라이버와 클래스 드라이버 = 29
2-3-5 드라이버 스택의 예 = 31
2-4 드라이버의 선택 = 33
2-4-1 시판되는 드라이버 = 33
2-4-2 표준 드라이버의 사용 = 33
2-4-3 운영 시스템 = 33
2-4-4 계층형 디바이스 드라이버 = 34
2-4-5 단일 드라이버 = 34
2-4-6 추천기능 및 선택기능 = 34
2-5 WDM 설계에 관한 첨언 = 35
2-5-1 1개의 핵심 모델 = 35
2-5-2 복잡성 = 35
2-5-3 플러그 앤드 플레이와 레이어 = 36
2-5-4 기능의 범위 = 37
2-5-5 개발 환경 = 37
2-5-6 개발자의 지원 = 37
2-6 결론 = 38
Chapter 3. 디바이스 드라이버 설계 = 39
3-1 소개 = 40
3-2 드라이버 설계 가이드 = 40
3-2-1 문서 = 41
3-2-2 우수한 설계 = 41
3-3 커널 호출 = 43
3-3-1 커널 객체 = 45
3-3-2 드라이버 루틴 명 = 45
3-4 프로세서 모델 = 45
3-4-1 프로세서 모드 = 46
3-4-2 인터럽트 레벨 = 46
3-5 메모리 사용 = 48
3-5-1 풀 메모리 = 49
3-5-2 참조 리스트 = 50
3-5-3 메모리에 관한 기타 고려사항 = 51
3-5-4 사용자 애플리케이션 메모리의 액세스 = 51
3-5-5 DMA = 51
3-6 IRP의 처리 = 52
3-6-1 IRP 인자 = 53
3-6-2 드라이버 스택에서의 IRP 처리 = 54
3-7 결론 = 56
Chapter 4. WDM 드라이버 환경 = 57
4-1 소개 = 58
4-2 시스템의 셋업 = 58
4-2-1 DDK = 59
4-2-2 이 책 부록 소프트웨어의 설치 = 60
4-2-3 단축아이콘 = 62
4-3 유틸리티 = 63
4-3-1 DOS 창 = 73
4-3-2 관리도구 = 64
4-3-3 NT의〔디바이스〕애플릿 = 64
4-3-4 하드웨어의 추가/제거 마법사 = 64
4-3-5 레지스트리 에디터 = 65
4-3-6 INF 에디터 = 65
4-3-7 WBEM = 65
4-3-8 디버거 = 65
4-3-9 NT와 Windows 2000의 유틸리티 = 66
4-3-10 이 책의 부록 소프트웨어 도구 = 66
4-4 드라이버의 목표 = 67
4-5 드라이브 언어와 라이브러리 = 68
4-5-1 리소스 = 68
4-6 바람직한 코드 = 69
4-7 「build」유틸리티 = 69
4-7-1 makefile = 69
4-7-2 SOURCES = 70
4-7-3 makefile 파일 = 71
4-7-4 「build」디렉토리 = 71
4-7-5 그 밖의 「build」절차 = 72
4-7-6 DIRS 파일 = 73
4-8 VC++ 프로젝트 = 74
4-8-1 「Makefile」빌드 환경 = 74
4-8-2 MakeDrvr = 75
4-8-3 디렉토리 = 76
4-8-4 일반적인 작업 = 76
4-9 Wdm1의 드라이버 코드 = 77
4-9-1 컴파일러 옵션 = 78
4-9-2 헤더 파일 = 78
4-9-3 드라이버 엔트리 모듈 = 79
4-9-4 버전 리소스 = 80
4-9-5 레지스트리의 액세스 = 80
4-10 Wdm1의 설치 = 84
4-11 설치의 세부사항 = 85
4-11-1 INF 파일 = 85
4-11-2 레지스트리 = 86
4-11-3 Windows 2000 객체 = 86
4-12 디바이스와 드라이버의 관리 = 87
4-12-1 다른 디바이스의 추가 = 87
4-12-2 디바이스의 삭제 = 87
4-12-3 드라이버 업데이트 = 87
4-12-4 NT 형식 드라이버 = 88
4-13 결론 = 88
Chapter 5. 디바이스 인터페이스 = 111
5-1 소개 = 112
5-2 디바이스 = 112
5-2-1 디바이스 액세스 = 112
5-2-2 그 이후의 I/O = 114
5-3 디바이스 객체와 디바이스 확장 = 114
5-4 디바이스 객체의 작성 및 삭제 = 115
5-4-1 디바이스의 작성 = 117
5-4-2 디바이스의 삭제 = 118
5-5 디바이스 명 = 118
5-5-1 심볼릭 링크 = 118
5-6 디바이스 인터페이스 = 120
5-6-1 Wdm1의 디바이스 인터페이스 = 121
5-7 Win32 디바이스 인터페이스 액세스 = 124
5-7-1 디바이스의 인터페이스 명의 획득 = 125
5-7-2 「Wdm1Test」의 실행 = 127
5-8 결론 = 129
Chapter 6. 테스트와 디버깅 = 135
6-1 소개 = 136
6-2 테스트, 테스트, 테스트 = 136
6-3 드라이버의 테스트 = 136
6-3-1 모든 기능의 동작 테스트 = 137
6-3-2 Windows 2000과 Windows 98 = 138
6-3-3 다중 프로세서 = 138
6-3-4 I/O 취소 = 139
6-4 디버깅 = 139
6-4-1 발생하고 있는 문제 = 140
6-5 디버깅 기술 = 142
6-5-1 단계적 개발 방법 = 142
6-5-2 Checked 버전 = 142
6-5-3 Windows 2000 혹은 Windows 98 = 143
6-6 디버깅 도구 = 143
6-6-1 Windows 2000의 이벤트 = 144
6-6-2 추적 도구 = 144
6-6-3 Driver Verifier = 144
6-6-4 디버거 = 145
6-7 「DebugPrint」 = 145
6-7-1 「DebugPrint」의 시도 = 146
6-7-2 DebugPrint Monitor의 사용법 = 147
6-7-3 드라이브에서의 「DebugPrint」사용법 = 147
6-8 디버깅 작업에 관한 메모 = 149
6-8-1 드라이버의 업데이트 = 149
6-8-2 시동시의 드라이버 장해 = 150
6-8-3 드라이버의 의존관계 = 151
6-8-4 취소되지 않는 IRP = 151
6-9 버그 체크 코드 = 151
6-9-1 버그 체크의 발생 장소 = 153
6-10 결론 = 155
Chapter 7. 디스패치 루틴 = 157
7-1 소개 = 158
7-2 디스패치 루틴 IRP = 158
7-3 I/O 요구 패킷 = 159
7-3-1 디스패치 루틴의 처리 = 159
7-3-2 재진입성 = 160
7-3-3 IRP 처리 = 161
7-3-4 IRP 완료 = 162
7-4 IRP 구조체 = 162
7-4-1 I/O 스택 영역 = 164
7-5 일반적인 IRP 인자 = 165
7-5-1 Create IRP, IRP_MJ_CREATE = 166
7-5-2 Close IRP, IRP_MJ_CLOSE = 166
7-5-3 Read IRP, IRP_MJ_READ - 166
7-5-4 Write IRP, IRP_MJ_WRITE = 167
7-5-5 IOCTL IRP, IRP_MJ_DEVICE_CONTROL = 167
7-6 사용자 버퍼 = 167
7-6-1 Buffered I/O = 167
7-6-2 Direct I/O = 168
7-6-3 그 외의 방법 = 168
7-6-4 DeviceIoControl 버퍼 = 168
7-7 Wdm1의 디스패치 루틴 = 169
7-7-1 작성 및 폐쇄 = 171
7-7-2 쓰기 = 171
7-7-3 읽기 = 174
7-7-4 IOCTL = 174
7-7-5 시스템 제어 = 175
7-8 결론 = 176
Chapter 8. 플러그 앤드 플레이와 디바이스 스택 = 177
8-1 소개 = 178
8-2 설계 개요 = 178
8-2-1 설계 목적 = 179
8-2-2 플러그 앤드 플레이 시스템 = 179
8-3 플러그 앤드 플레이 메시지 = 185
8-4 디바이스의 열거 처리 = 188
8-4-1 고정 디바이스와 구성 기능 디바이스 = 188
8-4-2 열거 처리(enumeration) = 189
8-4-3 디바이스 트리 = 190
8-5 디바이스 스택 = 191
8-5-1 PnP 지원과 디바이스 스택 = 192
8-5-2 디바이스 객체 = 192
8-6 상위 경계 = 194
8-6-1 USB 키보드의 예 = 194
8-6-2 기능 디바이스 객체와 물리 디바이스 객체 = 196
8-6-3 상위 경계 정의 = 197
8-7 결론 = 198
Chapter 9. 플러그 앤드 플레이의 구현 = 199
9-1 소개 = 200
9-2 플러그 앤드 플레이의 구현 = 200
9-2-1 디바이스의 추가와 제거 = 201
9-2-2 기본적인 PnP 핸들러 = 202
9-2-3 지원되지 않는 IRP를 스택 하부로 전송하기 = 206
9-2-4 PnP 상태와 메시지 = 207
9-2-5 상태 플래그 = 208
9-2-6 IRP의 유지 = 210
9-2-7 개방 핸들 = 210
9-2-8 PnP IRP 처리의 타이밍 = 211
9-2-9 디바이스 잠금 = 216
9-2-10 리소스 할당의 취득 = 221
9-3 Wdm2 테스트 = 227
9-3-1 실제 플러그 앤드 플레이 메시지 = 228
9-4 다른 PnP IRP = 229
9-4-1 IRP_MN_DEVICE_USAGE_NOTIFICATION = 229
9-4-2 IRP_MN_FILTER_RESOURCE_REQUIREMENTS = 229
9-4-3 IRP_MN_QUERY_BUS_INFORMATION = 229
9-4-4 IRP_MN_QUERY_CAPABILITIES = 230
9-4-5 IRP_MN_QUERY_DEVICE_RELATIONS = 230
9-4-6 IRP_MN_QUERY_DEVICE_TEXT = 230
9-4-7 IRP_MN_QUERY_ID = 230
9-4-8 IRP_MN_QUERY_INTERFACE = 231
9-4-9 IRP_MN_QUERY_PNP_DEVICE_STATE = 231
9-4-10 IRP_MN_QUERY_RESOURCE_REQUIREMENTS = 232
9-4-11 IRP_MN_QUERY_RESOURCE = 232
9-4-12 IRP_MN_READ_CONFIG = 232
9-4-13 IRP_MN_SET_LOCK = 232
9-4-14 IRP_MN_WRITE_CONFIG = 232
9-5 플러그 앤드 플레이 통지 = 233
9-5-1 Win32 PnP 통지 = 233
9-5-2 디바이스 드라이버의 PnP 통지 = 238
9-5-3 통지요구에 대한 드라이버의 상호작용 = 239
9-6 고급 플러그 앤드 플레이 = 239
9-6-1 버스 드라이버 = 239
9-6-2 PnP IRP의 송신 = 242
9-6-3 디바이스 특성 = 242
9-7 결론 = 242
Chapter 10. 전원관리 = 243
10-1 소개 = 244
10-2 전원관리의 개요 = 244
10-2-1 ACPI = 245
10-2-2 Win32 전원관리 = 245
10-2-3 「Wdm2Power」 애플리케이션 = 246
10-2-4 배터리 미니클래스 드라이버 = 247
10-3 시스템 전원 방침 = 247
10-3-1 시스템 상태와 디바이스 상태 = 248
10-4 Power IRP = 249
10-4-1 Power IRP의 처리 = 250
10-4-2 Power IRP 처리를 하지 않는 경우 = 253
10-5 디바이스 전원 방침의 소유자 = 254
10-6 Set Power IRP의 처리 = 256
10-6-1 시스템 전원상태의 설정 = 259
10-6-2 디바이스 전원상태의 설정 = 262
10-6-3 SetPowerState = 262
10-7 디스패치 루틴의 전원 처리 = 263
10-8 Wdm2 전원기능의 테스트 = 264
10-9 디바이스 기능 = 265
10-10 향상된 전원관리 = 267
10-10-1 Wake = 267
10-10-2 Power Sequence = 267
10-10-3 시스템 전원 저하 이벤트의 정지 = 268
10-10-4 전원통지 = 268
10-10-5 시스템 전원상태 변경의 검출 = 268
10-10-6 WMI의 지원 = 269
10-11 결론 = 270
Chapter 11. 설치 = 271
11-1 소개 = 272
11-2 WDM 드라이버의 설치 작업 = 272
11-3 INF 파일 = 273
11-4 표준 섹션 = 274
11-4-1 Strings = 276
11-5 INF 파일의 섹션 계층 = 277
11-5-1 Wdm1free.Inf = 278
11-5-2 「InfEdit」 = 282
11-6 교차 플랫폼(cross-platform)과 WDM INF 파일 = 283
11-6-1 Windows 2000에서의 Wdm1. 설치 = 284
11-6-2 Windows 2000 서비스 레지스트리 엔트리 = 285
11-7 드라이버의 검색 = 286
11-7-1 하드웨어 ID = 287
11-7-2 호환 ID = 288
11-7-3 열거의 반복 = 289
11-8 NT 형태 드라이버의 설치 = 289
11-8-1 설치 작업 = 290
11-8-2 드라이버의 로드 순서 = 292
11-8-3 NT 4. 제어판의 〔디바이스〕애플릿 = 292
11-8-4 Windows 2000의 디바이스 관리 = 293
11-8-5 Windows 98의 디바이스 관리 = 294
11-8-6 REG 파일 = 295
11-9 Windows 98에서의 NT 형태 드라이버 설치 = 295
11-10 결론 = 296
Chapter 12. Windows Management Instrumentation = 305
12-1 소개 = 306
12-2 WMI의 개요 = 306
12-2-1 WBEM 모델 = 307
12-2-2 WDM 제공자 = 309
12-2-3 표준 WMI 객체 = 309
12-3 WMI 드라이버 = 311
12-3-1 WMI의 빌드 환경 = 313
12-3-2 WMI 데이터 제공자로서의 등록 = 314
12-3-3 System Control IRP의 처리 = 316
12-3-4 QueryWmiRegInfo 핸들러 = 318
12-3-5 QueryWmiDataBlock 핸들러 = 319
12-3-6 SetWmiDataBlock 핸들러 = 321
12-3-7 SetWmiDataItem 핸들러 = 323
12-3-8 ExecuteWmiMethod 핸들러 = 324
12-3-9 WMI 이벤트의 발생 = 324
12-4 동작 중의 WMI = 326
12-5 결론 = 328
Chapter 13. 이벤트 보고 = 329
13-1 소개 = 330
13-2 이벤트 보고의 개요 = 330
13-3 메시지 파일 = 332
13-4 이벤트 소스로의 등록 = 334
13-5 이벤트의 생성 = 336
13-6 Wdm3 이벤트의 테스트 = 339
13-7 결론 = 340
Chapter 14. DebugPrint = 341
14-1 소개 = 342
14-2 설계 사양 = 342
14-3 설계의 구현 = 343
14-4 테스트 드라이버 코드 = 344
14-4-1 시스템 스레드 = 344
14-4-2 시스템 작업자 스레드 = 347
14-4-3 이벤트 = 348
14-4-4 동기화 = 348
14-4-5 추적 이벤트 생성 = 351
14-4-6 링크 리스트 = 352
14-4-7 최종 부분의 코드 = 356
14-5 DebugPrint 드라이버 = 357
14-5-1 설계 = 357
14-5-2 DebugPrint 디바이스 = 358
14-5-3 읽기 대기열 = 359
14-5-4 IRP의 취소 = 361
14-5-5 쓰기 알고리즘 = 363
14-5-6 읽기 알고리즘 = 365
14-6 DebugPrint Monitor = 366
14-6-1 설계 = 366
14-6-2 Win32 작업자 스레드 = 366
14-6-3 DebugPrint_Event 클래스 = 367
14-6-4 Win32 비동기 I/O = 368
14-7 결론 = 372
Chapter 15. WdmIo 드라이버와 PHDIo 드라이버 = 373
15-1 소개 = 374
15-2 Win32 인터페이스 = 375
15-2-1 IOCTL = 375
15-2-2 명령 = 376
15-3 LPT 프린터 드라이버 애플리케이션 = 377
15-3-1 병렬 포트 = 378
15-3-2 WdmIoTest = 379
15-3-3 PHDIoTest = 380
15-3-4 명령의 발행 = 380
15-3-5 인터럽트 구동형 I/O를 사용한 데이터 쓰기 = 382
15-3-6 인터럽트 구동형 I/O를 이용한 데이터 읽기 = 386
15-4 WdmIo 테스트 = 387
15-4-1 WdmIo 설치 = 387
15-4-2 LogConfig 섹션 = 388
15-4-3 「WdmIoTest」실행 = 389
15-5 PHDIo 테스트 = 390
15-5-1 PHDIo 설치 = 390
15-5-2 「PHDIoTest」의 실행 = 391
15-6 WdmIo와 PHDIo의 분석 = 391
15-6-1 어느쪽을 써야 할까 = 391
15-6-2 결함 = 392
15-7 결론 = 393
Chapter 16. 하드웨어 I/O IRP 대기열의 처리 = 395
16-1 소개 = 396
16-2 하드웨어 액세스 = 397
16-3 IRP 대기열의 처리 = 399
16-3-1 디바이스 대기열 = 399
16-3-2 StartIo 루틴 = 400
16-4 커맨드의 처리 = 404
16-4-1 임계영역 = 404
16-5 대기열 내의 IRP 취소 = 405
16-5-1 대기열 내의 IRP 취소 = 406
16-5-2 WdmIo에 있어서 IRP의 취소방법 = 406
16-5-3 다른 취소방법 = 408
16-6 IRP 조작의 후처리 = 409
16-7 취소 처리와 후처리 테스트 = 411
16-8 보조 디바이스 대기열 = 413
16-8-1 보조 디바이스 대기열의 구현 = 414
16-9 결론 = 418
Chapter 17. 인터럽트 구동형 I/O = 419
17-1 소개 = 420
17-2 인터럽트 처리 = 420
17-2-1 귀찮은 대물(代物)의 성질 = 420
17-2-2 인터럽트로의 접속 = 422
17-3 WdmIo의 읽기와 쓰기 = 424
17-3-1 요구의 개시 = 426
17-4 인터럽트 핸들러 = 428
17-5 지연 프로시저의 호출 = 430
17-5-1 기본적인 DPC의 사용 = 431
17-5-2 커스텀 DPC = 432
17-6 타이머 = 433
17-6-1 1초 간격의 타이머 = 433
17-6-2 WdmIo의 타임 아웃 = 434
17-6-3 커스텀 타이머 = 435
17-7 결론 = 436
Chapter 18. NT 하드웨어 = 437
18-1 소개 = 438
18-2 NT 형태 드라이버의 구조 = 439
18-2-1 DDK의 문제 = 439
18-2-2 컴파일 환경 = 439
18-2-3 NT 형태 드라이버의 구조 = 439
18-3 디바이스의 작성과 삭제 = 440
18-4 리소스의 요구 = 442
18-5 리소스의 변환 = 449
18-6 리소스의 검색 = 451
18-6-1 하드웨어의 자동 검출 = 452
18-6-2 구성 가능한 버스로의 조회 = 455
18-6-3 최종적인 리소스의 검출 기법 = 455
18-7 결론 = 455
Chapter 19. WDM 시스템 드라이버 = 457
19-1 소개 = 458
19-2 클라이언트 드라이버의 작성 = 459
19-2-1 공통 디바이스 = 460
19-3 필터 드라이버 = 460
19-4 NT 계층화 = 461
19-4-1 병렬 포트 드라이버 = 462
19-5 결론 = 463
Chapter 20. Universal Serial Bus = 465
20-1 소개 = 466
20-2 디바이스 클래스 = 467
20-2-1 HID(Human Input Devices) = 467
20-3 개념 = 468
20-3-1 Windows USB Driver Interface = 469
20-3-2 전송 타입 = 469
20-4 USB의 저(低) 레벨 구조 = 470
20-4-1 USB 디바이스 = 470
20-4-2 USB 신호 = 471
20-4-3 버스의 신호 = 472
20-4-4 저(低) 레벨 프로토콜 = 472
20-4-5 트랜잭션 = 473
20-4-6 전원 = 474
20-5 USB 디바이스의 구조 = 474
20-5-1 버스의 열거 처리 = 475
20-5-2 표준 제어 트랜잭션 = 476
20-5-3 설명자 = 478
20-5-4 드라이버의 설치 = 479
20-5-5 USB 클래스 = 479
20-5-6 새로운 기능 = 481
20-6 클라이언트의 설계 = 483
20-6-1 엔드포인트 종류의 선택 = 483
20-6-2 등시성 디바이스 = 484
20-7 결론 = 485
Chapter 21. USB Driver Interface = 487
21-1 소개 = 488
21-2 USB 클라이언트 드라이버 설계 = 489
21-2-1 UsbKbd 사용 = 489
21-2-2 UsbKbd 설치 = 491
21-2-3 헤더와 라이브러리 = 492
21-3 USBDIIOCTL = 492
21-3-1 URB = 493
21-3-2 USBDI 호출 = 494
21-4 USB와의 통신 = 498
21-4-1 USB 디바이스 초기화 = 498
21-4-2 URB의 발행 = 500
21-4-3 인터페이스 선택 = 502
21-4-4 그 밖의 초기화 = 504
21-4-5 구성의 선택 해제 = 505
21-4-6 인터럽트 전송 = 505
21-4-7 컨트롤 전송 = 508
21-4-8 기타 문제 = 510
21-5 UsbKbd 테스트 = 510
21-6 USBDI 구조체 참조 = 514
21-6-1 구조체 = 514
21-7 USBDI URB 참조 = 517
21-7-1 URB 설정 함수 = 517
21-7-2 URB 전송 함수 = 520
21-7-3 URB 디폴트 파이프 함수 = 521
21-7-4 URB 등시성 프레임 함수 = 522
21-8 결론 = 524
Chapter 22. Human Input Device 모델 = 525
22-1 소개 = 526
22-2 HID에 의한 은폐(隱蔽) = 526
22-2-1 Windows에서의 HID = 526
22-3 HID 모델 = 528
22-3-1 리포트 = 529
22-3-2 용도(usage) = 530
22-3-3 HID 기능의 취득 = 532
22-4 HID 모델의 표현 = 532
22-4-1 HID 설명자 = 533
22-4-2 디바이스 속성 = 534
22-4-3 리포트 설명자 = 534
22-5 결론 = 542
Chapter 23. HID 클라이언트 = 543
23-1 소개 = 544
23-2 HID 클래스 드라이버 = 544
23-2-1 HID 클래스 드라이버의 특성 = 545
23-2-2 Windows HID 클라이언트 = 546
23-2-3 헤더 파일 = 547
23-2-4 HID USB 미니드라이버 = 548
23-2-5 USB 부트 디바이스 = 549
23-3 사용자 모드 HID 클라이언트 = 549
23-3-1 HID 디바이스의 검출 = 550
23-3-2 HID 기능의 취득 = 551
23-3-3 입력 리포트 읽기 = 555
23-3-4 출력 리포트의 송신 = 558
23-3-5 기타 사용자 모드 HID 클라이언트 함수 = 560
23-3-6 「HidKbdUser」의 실행 = 560
23-4 커널 모드의 HID 클라이언트 = 563
23-4-1 클라이언트의 종류 = 563
23-4-2 플러그 앤드 플레이 통지 = 564
23-4-3 HidKbd 디바이스 = 566
23-4-4 HID 기능의 취득 = 572
23-4-5 HidKbd 디바이스 개방과 폐쇄 = 573
23-4-6 데이터 읽기/쓰기 = 574
23-4-7 기타 HID 클래스 IOCTL = 579
23-5 결론 = 580
부록 A. 추가정보 = 581
A-1 최신정보 = 582
부록 B. 정보출처 = 591
B-1 유용한 Web 사이트 = 592
B-2 뉴스그룹 및 메일링 리스트 = 595
B-3 서적 = 596
부록 C. PC 99 = 597
C-1 소개 = 598
C-2 드라이버 = 598
C-3 사양 = 599
C-4 IBM 호환 PC = 599
C-5 세계의 변화 = 602
C-6 ACPI, OnNow, 플러그 앤드 플레이 = 603
C-7 PC 99에의 적합 = 604
부록 D. 직접 기억장치 액세스 = 605
D-1 DMA = 606
용어해설 = 607
Index = 615