Windows CE 6.0下的驱动

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Windows CE 6.0 6 0下的驱动 程序新特性
何宗键 “微软——同济”移动与嵌入式中心 同济大学软件学院 济大学软件学院

点击添加MSN机器人小新 为您收听下载MSDN中文网络广播课程加油助力!

本次课程内容包括
• 驱动程序开发简介 • CE 6.0的新内核架构对驱动程序的影响 • 内核模式驱动 VS 用户模式驱动 • 管理缓冲区 • 驱动程序的移植

收听本次课程需具备的条件
• 有过Windows CE 5.0开发经验 发经验 • 最好熟悉驱动程序开发 • 对CE 6内核有所了解
Level 300

驱动程序是什么?
Application Driver Win CE OS
Device
驱动程序是对物理或虚拟设备的抽象

回顾驱动程序的基本知识
z Native vs Stream ¾ 谁加载该驱动程序 (Who) z 单体 vs 分层 分层(MDD / PDD) ¾ 驱动的结构如何设计 (How) z Built In vs 动态加载 ¾ 驱动何时加载 (When) z Miniport、Wave、Touch ¾ 驱动的模型是什么样子 (What) z 内核驱动 vs 用户驱动 (新) 新 ¾ 在哪里加载驱动 (Where)

回顾Windows CE 5的内存架构
2 GB Kernel Space
Kernel
Large Memory Area
Slot 32 Slot 31 : : Slot 7 Slot 6 Slot 5 Slot 4 Slot 3 Slot 2
Slot 1 – ROM DLLs Slot 0 – Execution
Single 2 GB VM for all Processes
31 Slots for Processes
Execution Slot

Windows CE 6.0之后的内存模型
2 GB Kernel Space
Kernel Filesystem y GWES Drivers
2 GB p per Process
Process Code User VM
32 K Process

Windows CE 6中的两种驱动
User r Memor ry Spac ce
ServicesD.EXE Windows CE Shell Application Service 1 Service n Udevice.EXE Udevice.EXE User Mode Driver 1 User Mode Driver n
Marshalling Kernel Me K emory Space
Win32 CE APIs – COREDLL / WINSOCK / COMMCTRL / COMMDLG
KERNEL.DLL
DEVMRG.DLL GWES.DLL Drivers
FILESYS.DLL FSDMGR.DLL
Networking DLLs
OAL
K.COREDLL.DLL

内核态驱动——新瓶装旧酒
z 默认的驱动模式 z 在内核地址空间中运行 z 与内核模式的coredll, coredll k.coredll.dll k coredll dll链接 ¾自动完成,无需更改构建规则 z 效率高 ¾快速访问内核API ¾直接同步访问用户的缓冲区 z 稳定压倒一切! 稳定压倒 切! ¾驱动Crash可能会导致内核崩溃

——

用户态驱动老革命遇到新问题

Reflector服务

用户模式驱动程序加载User Mode Driver Host Process

User Application User Mode Driver 8ActivateDeviceEx XXX_Init(…) 1udevice.exe User Mode Driver User Mode

ActivateDeviceEx CreateProcess(,,Volume Name)10HANDLE Returned 39Kernel Mode 47Device Context XXX_Init forwarded to UM Driver Host

Reflector Service Device Manager 25

6

9HANDLE Parent Bus Driver

110HANDLE Returned

用户模式驱动注册表

p

[HKEY_LOCAL_MACHINE\Drivers\ProcGroup_0003]

"ProcName"="udevice.exe"

"ProcVolPrefix"="$udevice"

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Ethman]

"Prefix"="ETM"

"Dll"="ethman.dll"

"Index"=dword:1

; WZCSVC must be started before ethman

"Order"=dword:2A

; Flags==12 is DEVFLAGS_LOADLIBRARY and DEVFLAGS_LOAD_AS_USERPROC

; Flags12 is DEVFLAGS LOADLIBRARY and DEVFLAGS LOAD AS USERPROC

"Flags"=dword:12

"UserProcGroup"=dword:3 ;// default to group 3

相关文档
最新文档