책 이미지
책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 윈도우 프로그래밍
· ISBN : 9788960771925
· 쪽수 : 920쪽
책 소개
목차
1장 WDM 디바이스 드라이버 기초
___1.1 디바이스 드라이버 입문
______1.1.1 디바이스 드라이버의 정의
______1.1.2 추상화 인터페이스 제공
______1.1.3 디바이스 드라이버의 계층 구조
______1.1.4 디클래스 드라이버와 벤더 드라이버
___1.2 윈도우 디바이스 드라이버
______1.2.1 윈도우의 간략한 역사
______1.2.2 윈도우 비스타의 커널 구성(2가지 모드)
______1.2.3 윈도우 비스타가 지원하는 3가지 종류의 드라이버
___1.3 디바이스 드라이버 개발 입문
______1.3.1 디바이스 드라이버 실행
______1.3.2 디바이스 드라이버 개발 환경 구축
______1.3.3 WDK 폴더 구성
______1.3.4 WDK를 사용한 빌드 방법
______1.3.5 디버그 환경 구축
______1.3.6 디바이스 드라이버 프로그래밍 입문
______1.3.7 디바이스 드라이버 빌드
______1.3.8 INF 파일 작성
______1.3.9 드라이버 셋업
______1.3.10 INF 파일 구조
______1.3.11 레지스트리와 디바이스 드라이버 관련 설정
___1.4 WDM의 기본
______1.4.1 DriverEntry 함수
______1.4.2 펑션 드라이버에 등록해야 하는 함수
______1.4.3 이벤트부터 하위 드라이버와의 통신
______1.4.4 WDM의 핵이 되는 4가지 구조체
______1.4.5 메모리 할당과 해제
______1.4.6 MajorFunction 작성 방법
______1.4.7 스켈톤 드라이버 작성
___1.5 AddDevice 디바이스 초기화 처리
______1.5.1 AddDevice 함수에 작성해야 할 것
______1.5.2 AddDevice 함수 코드
______1.5.3 AddDevice 함수의 검증
___1.6 플러그앤플레이
______1.6.1 플러그앤플레이 개요
______1.6.2 플러그앤플레이 구현
______1.6.3 플러그앤플레이 검증
___1.7 전원 관리
______1.7.1 전원 관리를 구현하지 않을 경우
______1.7.2 전원 관리 처리의 개요
______1.7.3 전원 관리 처리 구현
______1.7.4 전원 관리 처리 검증
___1.8 애플리케이션에서 디바이스 제어
______1.8.1 애플리케이션에서 열기/닫기
______1.8.2 IRP_MJ_CREATE, IRP_MJ_CLOSE 처리
______1.8.3 애플리케이션에서 읽고 쓰기
______1.8.4 읽기/쓰기 검증
______1.8.5 디바이스 제어 코드 작성법
______1.8.6 디바이스 제어 코드 검증
___1.9 정리
2장 USB 저장 장치의 기초
___2.1 USB의 개요
______2.1.1 USB의 특징
______2.1.2 주소
______2.1.3 4가지 전송 방식과 엔드포인트
______2.1.4 하드웨어 개요
___2.2 USB 프로토콜 계층의 개요
______2.2.1 패킷
______2.2.2 트랜잭션
______2.2.3 각종 전송 데이터
___2.3 USB 디바이스의 구성과 디스크립터
______2.3.1 USB 디바이스의 구성
______2.3.2 리틀 엔디언
______2.3.3 디스크립터
______2.3.4 디바이스 디스크립터
______2.3.5 컨피규레이션 디스크립터
______2.3.6 인터페이스 디스크립터
______2.3.7 엔드포인트 디스크립터
______2.3.8 문자열 디스크립터
______2.3.9 디바이스 쿼리 디스크립터, 기타 속도 컨피규레이션 디스크립터
___2.4 리퀘스트
______2.4.1 GET_STATUS
______2.4.2 CLEAR_FEATURE
______2.4.3 SET_FEATURE
______2.4.4 SET_ADDRESS
______2.4.5 GET_DESCRIPTOR
______2.4.6 GET_CONFIGURATION
______2.4.7 SET_CONFIGURATION
______2.4.8 GET_INTERFACE
______2.4.9 SET_INTERFACE
______2.4.10 클래스 리퀘스트와 벤더 리퀘스트
___2.5 USB 디바이스로서의 동작
___2.6 대용량 저장 장치 클래스
______2.6.1 대용량 저장 장치 클래스의 개요
______2.6.2 CB/CBI 프로토콜
______2.6.3 벌크 전용 프로토콜
______2.6.4 디스크 접근
______2.6.5 SCSI 규격의 개요
___2.7 정리
3장 KMDF 디바이스 드라이버 개발
___3.1 KMDF 개요
______3.1.1 공통 부분의 라이브러리화
______3.1.2 KMDF의 기본 구성
______3.1.3 주요 구조체(오브젝트)
___3.2 KMDF 입문
______3.2.1 KMDF 기본 코드
______3.2.2 KMDF용 INF 파일 작성
______3.2.3 KMDF 드라이버 작성
______3.2.4 KMDF 드라이버 빌드와 실습
______3.2.5 플러그앤플레이와 전원 관리
___3.3 KMDF 드라이버의 기본 오브젝트
______3.3.1 WDF_OBJECT_ATTRIBUTES 구조체
______3.3.2 WDFQUEUE 오브젝트
______3.3.3 WDFREQUEST 오브젝트
______3.3.4 WDFFILEOBJECT 오브젝트
______3.3.5 WDFMEMORY 오브젝트
___3.4 KMDF 드라이버 개발의 기본
______3.4.1 애플리케이션에서 접근
______3.4.2 데이터 읽기/쓰기
______3.4.3 디바이스 제어
___3.5 윈도우의 USB 드라이버 개요
______3.5.1 USB 호스트 드라이버의 구조
______3.5.2 KMDF의 USB 기본 처리
___3.6 USB 디바이스의 초기화와 종료
______3.6.1 KMDF의 USB 초기화, 종료 처리
______3.6.2 컨피규레이션 디스크립터 얻기
______3.6.3 WDFUSBPIPE 오브젝트 얻기
______3.6.4 초기화와 종료 처리 코드
___3.7 USB 디바이스 제어
______3.7.1 디바이스 드라이버의 사양
______3.7.2 DeviceIoControl의 제어 코드 정의
______3.7.3 컨피규레이션 디스크립터 얻기
______3.7.4 컨피규레이션 디스크립터 확인
___3.8 클래스 리퀘스트 발행
______3.8.1 클래스 리퀘스트 발행 순서
______3.8.2 클래스 리퀘스트 발행 코드
___3.9 벌크 전송 처리
______3.9.1 벌크 전송 처리 구현 방법
______3.9.2 벌크 전송 구현
___3.10 SCSI 명령어 처리
______3.10.1 SCSI 명령어 발행
______3.10.2 INQUIRY 처리
______3.10.3 SCSI 명령어 발행 실습
___3.11 미디어 용량 측정
______3.11.1 READ_CAPACITY 처리
______3.11.2 파이프 리셋 처리
______3.11.3 REQUEST_SENSE 처리
___3.12 미디어 리더 프로그램
______3.12.1 MBR
______3.12.2 READ10 명령어로 읽기
______3.12.3 MBR 읽기 실습
___3.13 정리
4장 UMDF 디바이스 드라이버 개발
___4.1 UMDF 드라이버의 개요
______4.1.1 UMDF의 개념
______4.1.2 UMDF의 디바이스 제어 처리 흐름
______4.1.3 UMDF 드라이버 개발을 위한 준비
___4.2 DLL 개발과 설치
______4.2.1 UMDF를 설치하기 위한 INF 파일
______4.2.2 UMDF 드라이버가 DLL인 이유
______4.2.3 DLL 필수 구현 함수
______4.2.4 디버그를 위한 WPP
______4.2.5 UMDF 드라이버 스켈톤 코드
______4.2.6 UMDF 빌드 필수 파일
______4.2.7 DLL 설치
___4.3 UCOM의 기본 동작과 IDriverEntry 인터페이스
______4.3.1 COM 개론
______4.3.2 C++에서의 Interface 정의
______4.3.3 IUnknown 구현
______4.3.4 IClassFactory 구현
______4.3.5 MIDriverEntry부터 디바이스 클래스의 임시 구현
______4.3.6 COM 모듈의 동작 실습
___4.4 플러그앤플레이와 전원 관리
______4.4.1 UMDF 디바이스 드라이버의 기본 구조
______4.4.2 IPnpCallbackHardware 인터페이스
______4.4.3 IPnpCallback 인터페이스
______4.4.4 디바이스 클래스 구현
______4.4.5 디바이스 클래스 생성 코드
______4.4.6 플러그앤플레이와 전원 관리 실습
___4.5 UCOM 드라이버의 기본 제어
______4.5.1 프레임워크(I/O 관리자)의 리퀘스트에 응답
______4.5.2 애플리케이션의 접근부터 큐 클래스 구현
______4.5.3 디바이스 읽기/쓰기부터 IWDFMemory 인터페이스
______4.5.4 DeviceIoControl 함수로 제어
___4.6 디바이스의 제어 처리
______4.6.1 IWDFIoRequest와 IWDFIoTarget
______4.6.2 IWDFIoRequest::Send 함수로 디바이스 제어
______4.6.3 새 리퀘스트를 작성해 제어
___4.7 USB 디바이스 초기화
______4.7.1 UMDF의 USB 기본 처리
______4.7.2 UMDF 디바이스 드라이버의 USB 초기화
______4.7.3 초기화 처리를 위한 준비
______4.7.4 IWDFUsbTargetDevice 얻기
______4.7.5 IWDFUsbInterface 얻기
______4.7.6 IWDFUsbTargetPipe 얻기
______4.7.7 SetPipePolicy로 통신 설정
______4.7.8 USB 디바이스의 초기화와 종료 처리
______4.7.9 USB 디바이스의 초기화와 종료 처리 구현
___4.8 디바이스 드라이버의 사양
___4.9 컨피규레이션 디스크립터 얻기
______4.9.1 컨피규레이션 디스크립터를 얻는 코드
______4.9.2 OnDeviceIoControl 함수 수정
______4.9.3 컨피규레이션 디스크립터 확인
___4.10 클래스 리퀘스트 발행 처리
______4.10.1 제어 전송 처리 구현
______4.10.2 클래스 리퀘스트 발행 처리 구현
______4.10.3 OnDeviceIoControl 함수 수정
___4.11 벌크 전송 처리
______4.11.1 IRequestCallbackRequestCompletion 인터페이스 상속
______4.11.2 ForwardFormattedRequest와 OnCompletion 함수의 구현
______4.11.3 OnRead와 OnWrite 함수의 구현
______4.11.4 드라이버 빌드와 검증용 윈도우 PC에 복사
___4.12 SCSI 명령어 처리
______4.12.1 INQUIRY 명령어 확인
______4.12.2 READ_CAPACITY 명령어 확인
___4.13 미디어 리더 프로그램
___4.14 정리
부록
A 릴리즈 버전 드라이버 작성
B 64비트 PC에서 동작
___B.1 INF 파일
___B.2 64비트 환경에서 실행하는 방법
C 서명(KMCS)
D GUID 생성
E Driver Install Frameworks API 이용
F 참고 문헌