Windows 디바이스 드라이버 Update 정 우식 개발부장 ㈜열린기술 내용  드라이버 개발자 입장에서 본 XP  XP DDK Update  64- 비트 이슈  디바이스 설치  USB 드라이버 스택  디버깅 및 기타 도구들.

Slides:



Advertisements
Similar presentations
AhnLab V3 Zip 2.0 Copyright (c) AhnLab, Inc All rights reserved. AhnLab V3 Zip 2.0 글로벌 표준압축 유틸리티 비즈니스 매너의 시작.
Advertisements

1) 지금 IBM 전용 PRINTER 를 LAN 에서 사용할 수 있습니까 ? 예 ! 여기 DPX-5250R 이라는 IBM INTERFACE MODULE 이 있습니다. LAN 에서 PC 나 PRINT SERVER 를 통해 DATA 출력 지원을 합니다. 2) 그럼 UNIX.
윈도우 조 이충진, 김창완, 김현규, 최준영, 전병주, 송기훈. 목차  윈도우 최준영, 송기훈  윈도우 95 - 김현규, 이충진  윈도우 98 - 강창완, 전병주.
Wireless Mobile Resource Management 1. 시스템 개요 2. 시스템 소개 3. 시스템 Back-up PLAN 4. 시스템 주요 Reference C.O.N.T.E.N.T.S.
LGU+ 모바일고객센 터 Magazine LGU + 모바일 CVC Vol 세계 최초, 최고의 고객센터 대표님과 함께한 우수 상담사 대상 사외 교육훈련.
© 2012 생능출판사 All rights reserved 매니페스트 파일 적재목록 ( 적하목록 )
Universal Plug And Play 를 이용한 홈 네트워크의 구현 게임 & 멀티미디어학과 전영균.
Windows XP Home Networking 장 석 준 고객 사업본부 ㈜마이크로소프트.
Chapter 11. Windows Server 2000 & 2003 Windows NT 기반의 NOS 인 Windows Server 2003 에 대해서 일반 사용자가 아닌 관리자 입장에서 알아두 어야 할 몇가지 기능들에 대해서 설명하고 있다.
J-Stream part1 (Software streaming service) ▪ 팀명 : Jukdori ▪ 팀원 : 16 th 윤병호 (PL) 15 th 송인규 16 th 김영진.
/11 CUDA 를 이용한 병렬 프로그래밍 DirectX 3D 를 이용한 3D 프로그래밍
Copyright © 2006 by The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill Technology Education Copyright © 2006 by The McGraw-Hill Companies,
시스템 운영계획 OS 설치 및 드라이버 설치 패치 및 업그레이드 보안설정
IT 패러다임을 바꾼 디지털 리더 한국대학생IT경영학회 교육팀 차헌영 가장 성공한 IT기업은?
안 보여 줄끼가? 소프트웨어 프로젝트 1 – 제안서 발표 피바다 (A6)조 발표자 : 조기수.
Efl을 이용한 타이젠 네이티브 웨어러블 앱 만들기
[6] 자주 묻는 연말정산 Q & A.
WHAT IS ANT ? (TI CC2570, CC2571) Jae-hoon Woo.
소프트웨어와 운영체제.
Dakuo’s Lecture.
제 2장 컴퓨터 구조.
Hide Process
신개념 이동형 옥외광고 매체제안서.
마이크로소프트 64bit 윈도우 컴퓨팅 구조와 로드맵
삼성전자 사외업무지원시스템 사용자 매뉴얼 v4.1.
Windows CE 메모리 아키텍처 및 관리 서진호
Windows CE 5.0 Networking Internals
오목게임 W32 로봇시스템제어(하) GROUP 7 노성동, 하선웅, 김관준
윈도우 커널모드 드라이버 64비트 포팅 월간 마이크로소프트웨어 김성현
제 1 장. JAVA란 작성자 : NLIP.
Copyright © SG Research Institute Inc. All rights reserved.
윈도우 디바이스 드라이버 청강문화산업대 컴퓨터정보과 이 봉 석 교수.
PCI가 어렵울 거라는 생각을 지금부터 버리도록 합시다.
Ch 14. System Thread.
Chapter 11. Raw 소켓.
OpenGL Project (3D 움직이는 자동차)
제8강 PC정비사 1급(필기) Lee Hoon Copyright(c) 2008 LeeHoon All rights reserved.
head data link data link data link NULL a b c
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
Setup Oracle VirtualBox For Penetration Testing 명지대학교 홍석원
GVA2000 Student Manual Tel: 02)
철강 대리점 시스템 철강 대리점 시스템 대표 : 김용배 주소) 서울 강동구 명일2동 전화) H.P) 메일)
인터넷정보관리사 3급(필기/실기) 제20강 Lee Hoon
ASP.NET Mobile Controls
Ch 13. Windows 관리 기구.
Chapter 12. 직렬 통신과 무선 프로토콜.
ELAND BSC CKO실.
자동 업데이트 솔루션 사용 설명서 ZeronsoftN Zeroback Solution
Platform Builder 기본 사용법
Volume Licensing Service Center
붓다누리프로그램 소개 붓다누리 ㈜ 인천시 부평구 Tel Hp
제13장 전처리 및 기타기능.
Rain drop v1.o 기공소 운영관리 프로그램 COPYRIGHT 2015 TEAMK ALL RIGHTS RESERVED
Ch 6. Initialization and Cleanup Routines
U+ Biz 그룹웨어_사용자.
산학협력단 연구지원금 시스템 사용자 매뉴얼 Copyrightⓒ2014 UOSICF. All Rights Reserved. 1.
기업고객사업본부 / 기술사업부 한국마이크로소프트
웹 성능 및 부하 테스트(Load Test)를 통한 소프트웨어 품질 향상방안
Windows7 – 글꼴, 시스템, 장치관리자, 전원옵션
사용자매뉴얼 V3.3 수입물품 유통·이력관리시스템 단계 구현 액티비티 시스템사용교육
WinCE Device Driver 실습 #2
Byte Alignment ㈜ 웰컴정보시스템 김 정 은.
동기화 문제 디버깅하기 사람이 컴퓨터 보다 아름다워♪ Advanced Windows Debugging Chapter.10
양궁게임 게임기획서 1차안 2011/01/17 최가운.
제16강 입출력시스템 1.
사례 5 – 마이크로소프트의 학습조직문화.
아두이노 프로그래밍 4일차 – Part1 모바일 로봇 강사: 김영준 목원대학교 겸임교수
하나샵에서 ALL KILL 기획서 하나샵 E-커머스팀 양희연.
WinCE Device Driver 실습 #2
V. I. P 유년부 예배.
Presentation transcript:

Windows 디바이스 드라이버 Update 정 우식 개발부장 ㈜열린기술

내용  드라이버 개발자 입장에서 본 XP  XP DDK Update  64- 비트 이슈  디바이스 설치  USB 드라이버 스택  디버깅 및 기타 도구들

드라이버 개발자가 보는 XP  NT 버전 : Win2K  WinXP  OS: 5.0.  5.1  WDM: 1.1  1.2  커널의 안정성 및 신뢰성 향상  대폭적으로 개선된 드라이버 개발 환경  새로운 DDK  Verifier 의 기능 향상  디버깅 및 기타 도구들

커널 개선 사항  새로운 Cancel Queue  취소 작업과 관련된 기능을 커널에서 처리  예제 : \src\general\cancel  저 메모리 상황에서의 성능 개선  “must succeed” 형태의 메모리 할당 금지  ExAllocatePoolxxx, MmGetSystemAddressForMdlSafe

커널 개선 사항  시스템 복구  Sr.sys: 파일 시스템 필터 드라이버  IFS Kit 에 새로운 지원 루틴 포함  새로운 DMA 기능  DEVICE_DESCRIPTION_VERSION2  CalculateScatterGatherList, BuildScatterGatherList, BuildMdlFromScatterGatherList

커널 개선 사항  추가된 DDIs  IoSetCompletionRoutineEx  IoFreeErrorLogEntry  IoIs32bitProcess, …  기타 커널 개선 사항  Logical Prefetcher – 신속한 부트  시스템 PTE 수의 증가  레지스트리 – 사용 공간 확대, 신속한 Query  Headless Support

XP DDK Update  내용 및 구성면에서 개선된 도큐먼트  Stand-alone 개발 툴  VC++ 필요 없음  VC7 컴파일러 포함  64- 비트 개발 환경 지원  새롭게 추가되고 기능이 개선된 도구들  Driver Verifier  ChkINF, GenINF  PnP 테스트 유틸리티, Sleeper, …

XP DDK Update  힌트  대상 플랫폼에 맞는 DDK 선택  WinNT4 – NT4 DDK  WinXP DDK – WinXP, Win2K, WinMe, Win98 WDM  Win2K SP2 의 신뢰성 있는 드라이버 개발을 위해서는 WinXP DDK 사용 또는 참조

XP DDK Update  힌트  Set DEPRECATE_DDK_FUNCTIONS=1  폐기된 DDI 를 사용하는 경우 컴파일시 경고 메시지  \test\xxx.c(111): error C4996: ‘RtlExtendecIntegerMultiply’ was declared deprecated  “Not Supported” – 향후에 정상적으로 작동하지 않을 것임  Supported/unsupported 여부가 특별히 명시되지 않은 내용 – 아직 충분이 테스트되지 않은 기능들

XP DDK Update  XP DDK 얻는 방법  MSDN  XP DDK Suite 구입  웹을 통한 다운로드 지원계획 없음 (‘ 현재 ’)  Toaster 샘플  %winddk%\src\general\toaster  가상의 버스, function, 필터 드라이버  Power.c – bug fixed!

XP DDK 구조

64 – 비트 이슈  WOW64 thunking layer  Win64 시스템에서 32- 비트 응용 프로그램 구동  Win32 함수 호출시, pointer-precision 파라미터를 fixed-precision 으로 변경하여 Win64 커널에 전달 – ‘thunking’  32- 비트 드라이버는 Win64 시스템에서 지원되지 않는다.

Thunking 의 필요성 HANDLE Event UNICODE_STRING ObjectName USHORTLength USHORT Maximum_Length PWSTRBuffer 32 bit (4 bytes) 16 bit (2 bytes) 16 bit (2 bytes) 32 bit (4 bytes) 32- 비트 : sizeof(DRIVER_DATA) = 12 HANDLE Event UNICODE_STRING ObjectName USHORTLength USHORT Maximum_Length Structure Padding PWSTRBuffer 64 bit (8 bytes) 16 bit (2 bytes) 16 bit (2 bytes) 32 bit (4 bytes) 64 bit (8 bytes) 64- 비트 : sizeof(DRIVER_DATA) = 24

Thunking 의 필요성 typedef struct _DRIVER_DATA32 { VOID *POINTER_32Event; UNICODE_STRING32ObjectName; } DRIVER_DATA32; POINTER_32 Event UNICODE_STRING32 ObjectName USHORTLength USHORT Maximum_Length ULONGBuffer 32 bit (4 bytes) 16 bit (2 bytes) 16 bit (2 bytes) 32 bit (4 bytes) 64- 비트, 32- 비트 : sizeof(DRIVER_DATA32) = 12

64- 비트 포팅 체크 리스트  Win32 응용 프로그램의 I/O 요청  DeviceIoControl 에서 pointer-precision 변수가 포함된 구조체의 주소를 InputBuffer 또는 OutputBuffer 의 인수로 사용하는 경우  IoIs32bitProcess DDI 사용 thunking 구현 #if defined(_WIN64) if (IoIs32bitProcess(Irp) { DRIVER_DATA32 Buffer32;... } else { #endif

64- 비트 포팅 체크 리스트  Structure Alignment  struct xxx { DWORD NoOfPointers; PVOID Pointers[1]; }  Malloc(sizeof(DWORD)+100*sizeof(PVOID));  DWORD 뒤에 alignment 를 위해 4 byte 를 추가로 padding  Malloc(FIELD_OFFSET(struct xx, Pointers) +100*sizeof(PVOID));

64- 비트 포팅 체크 리스트  포인터 연산  -1 != 0xFFFFFFFF  ULONG len; Len = ptr2 – ptr1;  포인터를 ULONG, DWORD 등의 형태로 캐스팅하지 않는다.

디바이스 설치 64- 비트  새로운 64- 비트 플랫폼 확장자 사용 -.ntia64  기존의 다른 확장자와 동일한 사용 방법 -.ntia64,.nt  IA64 시스템의 INF 파일 탐색 순서 .ntia64 .nt  undecorated

디바이스 설치 Include 와 Need  설치하려는 드라이버가 Windows “in- box” INF 파일에 의해 생성되는 드라이버 / 레지스트리 설정 등의 내용에 영향을 받는 경우 …  include= 와 needs= 지시자 사용  [ToasterFilter.NT] Include=toaster.infNeeds=Toaster_Device.NT

디바이스 설치 OS 버전  OS 버전에 따른 INF 파일의 구분  기존 버전의 OS 에 INF 파일이 설치되는 것을 방지

디바이스 설치 OS 버전 – XP solution  Decorated [Model] 섹션  %mfg name%=models-section-name [,TargetOsVersion] [,TargetOsVersion]…  NT[Architecture][.[OSMajorVersion] [.OSMinorVersion][.[ProductType] [.SuiteMask]]]]

디바이스 설치 OS 버전 – XP solution 예 1 [Manufacturer] “Foo Corp” = FooMfg, NT….0x80, NT “ABC Inc.” = ABCMfg, NTia64, NTx86 [FooMfg.NT….0x80];XP & later Data Center [FooMfg.NT];All other XP & later [FooMfg];Windows 2000 [ABCMfg.NTia64];XP & later ia64 [ABCMfg.NTx86];XP & later x86 [ABCMfg];Windows 2000

디바이스 설치 OS 버전 – XP solution 예 2 [Manufacturer] “Foo Corp” = FooMfg, NT.6.0, NTx [FooMfg.NT.6.0]; NT 6.0 과 그 이후 버전을 지원 ; Empty model section 하지 않음 [FooMfg.NTx86.5.1];NT 5.1 및 이후 버전 ( 단, NT 6.0 이후는 지원하지 않음 ) 이후는 지원하지 않음 ) [FooMfg];Win9x/NT4/2K 는 지원하지 않음 ; Empty model section

디바이스 설치 멀티펑션 디바이스  멀티펑션 디바이스는 펑션별로 하나씩, 여러 개의 서로 다른 Devnode 를 설치  서로 다른 디바이스 셋업 클래스에 속하므로 복수의 INF 파일 필요  CopyINF  [DDInstall] CopyINF=filename1.inf [,filename2.inf]…

USB 드라이버 스택 Win2K USB Hub (Bus) Driver usbhub.sys USB Client Device Driver Host Controller Driver usbd.sys Miniport Driver uhcd.sys Miniport Driver openhci.sys

USB 드라이버 스택 WinXP USB Client Device Driver USB Generic Parent Driver usbccgp.sys USB Hub (Bus) Driver usbhub.sys USB Client Device Driver USB Client Device Driver Host Controller Driver usbport.sys Miniport Driver usbuhci.sys Miniport Driver usbohci.sys Miniport Driver usbehci.sys

디버깅 및 기타 도구들 Driver Verifier  Enhanced I/O Verification  DMA Verification  Deadlock Detection  SCSI Verification

디버깅 및 기타 도구들 PnP 드라이버 테스트  %WinDDK%\tools\pnpdtest  PnP IRP 를 전송하여 드라이버의 작동 상태를 검사  검사 항목  Removal  Surprise Remove  Rebalance  Stress  Demo

디버깅 및 기타 도구들 DeviceTree  %WinDDK%\tools\devicetree  시스템에 설치 되어 있는 모든 드라이버와 PnP 디바이스 스택의 관계를 보여 주는 도구  드라이버 뷰 / PnP 뷰  Demo

디버깅 및 기타 도구들 전원 관리  %WinDDK%\tools\acpi\pmte %WinDDK%\tools\acpi\speeper  전원 상태 변경 검사  Demo

디버깅 및 기타 도구들 DevCon  %WinDDK%\tools\devcon %WinDDK%\src\setup\devcon  텍스트 모드 디바이스 콘솔  장치관리자의 역할을 수행  Setup API, CfgMgr32 API 사용  Demo

디버깅 및 기타 도구들 디버깅  IEEE 1394 포트를 사용한 Host/Target 시스템 연결  드라이버 파일의 맵핑  커널 모드 드라이버 파일을 Host 에서 제공  많은 확장 명령어의 추가 및 버그 fix

디버깅 및 기타 도구들 디버깅 힌트  Host/Target 시스템 연결  Host – free build, 디버거 (WinDbg, Kd)  Target – checked build  Driver Verifier 가동 상태에서 테스트  모든 코드 / 실행 패쓰에 대해서 테스트  pnpdtest, sleeper  emulator

Windows 디바이스 드라이버 Update Wrap up “ 마이크로소프트는 당신이 드라이버 개발 작업을 성공적으로 수행할 수 있기를 * 진심으로 * 원하고 있습니다.”

© 2001 Microsoft Corporation. All rights reserved.