Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

1

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

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

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

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

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

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

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

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

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

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

12 XP DDK 구조

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

14 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

15 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

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

17 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));

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

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

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

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

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

23 디바이스 설치 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

24 디바이스 설치 OS 버전 – XP solution 예 2 [Manufacturer] “Foo Corp” = FooMfg, NT.6.0, NTx86.5.1 [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

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

26 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

27 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

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

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

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

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

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

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

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

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

36 © 2001 Microsoft Corporation. All rights reserved.

37


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

Similar presentations


Ads by Google