실전 윈도우 디바이스 드라이버 (윈도우 개발자를 위한 실무 유형별 드라이버 개발 가이드 | 2 판)

실전 윈도우 디바이스 드라이버 (윈도우 개발자를 위한 실무 유형별 드라이버 개발 가이드 | 2 판)

$49.81
Description
윈도우 디바이스 드라이버를 처음 개발하려는 독자들과 실무에서 필요로 하는 디바이스 드라이버를 개발하는 데 도움이 되는 지식을 얻고자 하는 독자들을 위해서 작성됐다.
이 책은 크게 디바이스 드라이버 개발에 처음 입문할 때 꼭 읽어봐야 할 부분인 기본편(1장과 2장)과 실무에서 장치유형별(디스크, HID, I2C, 오디오, 콜백 주소 테이블 가로채기, PCIe, 오토 마우스와 오토 키보드) 디바이스 드라이버를 개발하는 개발자들을 위한 응용편(3장부터 9장까지), 두 부분으로 나뉜다. 따라서 디바이스 드라이버 개발에 처음 입문하는 독자들이나 실무에서 실제 하드웨어를 가지고 윈도우 운영체제에서 동작하는 디바이스 드라이버를 만들어야 하는 독자 모두를 만족시킬 수 있는 책이 될 것이다.
2판에서는 기존 윈도우 8 기반의 내용을 윈도우 10으로 업데이트하는 등 1판 내용을 최신 버전에 맞춰 수정하고 설명을 추가했다.
저자

이봉석

현재(주)하제소프트대표이사를맡고있다.1998년부터지금까지삼성첨단기술센터,삼성21세기아카데미,LG러닝센터등에서디바이스드라이버교육을수행해왔으며,청강문화산업대컴퓨터정보과겸임교수와정보통신민관합동조사단전문가로활동했다.윈도우와임베디드시스템운영체제가관심분야이며,특히버스인터페이스(USB,PCI,1394등)와보안시스템에관심이많다.
주요저서로는『WindowsCE실전가이드』(에이콘출판,2006)를비롯해,『디바이스드라이버구조와원리그리고제작노하우』(가남사,2004),『윈도우디바이스드라이버』(한빛미디어,2009)가있다.

목차

추천의글
지은이소개
지은이의말
들어가며

1부.기본편

1장.개발환경

1.1디바이스드라이버
1.1.1기본설명
1.1.2레거시드라이버
1.1.3PNP드라이버.
1.2개발툴설치
1.2.1WDK
1.2.2WDM,KMDF그리고UMDF
1.3개발시작전검토사항
1.4설치파일
1.4.1Version섹션
1.4.2SourceDisksNames섹션
1.4.3SourceDisksFiles섹션
1.4.4DestinationDirs섹션
1.4.5Manufacturer섹션
1.4.6Strings섹션
1.4.7Models섹션
1.4.8DDInstall섹션
1.4.8.1DDInstall섹션지시자
1.4.8.2DDInstall.Service섹션
1.5빌드
1.5.1WDK7600콘솔빌드환경
1.5.2EWDK빌드환경
1.6디버깅툴
1.6.1DebugView.
1.6.1.1DebugView사용하기
1.6.1.2DebugView와디버그로그출력조건
1.6.2WinDBG
1.6.2.1타겟PC설정
1.6.2.2디버깅PC설정
1.6.2.3메모리덤프파일을통한WinDBG연결하기
1.6.2.4WinDBG프로그램체험하기
1.7WHQL소개
1.7.1회사인증서준비과정
1.7.2대시보드가입
1.7.3WHCK프로그램참여
1.7.4WHLK프로그램참여

2장.드라이버의기본

2.1디바이스스택
2.2WDM
2.2.1IRP
2.2.1.1IO_STACK_LOCATION.
2.2.1.2IRP완료
2.2.2필수루틴
2.2.2.1DriverEntry
2.2.2.2AddDevice.
2.2.2.3PlugNPlayDispatch.
2.2.2.4PowerDispatch
2.2.2.5DriverUnload
2.2.3WDM드라이버보충기술
2.2.3.1IoSkipCurrentIrpStackLocation
2.2.3.2완료루틴
2.2.3.3IRQL
2.2.3.4핸들과프로세스
2.2.4WDM드라이버샘플분석
2.2.4.1드라이버빌드,설치및응용프로그램실행
2.3WDF:KMDF
2.3.1WDF프레임워크
2.3.2WDF오브젝트
2.3.2.1WdfDriver
2.3.2.2WdfDevice
2.3.2.3WdfRequest
2.3.2.4WdfQueue
2.3.3이벤트함수들
2.3.3.1DRIVER_INITIALIZE
2.3.3.2EVT_WDF_DRIVER_DEVICE_ADD
2.3.3.3EVT_WDF_DEVICE_PREPARE_HARDWARE
2.3.3.4EVT_WDF_IO_QUEUE_IO_READ
2.3.3.5EVT_WDF_IO_QUEUE_IO_WRITE.
2.3.3.6EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL.
2.3.4WDF(KMDF)드라이버샘플분석
2.3.4.1드라이버빌드,설치및응용프로그램실행
2.3.4.2드라이버소스설명

2부.응용편

3장.디스크디바이스드라이버

3.1디스크드라이버를만들기위해알아야하는것
3.1.1디스크드라이버를만들어서무엇을할수있을까
3.1.2WDK
3.2SATA에대한소개
3.2.1SATA의개념
3.2.2AHCI의이해
3.2.3NCQ.
3.3NVMe에대한소개
3.4윈도우스토리지드라이버모델
3.4.1SCSI미니포트드라이버
3.4.1.1DriverEntry:디바이스드라이버로딩시기에호출된다
3.4.1.2CallbackHwScsiFindAdapter:발견된장치검증을위해호출된다
3.4.1.3CallbackHwScsiInitialize:발견된장치의초기화를위해호출된다
3.4.1.4CallbackHwScsiInterrupt:인터럽트서비스루틴의역할을담당한다
3.4.1.5CallbackHwScsiReset:발견된장치의초기화를위해호출된다
3.4.1.6CallbackHwScsiAdapterControl:사전에정의된특별한목적을위해호출된다
3.4.1.7CallbackHwScsiStartIo:모든SCSIRequest명령어가전달된다
3.4.2SCSI미니포트드라이버샘플분석
3.4.2.1드라이버빌드와설치방법
3.4.2.2HwScsiStartIo()콜백함수의주요동작코드분석
3.4.3Storport미니포트드라이버
3.4.3.1SCSI미니포트드라이버와구분되는특징
3.4.3.2Storport미니포트드라이버에서변경된콜백함수
3.4.3.3Storport미니포트드라이버와스핀락
3.4.3.4Storport미니포트드라이버샘플분석
3.5윈도우애플리케이션과패스스루인터페이스
3.6MSWDK가제공하는AHCISATA호스트컨트롤러드라이버3.6.1Ataport미니포트드라이버의주요콜백함수소개
3.6.2마이크로소프트SATA미니포트드라이버샘플예제분석309
3.6.2.1DriverEntry에서하는일
3.6.2.2AhciChannelInitRoutine
3.6.2.3AhciHwBuildIo
3.6.2.4AhciHwStartIo
3.6.2.5AhciHwInterrupt
3.6.3드라이버설치
3.6.4윈도우응용프로그램과패스스루인터페이스(ATA)
3.7NVMe평가판드라이버
3.8스토리지클래스드라이버
3.8.1파일시스템볼륨과스토리지볼륨
3.8.2디스크드라이버와스토리지볼륨
3.8.3디스크스토리지클래스드라이버

4장.HID디바이스드라이버

4.1HID드라이버를만들기위해알아야하는것
4.1.1HID드라이버를만들어서무엇을할수있을까
4.1.2WDK
4.2HID에대한소개
4.2.1HID관계도를이해하자
4.2.2HID애플리케이션컬렉션과윈도우장치열거4.2.3HID디스크립터
4.2.4리포트디스크립터
4.2.5아이템의이해
4.2.5.1Input,Output그리고FeatureReport
4.2.5.2ReportSize,ReportCount
4.2.5.3Usage,Usage페이지
4.2.5.4LogicalMinimum,LogicalMaximum.
4.2.5.5UsageMinimum,UsageMaximum
4.2.5.6PhysicalMinimum,Maximum,UnitExponent,Unit
4.2.5.7리포트ID
4.2.6아이템의인코딩
4.2.6.1짧은인코딩
4.2.6.2긴인코딩
4.2.7리포트디스크립터의예제
4.3윈도우HID클래스디바이스
4.3.1HIDCLASS.SYS라이브러리와미니드라이버
4.3.1.1미니드라이버AddDevice콜백함수처리부
4.3.1.2미니드라이버IRP_MJ_PNP,POWER콜백함수처리부
4.3.1.3미니드라이버IRP_MJ_INTERNAL_DEVICE_CONTROL콜백함수처리부
4.3.2HID응용프로그램라이브러리
4.3.2.1InputReport,FeatureReport의실제의미
4.3.2.2응용프로그램에서HID클래스사용하기
4.4디바이스드라이버실습
4.4.1드라이버샘플빌드와설치
4.4.1.1DEVCON.EXE빌드하기
4.4.1.2HIDSAMPLE샘플드라이버빌드
4.4.1.3HIDSAMPLE드라이버설치하기
4.4.2응용프로그램테스트
4.4.3응용프로그램주요설명
4.4.3.1HID애플리케이션컬렉션을검색하는부분
4.4.3.2검색된애플리케이션컬렉션을열어서정보를가져오는부분
4.4.4드라이버주요소스설명
4.4.4.1리포트디스크립터를정의하는부분
4.4.4.2HID디스크립터를정의하는부분
4.4.4.3DriverEntry
4.4.4.4HIDSAMPLE_AddDevice
4.4.4.5IRP_MJ_POWERIRP명령어콜백함수
4.4.4.6IRP_MJ_PNPIRP명령어콜백함수
4.4.4.7IRP_MJ_INTERNAL_DEVICE_CONTROLIRP명령어콜백함수
4.5HID하위프로토콜
4.5.1HIDOverUSB
4.5.1.1열거
4.5.1.2HID리퀘스트
4.5.2HIDOverI2C
4.5.2.1열거
4.5.2.2HID리퀘스트
4.6맺음말

5장.I2C드라이버

5.1I2C클라이언트드라이버를만들기위해알아야하는것
5.1.1I2C클라이언트드라이버를만들어서무엇을할수있을까
5.1.2WDK
5.2I2C에대한소개
5.2.1I2C관계도를이해하자
5.2.2I2C기본통신규약
5.3윈도우와I2C버스.
5.3.1ACPI와I2C
5.3.1.1DSDT
5.3.1.2I2C호스트컨트롤러,I2C터치패드를서술하는DSDT예시
5.3.1.3ACPI이름오브젝트와윈도우
5.3.2SPB프레임워크
5.3.2.1I2C호스트컨트롤러드라이버(SPB컨트롤러드라이버)
5.3.2.2I2C클라이언트드라이버(SPB주변디바이스드라이버)
5.4디바이스드라이버실습
5.4.1솔루션빌드
5.4.2설치파일분석
5.4.3응용프로그램,드라이버주요소스분석
5.4.3.1driver.cpp의DriverEntry
5.4.3.2driver.cpp의OnDeviceAdd
5.4.3.3device.cpp의OnPrepareHardware
5.4.3.4device.cpp의OnIoDeviceControl
5.4.3.5peripheral.cpp의SpbPeripheralWriteRead내부함수
5.5참고사이트정보

6장.오디오디바이스드라이버

6.1오디오드라이버를만들기위한준비
6.1.1오디오드라이버를만들어서무엇을할수있을까
6.1.2WDK
6.1.3내가부족한것은무엇인가
6.1.3.1프로그래밍언어에대한경험(C언어)
6.1.3.2프로그래밍언어에대한추가적인경험(

출판사 서평

★이책에서다루는내용★

■WDM(WindowsDriverModel),WDF(WindowsDriverFramework)두가지윈도우드라이버개발모델
■ATA/SATA인터페이스에대한소개와드라이버개발방법
■SCSI미니포트,Storport미니포트윈도우드라이버개발방법
■PCIe(PCIExpress)버스상에서운용되는NVMe(NonVolatileMemoryExpress)스토리지드라이버개발방법
■멀티터치스크린,멀티터치패드와HID인터페이스에대한소개및드라이버개발방법
■I2C버스를사용하는하드웨어를위한윈도우8디바이스드라이버개발방법
■윈도우표준오디오모델인UAA(UniversalAudioArchitecture)에대한이해및오디오드라이버개발방법
■오디오/비디오스트림을동시지원하는AVStream모델
■윈도우가지원하는64비트커널을위한커널패치가드(KernelPatchGuard)
■PCIe인터페이스에대한소개및MSI(MessageSignalInterrupt)인터럽트를다루는방법

★이책의대상독자★

이책을제대로활용하려면가능하면C언어사용에익숙해야한다.또한윈도우시스템에대한관심과특히윈도우커널에대한기본지식이있어야책에서제공하는정보를최대한얻어갈수있다.
멀티터치,디스크(스토리지),오디오,PCIe등의하드웨어를다루고있거나다뤄야하는독자들이라면이책을통해매우유용한정보를얻을수있다.