HOME > 상세정보

상세정보

Programming the Microsoft Windows Driver Model

Programming the Microsoft Windows Driver Model (54회 대출)

자료유형
단행본
개인저자
Oney, Walter. 소현우, 저
서명 / 저자사항
Programming the Microsoft Windows Driver Model / 월터 오니 저 ; 소현우 역 ; 데브구루 감수.
발행사항
서울 :   정보문화사 ,   2004.  
형태사항
932 p. : 삽도 ; 24 cm + CD-ROM 1매.
원표제
Microsoft Windows Driver Model. 2nd ed.
ISBN
8956741476
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회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 2 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.7126 2004 등록번호 121091539 (28회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 3 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.7126 2004 등록번호 121091540 (19회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 4 소장처 세종학술정보원/과학기술실(5층)/ 청구기호 005.7126 2004 등록번호 151162186 (6회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M ?
No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 중앙도서관/교육보존A/1 청구기호 005.7126 2004 등록번호 111306751 (1회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.7126 2004 등록번호 121091539 (28회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 2 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.7126 2004 등록번호 121091540 (19회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 세종학술정보원/과학기술실(5층)/ 청구기호 005.7126 2004 등록번호 151162186 (6회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M ?

컨텐츠정보

책소개

오랫동안 디바이스 드라이버를 작성해온 저자가 실제적인 예제, 그림, 조언등을 통해 실전 드라이버 작성에 관한 모든것을 설명한다. 또한 Windows XP와 Windows 2000 드라이버 기술에 대한 최신 내용은 물론 드라이버를 디버깅하는 방법에 관한 상세 정보를 제공한다.

이번 개정2판에서는 미니드라이버와 클래스 드라이버에 관한 최신 설명, 안전한 문자열 함수, 메모리 제한, 다른 드라이버에 컨트롤 오퍼레이션을 전달하는 방법, USB 2.0, 선택적 대기, WHQL등 최신 정보가 풍부하게 수록되어 있다.

다음 내용들을 학습한다.

  • 드라이버 프로젝트와 WDM 드라이버의 구조 설명
  • 기본적인 드라이버 테크닉
  • 동기화
  • I/O 요청 패킷과 I/O 컨트롤 오퍼레이션
  • Function Driver에 대한 플러그 앤 플레이
  • 데이터의 읽기와 쓰기, 전원관리, WMI
  • 특별 주제와 드라이버 배포

    [부록 CD] Microsoft Visual C++용 샘플 코드


    정보제공 : Aladin
  • 목차

    
    목차
    번역 용어집 = 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
    
    

    관련분야 신착자료

    Harvard Business Review (2025)