| 000 | 00773camccc200253 k 4500 | |
| 001 | 000000873834 | |
| 005 | 20100806061938 | |
| 007 | ta | |
| 008 | 040205s2004 ulka 00a kor | |
| 020 | ▼a 8956741476 ▼g 98000 : ▼c \36000 | |
| 035 | ▼a KRIC09164317 | |
| 040 | ▼d 211009 | |
| 041 | 1 | ▼a kor ▼h eng |
| 049 | 1 | ▼l 121091539 ▼f 과학 ▼l 121091540 ▼f 과학 |
| 082 | 0 4 | ▼a 005.7/126 ▼2 21 |
| 090 | ▼a 005.7126 ▼b 2004 | |
| 100 | 1 | ▼a Oney, Walter. ▼0 AUTH(211009)17487 |
| 245 | 1 0 | ▼a Programming the Microsoft Windows Driver Model / ▼d 월터 오니 저 ; ▼e 소현우 역 ; ▼e 데브구루 감수. |
| 246 | 1 9 | ▼a Microsoft Windows Driver Model. 2nd ed. |
| 260 | ▼a 서울 : ▼b 정보문화사 , ▼c 2004. | |
| 300 | ▼a 932 p. : ▼b 삽도 ; ▼c 24 cm + ▼e CD-ROM 1매. | |
| 700 | 1 | ▼a 소현우, ▼e 저 |
| 900 | 1 | ▼a 오니, 월터 |
소장정보
| No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
|---|---|---|---|---|---|---|---|
| No. 1 | 소장처 중앙도서관/교육보존A/1 | 청구기호 005.7126 2004 | 등록번호 111306751 (1회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. 2 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.7126 2004 | 등록번호 121091539 (28회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. 3 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.7126 2004 | 등록번호 121091540 (19회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. 4 | 소장처 세종학술정보원/과학기술실(5층)/ | 청구기호 005.7126 2004 | 등록번호 151162186 (6회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
|---|---|---|---|---|---|---|---|
| No. 1 | 소장처 중앙도서관/교육보존A/1 | 청구기호 005.7126 2004 | 등록번호 111306751 (1회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
|---|---|---|---|---|---|---|---|
| No. 1 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.7126 2004 | 등록번호 121091539 (28회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. 2 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.7126 2004 | 등록번호 121091540 (19회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
|---|---|---|---|---|---|---|---|
| No. 1 | 소장처 세종학술정보원/과학기술실(5층)/ | 청구기호 005.7126 2004 | 등록번호 151162186 (6회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
컨텐츠정보
책소개
오랫동안 디바이스 드라이버를 작성해온 저자가 실제적인 예제, 그림, 조언등을 통해 실전 드라이버 작성에 관한 모든것을 설명한다. 또한 Windows XP와 Windows 2000 드라이버 기술에 대한 최신 내용은 물론 드라이버를 디버깅하는 방법에 관한 상세 정보를 제공한다.
이번 개정2판에서는 미니드라이버와 클래스 드라이버에 관한 최신 설명, 안전한 문자열 함수, 메모리 제한, 다른 드라이버에 컨트롤 오퍼레이션을 전달하는 방법, USB 2.0, 선택적 대기, WHQL등 최신 정보가 풍부하게 수록되어 있다.
다음 내용들을 학습한다.
[부록 CD] Microsoft Visual C++용 샘플 코드
정보제공 :
목차
목차 번역 용어집 = 14 소개 = 17 Chapter 1 드라이버 프로젝트 시작하기 = 31 디바이스 드라이버에 대한 간략한 역사 = 32 운영체제 개관 = 36 Windows XP 개관 = 36 Windows 98/Windows Me 개관 = 39 어떤 종류의 드라이버가 필요한가? = 41 WDM 드라이버 = 43 그 외 드라이버 타입 = 46 관리 문제에 대한 개관과 체크리스트 = 47 Chapter 2 WDM 드라이버의 기본 구조 = 51 드라이버의 작동 방식 = 52 어플리케이션의 작동 방식 = 53 디바이스 드라이버 = 55 시스템의 드라이버 로딩 방식 = 58 디바이스와 드라이버의 계층화(Layering) = 59 플러그 앤 플레이 디바이스 = 61 Legacy 디바이스 = 65 재귀적 열거(Recursive Enumeration) = 67 드라이버 로딩 순서 = 67 IRP 라우팅 = 70 두 개의 기본 데이터 구조 = 75 Driver Object = 75 Device Object = 79 DriverEntry 루틴 = 82 DriverEntry 개요 = 83 DriverUnload = 86 AddDevice 루틴 = 87 Device Object 생성 = 88 디바이스 이름 짓기(naming) = 90 기타 전역적인 디바이스 초기화 = 105 모두 합쳐 넣기 = 111 Windows 98/Me 호환성 노트 = 113 DriverEntry 호출에서 다른 점 = 113 DriverUnload = l13 \GLOBAL?? 디렉터리 = 113 구현되지 않은 디바이스 타입들 = 113 Chapter 3 프로그래밍 기본 테크닉 = 115 커널 모드 프로그래밍 환경 = 116 표준 런타임 라이브러리 함수 사용하기 = 117 매크로 함수에 대한 주의 = 118 에러 핸들링 = 119 상태 코드(State Codes) = 119 구조화된 예외 처리(Structured Exception Handling) = 123 버그 체크 = 134 메모리 관리 = 136 유저 모드와 커널 모드 주소 공간 = 136 힙(Heap) 할당자 = 145 링크드 리스트(Linked List) = 153 Lookaside List = 160 문자열 처리 = 164 기타 프로그래밍 테크닉 = 167 레지스트리 액세스하기 = 168 파일 액세스하기 = 178 부동소수점 연산 = 182 디버깅 쉽게 하기 = 184 Windows 98/Me 호환성 노트 = 190 파일 I/O = 190 부동소수점 = 190 Chapter 4 동기화(Synchronization) = 193 전형적인 동기화 문제 = 194 IRQL(Interrupt Request Level) = 197 IRQL의 작동 방식 = 201 쓰레드 우선순위와 비교해 본 IRQL = 201 IRQL과 페이징 = 202 IRQL을 간접적(implicitly)으로 제어하기 = 203 IRQL을 명시적(explicitly)으로 제어하기 = 204 스핀락(Spin Lock) = 205 스핀락에 대한 몇 가지 사실 = 206 스핀락 사용하기 = 208 Queued 스핀락 = 209 커널 Dispatcher 객체 = 210 쓰레드 블록 가능 시점과 방법 = 211 단일 dispatcher 객체에 대한 대기(waiting) = 213 다중 dispatcher 객체에서의 대기 = 216 커널 이벤트 = 218 커널 세마포어(Semaphore) = 222 커널 뮤텍스(mutex) = 224 커널 타이머 = 226 동기화를 위해 쓰레드 사용하기 = 234 쓰레드 경고(Alert)와 APC = 235 그 외 커널 모드 동기화 Primitive들 = 238 Fast Mutex 객체 = 239 Interlocked 연산 = 243 Interlocked List 액세스 = 249 Windows 98/Me 호환성 노트 = 253 Chapter 5 I/O 요청 패킷(I/O Request Packet) = 255 데이터 구조 = 256 IRP의 구조 = 256 I/O 스택 = 260 IRP 처리의 "표준 모델" = 262 IRP 생성하기 = 262 디스패치 루틴으로의 포워딩 = 267 디스패치 루틴의 임무 = 273 Startlo 루틴 = 281 ISR(Interrupt Service Routine) = 282 DPC(Deferred Procedure Call) 루틴 = 283 완료 루틴(Completion Routines) = 284 I/O 요청 큐에 넣기 = 299 DEVQUEUE 객체 사용하기 = 304 Cancel-safe Queue(취소에도 안전한 큐) 사용하기 = 308 I/O 요청 취소하기 = 315 멀티태스킹이 아니라면... = 315 동기적 취소 = 316 IRP 취소에 관한 세부적 사항 = 317 DEVQUEUE에서 취소 처리하는 방법 = 318 우리가 생성한 IRP 취소하기 = 327 IRP_MJ_CLEANUP 처리하기 = 336 DEVQUEUE로 cleanup하기 = 338 Cancel-Safe Queue로 cleanup하기 = 340 요약 - 여덟가지 IRP 처리 시나리오 = 341 시나리오 1 - 완료 루틴을 가지고 하위로 전달하기 = 342 시나리오 2 - 완료 루틴 없이 하위로 전달하기 = 343 시나리오 3 - 디스패치 루틴에서 완료하기 = 344 시나리오 4 - 이후 처리를 위해 큐에 저장하기 = 345 시나리오 5 - 우리가 생성한 비동기적 IRP = 347 시나리오 6 - 우리가 생성한 동기적 IRP = 350 시나리오 7 - 동기적으로 하위에 전달하기 = 352 시나리오 8 - 비동기적 IRP를 동기적으로 처리하기 = 353 Chapter 6 Function Driver에 대한 플러그 앤 플레이 = 357 IRP_MJ_PNP 디스패치 함수 = 360 디바이스의 시작과 정지 = 363 IRP_MN_START_DEVICE = 364 IRP_MN_STOP_DEVICE = 367 IRP_MN_REMOVE_DEVICE = 368 IRP_MN_SURPRISE_REMOVAL = 369 PnP 상태 전환 관리하기 = 371 디바이스 시작하기 = 373 디바이스를 정지시킬 수 있는가? = 374 디바이스가 정지되는 동안 = 377 디바이스를 제거할 수 있는가? = 378 동기적으로 제거하기 = 379 어쨋든 왜 이렇게 @#$&!한 remove lock이 필요한 걸까? = 383 DEVQUEUE가 PnP를 처리하는 방법 = 390 그 외 설정 기능 = 395 리소스 필터링 요청 = 395 디바이스 사용 통지(Usage Notification) = 397 PnP 통지(Notification) = 400 Windows 98/Me 호환성 노트 = 415 급작스런 제거(Surprise Removal) = 415 PnP 통지 = 415 Remove Lock = 415 Chapter 7 데이터 읽기와 쓰기 = 417 디바이스 설정하기 = 418 데이터 버퍼 주소 지정(Addressing) = 421 버퍼링 방식 지정하기 = 422 Direct 방식 = 424 포트와 레지스터 = 429 포트 리소스 = 431 메모리 리소스 = 433 인터럽트 서비스하기 = 434 인터럽트의 설정 = 434 인터럽트 처리하기 = 437 DPC(Deferred Procedure Call) = 441 간단한 인터럽트 발생 드라이버 = 446 DMA(Direct Memory Access) = 454 전송 전략 = 456 DMA 전송의 수행 = 458 공용 버퍼(common buffer) 사용하기 = 476 간단한 버스 마스터링 디바이스 = 480 Windows 98/Me 호환성 노트 = 483 Chapter 8 전원 관리 = 485 WDM 전원 모델 = 486 WDM 드라이버의 역할 = 487 디바이스 전원 상태와 시스템 전원 상태 = 488 전원 상태의 전환 = 489 IRP_MJ_POWER 요청 처리하기 = 490 전원 전환(transition) 관리하기 = 494 기반 요구 사항 = 496 초기 우선순위 = 497 전원을 증가시키는 System Power IRP = 498 전원을 감소시키는 System Power IRP = 507 디바이스 전원 IRP = 509 전원 관리에 관한 기타 세부사항 = 518 AddDevice에서 설정하는 플래그 = 519 디바이스 wake-up 기능 = 520 유휴(Idle) 상태일 때 전원 끄기 = 529 상태 변화를 최적화하기 위해 시퀀스 넘버 사용하기 = 534 Windows 98/Me 호환성 노트 = 535 DO_POWER_PAGABLE의 중요성 = 535 전원 IRP 완료하기 = 535 Device Power IRP 요청하기 = 536 PoCallDriver = 536 다른 차이점들 = 537 Chapter 9 I/O 컨트롤 오퍼레이션 = 539 DeviceloControl API = 540 DeviceloControl에 대한 동기적/비동기적 호출 = 542 I/O Control Code 정의 = 544 IRP_MJ_DEVICE_CONTROL 처리하기 = 546 METHOD_BUFFERED = 549 DIRECT 버퍼링 방식 = 550 METHOD_NEITHER = 551 안전하고 보안성을 가진 IOCTL 인터페이스 설계하기 = 553 내부 I/O 컨트롤 오퍼레이션 = 555 어플리케이션에게 이벤트 통지하기 = 558 통지를 위해 이벤트 공유 방식 사용하기 = 559 통지를 위해 Pending IOCTL 방식 사용하기 = 561 Windows 98/Me 호환성 노트 = 568 Chapter 10 WMI(Windows Management Instrumentation) = 569 WMI의 개념 = 571 샘플 스키마 = 572 WMI 클래스를 C 구조체로 매핑하기 = 573 WDM 드라이버와 WMI = 575 IRP를 WMILIB에게 위임하기 = 577 고급 기능 = 587 Windows 98/Me 호환성 노트 = 599 Chapter 11 컨트롤러와 다기능(multifunction) 디바이스 = 601 전체 아키텍처 = 602 자식 device object = 603 PnP 요청 처리하기 = 606 PnP Manager에게 자식들을 알리기 = 608 PnP 요청에 대한 PDO의 처리 = 610 디바이스 제거 = 615 IRP_MN_QUERY_ID 처리 = 615 IRP_MN_QUERY_DEVICE_RELATIONS 처리 = 617 IRP_MN_QUERY_INTERFACE 처리 = 618 전원 요청 처리 = 623 자식 디바이스의 리소스 처리 = 628 Chapter12 USB(Universal Serial Bus) = 629 프로그래밍 아키텍처 = 631 디바이스 계층 = 631 디바이스 안에는 무엇이 있나? = 633 흐름 정보 = 636 Descriptor = 649 bus driver와 같이 동작하기 = 660 요청 생성하기 = 660 설정(Configuration) = 664 Bulk 전송 파이프 처리 = 676 인터럽트 파이프 처리 = 687 컨트롤 요청 = 688 isochronous 파이프 처리 = 691 USB 디바이스에 대한 Idle 전원 관리 = 711 Chapter 13 HID(Human Interface Devices) = 715 HID 디바이스 드라이버 = 716 Report와 Report Descriptor = 717 샘플 키보드 Descriptor = 718 HIDFAKE Descriptor = 721 HIDCLASS Minidrivers = 722 DriverEntry = 723 드라이버 콜백 루틴 = 724 Internal IOCTL 인터페이스 = 733 Windows 98/Me 호환성 노트 = 750 IRP_MN_QUERY_ID 처리하기 = 751 조이스틱 = 752 Chapter 14 기타 주제 = 753 에러 로깅 = 754 에러 로그 패킷 생성 = 755 메시지 파일 생성하기 = 758 시스템 쓰레드 = 762 시스템 쓰레드의 생성과 종료 = 763 디바이스 폴링에 대한 시스템 쓰레드 = 766 Work Items = 770 와치독 타이머(Watchdog Timer) = 773 Windows 98/Me 호환성 노트 = 777 에러 로깅 = 777 시스템 쓰레드 끝나기를 기다리기 = 777 Work Items = 778 Chapter 15 디바이스 드라이버 배포하기 = 779 레지스트리의 역할 = 780 Hardware (Instance) Key = 781 Class Key = 784 Driver Key = 786 Service (Software) Key = 786 프로그램에서 레지스트리에 액세스하기 = 787 Device Object의 속성 = 791 INF 파일 = 792 Install 섹션 = 797 레지스트리에 추가 섹션 저장하기 = 802 보안 설정 = 808 문자열과 지역화(Localization) = 810 디바이스 식별자 = 811 드라이버 순위 매기기(ranking) = 819 INF 파일을 위한 도구 = 821 디바이스 클래스 정의하기 = 824 속성 페이지 제공(Property-Page Provider) = 826 커스터마이징 셋업 = 831 인스톨러와 Co-Installer = 832 드라이버 파일 프리인스톨(preinstall)하기 = 840 부가가치(value-added) 소프트웨어 = 841 프로그램적으로 드라이버 설치하기 = 842 RunOnce 키 = 843 프로그램 시작시키기 = 844 WHQL(Windows Hardware Quality Lab) = 845 하드웨어 호환성 테스트(Hardware Compatibility Test) 수행하기 = 845 드라이버 패키지의 제출 = 852 Windows 98/Me 호환성 노트 = 857 속성 페이지 제공자 = 857 Installer와 Co-Installer = 858 프리인스톨된(preinstalled) 드라이버 패키지 = 858 전자 서명 = 858 프로그램적으로 드라이버 설치하기 = 858 CONFIGMG API = 858 INF 비호환성 = 859 레지스트리 사용 = 859 디바이스 속성 알아오기 = 860 Chapter 16 Filter Driver = 861 Filter Driver의 역할 = 862 Upper Filter Driver = 862 Lower Filter Driver = 866 Filter Driver의 구조 = 868 DriverEntry 루틴 = 868 AddDevice 루틴 = 869 DispatchAny 함수 = 872 DispatchPower 루틴 = 874 DispatchPnp 루틴 = 874 Filter Driver 설치하기 = 877 Class Filter 설치하기 = 878 Function Driver와 함께 Device Filter를 설치하기 = 880 이미 존재하는 디바이스에 대해 Device Filter를 설치하기 = 881 케이스 스터디 = 882 트래픽 모니터링을 위한 Lower Filter = 882 명명된(named) 필터 = 883 Bus Filters = 886 키보드와 마우스 Filter Driver = 887 다른 HID 디바이스를 필터링하기 = 891 Windows 98/Me 호환성 노트 = 892 VxD 드라이버에 대한 WDM Filter = 892 INF 파일 = 892 Class Filter Driver = 892 Appendix A 크로스 플랫폼 비호환성의 처리 = 895 Appendix B WDMWIZ.AWX 사용법 = 907 Index = 917
