没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
BusEnum: Enabling Finer Control of Device Driver
Loading
总线驱动程序:可以更加出色地控制设备驱动程序加载
Summary 摘要
在这份白皮书中,我们提出了一个提高的 bus enumerator driver 版本,也就是我们所
知道的 BusEnum,它能更好的控制即将被加载的设备驱动程序。传统上来讲,嵌入式的
驱动程序是被 BusEnum 加载进一个独立的线程中的。加强版的 BusEnum 驱动程序允许
在运行一个简单的注册表配置时推迟一些不重要的驱动程序的加载。有了这个增强版的功
能,设备可以随时准备着让用户更快的切换,而其余的一些程序正在后台被加载。这个推
迟加载的功能可能加快设备启动的速度。当一些程序花很长一段时间去运行初始化函数
init()时就会特别的有效。增强版式的 BusEnum 程序在这篇白皮书中,展示它已经被用在
的生产设备中提高了设备的启动时间。
Applies To 运用于
Windows CE 5.0, Windows Embedded CE 6.0, Windows Embedded CE 6.0 R2
Introduction 简介
总路线枚举器,BusEnum.dll 在初始化过程中扫描设备管理器下的注册表和寻找在启
动时加载的其他的总线和装置。在一个独立的线程中,它列举了内部的系统总路线或根总
线下的设备。在它列举完所有根总线下的所有驱动之前父进程不会进入下一个阶段。在设
备准备好用来使用之前父进程会用很长一段时间来初始化所有的驱动程序。尤其是当一些
驱动程序发很长一段时间在驱动的初始化函数上。
有几种可能解决的方案可以用来执行使得一个 Windows Embedded CE 的有推动作
用的设备的启动时间缩短。其中一种方法是,你可以删除一些驱动程序、服务和应用程序
的加载,当你用这个方法时可以让装备随时为用户的交互更快一些。
增强版的 BusEnum 驱动程序可以在总线枚举进程时更精确的控制加载驱动程序,可
以还支持异步的驱动程序加载。它会产生线程去加载被配置负载异步的驱动程序使主要的
枚举线程可以继续下去,它还有一种方法可以同步驱动程序加载线程以免在驱动加载时驱
动之间存在依赖关系。驱动程序还可以通过一个总线键值来封装在一起并加载成另一个
BusEnum 的实例。驱动程序的配置被 BusEnum 加载并保存在注册表中,这是适应于广
泛用户的灵活的。
现有的 BusEnum 驱动被升级以至可以支持一个新的 DEVFLAGS_LOAD_ASYNC 特
征位和两个可选的驱动程序加载注册表子项:LoadAsyncEvent 和
LoadAsyncDelay。DEVFLAGS_LOAD_ASYNC 是用来控制驱动程序的异步加载的,
LoadAsyncEvent 和 LoadAsyncDelay 是用来同步加载驱动程序的。我们将在白皮书接
下来的章节中描述代码的更改。改进后的 BusEnum 驱动示例代码 BusEnum 2在 Code
Gallery 中下载后可以看到。
有关更多的设备驱动程序加载进程和
BusEnum
驱动程序的信息,看显示在
MSDN
库中的
下列标题:
Bus
ActivateDeviceEx (with descriptions of Driver load $ags)
Example Scenario 案例
我们将用接下来的这个案例贯穿这篇文章:
假设我们有驱动程序 A,B,C,D,E,F,G 要被加载,驱动A和B是非常重要的并且必须先被
加载,在A和B被加载之后我们可以启动一些应用程序或者服务。驱动程序C和D不依赖
于其他的驱动程序,可以在任何时候在任何次序中被加载。驱动E,F,G可以在较晚一
点被加载,但是加载要按这个次序:E-F-G。
Architecture 结构
目前所有 Windows CE 5.0, Windows
Embedded CE 6.0, and Windows Embedded
CE 6.0 R2 嵌入式驱动程序都是通过
BusEnum.dll 在一个独立的线程(Fig. 1)中加载的。
这些驱动程序是被同步加载的。驱动程序A,B,
C在根总线枚举器中的主枚举线程中被加载的。
Figure 1:
同步加载
如果最新定义的 DEVFLAGS_LOAD_ASYNC 位被设置为驱动程序时,增强版的
BusEnum 将产生一个新的异步线程来加载驱动程序,在一个新的异步线程产生后主枚举线
程才继续工作。
Figure 2:
异步加载
在同一时间开始所有的驱动程序加载线程对我们没什么用处,我们希望驱动程序被异
步线程加载时能更好的控制它。因此,介绍两个可选的驱动加载注册码:
LoadAsyncEvent
和
LoadAsyncDelay
。它们将在稍后的
"Driver Loading
Registry Keys"
章节中更详细的讲到。
总线驱动器可以加载其他的总线驱动去枚举其他的总线(比
PCI,USB,PC
卡
,SD
等
等)。我们可以让一个总线驱动器用以不同的总线名自动加载,我们也可以用另一个
BusEnum
实例来展示异步驱动程序的加载。这将使我们可以通过控制
BusEnum
的第二
个例子的加载来控制一组驱动程序的加载。见图
Fig.3
。
剩余14页未读,继续阅读
资源评论
- crawbin2013-09-11很不错,资源能够使用
gomugomuqi
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 自动驾驶-状态估计和定位之Error State EKF.pdf
- STM32F103ZET6+北斗
- 程序流程图的说明及图形示例
- FDN5618P-NL-VB一款SOT23封装P-Channel场效应MOS管
- Go语言基础(变量和基本类型).zip
- 基于CYCLONE2 (EP2C8Q) FPGA 设计PLL锁相环设置时钟Verilog源码Quartus工程文件.zip
- FDN372S-NL-VB一款SOT23封装N-Channel场效应MOS管
- date0425111111111111111111111
- 包含贪心算法的定义及python代码部分实现
- 自动驾驶-状态估计和定位之扩展卡尔曼滤波.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功