读书频道 > 系统 > windows > Windows内核原理与实现
6.5.2 例子驱动程序toaster
2013-05-20 08:25:05     我来说两句 
收藏    我要投稿   

本文所属图书 > Windows内核原理与实现

本书从操作系统原理的角度,详细解析了Windows如何实现现代操作系统的各个关键部件,包括进程、线程、物理内存和虚拟内存的管理,Windows中的同步和并发性支持,以及Windows的I/O模型。在介绍这些关键部件时,本...  立即去当当网订购

Windows DDK提供了大量的驱动程序例子,几乎遍及 Windows 操作系统对设备支持的方方面面。其中 toaster 是一个适合于学习 WDM驱动程序开发的范例[TOASTER]。这一节介绍toaster 例子的组成部分,以及该例中涉及的一些概念和用法。读者可以编译并安装toaster例子中的驱动程序,以加强对Windows I/O系统的认识。

Toaster并非单个设备驱动程序,相反地,它在 Windows 系统中建立一条虚拟总线,并提供一个总线驱动程序、一个功能驱动程序、一组过滤驱动程序,以及一些辅助工具。Toaster例子的代码和数据位于 Windows DDK例子程序安装目录的src\general\toaster 子目录下。表6.3列出了toaster 中的驱动程序以及它们的代码所在的子目录。


 

在Windows 中,设备驱动程序是一个可动态链接的模块(.sys 文件,符合 PE文件格式[PE-SPEC])。然而,为了让驱动程序被加载到系统中并且正确地工作,驱动程序的提供商通常还需要编写必要的配置信息,最基本的是一个.inf 文件,有时候是一些辅助的模块,甚至专门的安装软件。Toaster例子展示的是一条虚拟总线,它提供了一些工具来模拟在总线上插入或拔除设备,同时也提供了相应的信息以便让即插即用管理器能够识别此总线以及总线上的设备。

在Windows Server 2003中,总线驱动程序的安装可以通过控制面板中的“添加硬件向导(Add Hardware Wizard)”来完成。在此安装过程中,除了总线驱动程序,.inf 文件也是必需的。此安装向导除了将.sys 和.inf 文件拷贝到相应的系统目录中以外,也会根据.inf文件中的设置,在注册表中加入相应的键或值,以便即插即用管理器能够列举和管理toaster 总线上的设备。

由于 toaster 并非物理总线,为了模拟在toaster 总线上插入(plug )、拔除(unplug )和弹出(eject )设备的动作,toaster 例子提供了一个模拟工具 enum.exe ,以命令行的方式插入、拔除或弹出一个指定编号的设备。另两个工具toast.exe 和notify.exe 分别演示了如何在应用程序中读写toaster 总线上的设备,以及如何编写能感知 PnP 的应用程序(PnP-aware application)。Notify.exe向即插即用管理器注册,当 toaster 总线上有设备插入或拔除时它可以得到通知,因此,如果它所打开的 toaster 设备要被移除,它就会被通知到,从而可以关闭该设备,以便该设备被从内存中移除。Notify.exe例子程序演示了这一做法。

当即插即用管理器检测到toaster 总线上有新的设备到达(实际上通过“enum.exe –p”命令来模拟)时,它启动Windows 标准的“添加硬件向导”来安装该设备。Toaster例子提供了此安装过程中所需要的文件和代码,包括.inf 文件、一个类安装器DLL(class installer DLL )、一个协安装器 DLL (co-installer DLL ),以及一组用于软件先安装(software-first )的介质(例如 CD)软件包。这里的类安装器 DLL 提供了针对toaster 设备类的安装信息,这只有在定义新的设备类时才是必要的。Toaster的类安装器DLL 提供了一个自定义的图标和属性对话框,当Windows 设备管理器显示toaster 设备时将会使用此图标和属性对话框。协安装器 DLL 执行的是针对特定设备实例的安装任务,toaster 的协安装器DLL 为每个设备提供了一个唯一的友好名称,因而在Windows 设备管理器中,各个toaster 设备有不同的名称。
 
有关 Windows 设备和设备驱动程序的安装过程,以及类安装器DLL 和协安装器 DLL的完整介绍,请参考Windows DDK中关于设备安装的详细文档。关于toaster 例子,读者可以参考例子本身随带的文档和Microsoft 提供的相应文档(toastersamp.doc )。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:6.5.1 设备驱动程序分类
下一篇:6.5.3 驱动程序的代码结构
相关文章
图文推荐
3.4.4 进程生命期管
3.4.2 Windows应用商
3.4.1 Windows应用商
3.4 进程生命期管理
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站