Windows CE 5.0:驱动程序---总线驱动程序

转载 2007年09月14日 17:32:00

 

 

发布日期: 11/1/2004 | 更新日期: 11/1/2004

总线驱动程序是加载驱动程序的任何软件。总线驱动程序具有下列一个或多个职责:

管理物理总线,例如 PC 卡、USB 或 PCI。

在总线驱动程序没有直接管理的物理总线上加载驱动程序。

这方面的一个示例为 Bus Enumerator,它是一个加载内置驱动程序和 PCI 总线驱动程序的总线驱动程序。

直接调用 ActivateDeviceEx 以加载设备驱动程序。

所加载的设备驱动程序可能通过另一个设备驱动程序来间接管理硬件。

要允许用 CreateFile 访问设备驱动程序,总线驱动程序应当向 Device Manager 提供足够的信息,以便创建与总线相关的名称以及启用设备句柄。它们还应当提供足够的信息,以便向驱动程序和应用程序标识它们自己以进行总线控制操作。总线驱动程序可以为驱动程序指定与总线相关的名称,但是为了使驱动程序和应用程序能够访问总线驱动程序以进行总线控制操作,总线驱动程序必须公开流接口。$bus 命名空间提供了一种在设备上执行与典型设备操作不同的操作的方式。通过控制对 $bus 命名空间的访问,还可以为系统提供安全性。

启用对使用 $bus 命名空间的驱动程序的访问

1.

在驱动程序的 IClass 注册表项中公布 DMCLASS_PROTECTEDBUSNAMESPACE GUID。

如果驱动程序没有公布 DMCLASS_PROTECTEDBUSNAMESPACE,则设备管理器无法知道驱动程序能够区分对设备的正常访问和系统访问。必须将 DMCLASS_PROTECTEDBUSNAMESPACE 与驱动程序的 $bus 接口相关联。

如果驱动程序公布 DMCLASS_PROTECTEDBUSNAMESPACE 接口,则用 dwAccess 参数中的 DEVACCESS_BUSNAMESPACE 位组来调用驱动程序的 XXX_Open (Device Manager) 入口点。驱动程序必须跟踪用该位组打开了哪些句柄,以便它可以适当地接受或拒绝 IOCTL 和其他操作。

即使驱动程序没有公布 DMCLASS_PROTECTEDBUSNAMESPACE,它的 $bus 名称仍然可用来与驱动程序的父总线驱动程序进行通讯,以获得诸如加载、卸载和电源管理之类的服务。

2.

通过在 IClass 注册表项值之后添加 =%b 来公开 $bus 装入点。

驱动程序的 IClass 注册表项值必须在 IClass 注册表值之后具有 =%b。下面的注册表项示例说明了在何处放置 =%b。

"IClass"=multi_sz:"{B3CC6EBA-5507-4196-8E41-2BF42E4A47C9}=%b","{6F40791D-300E-44E4-BC38-E0E63CA8375C}=%b"

有关装入点和设备文件名称的详细信息,请参阅 Device File Names

总线驱动程序命名约定

总线驱动程序为从属驱动程序提供它们自己的总线名称,并且为最近加载的驱动程序提供总线名称。通常,总线名称应当派生于总线类型、总线编号和其他总线特有标识符(例如,设备号和功能号)。总线驱动程序命名约定假设特定类型的所有总线都具有唯一的编号。当该标识符组合唯一时,不会发生名称冲突。例如,Bus Enumerator 的不同调用应当视为不同的总线并分配不同的总线编号。

总线编号与 INTERFACE_TYPE 枚举兼容。可以为硬件添加新的标识符。

通常,总线名称与基础总线结构相关。如果应用程序枚举总线上的设备驱动程序,则这可以简化系统结构。总线名称与流接口名称不同,因为并非所有设备驱动程序都向应用程序公开流接口。但是,总线名称确实必须与基础总线相关。例如,应用程序可能通过调用 ActivateDeviceEx 直接加载设备驱动程序。这些应用程序本身可能没有公开总线接口,但是应用程序加载的设备驱动程序可能公开总线接口。

对于应用程序加载的驱动程序而言,驱动程序的流接口名称用来生成唯一的总线名称。例如,如果应用程序加载“COM1:”或“/$device/COM1”,则它的总线名称会是“/$bus/COM1”。这是一种安全的方法,因为流接口名称在整个系统中唯一。

有关设备文件名称的信息,请参阅 Device File Names

总线驱动程序注册表条目

设备管理器将总线信息与驱动程序的 fsdev_t 结构(该结构是设备管理器所固有的)相关联。下表显示了总线驱动程序在 Active 注册表项中放置的信息。

注册表子项 说明

BusDriver

总线驱动程序的总线名称。假设为 "/$bus"。示例值有 "PCI_0_1_0"

BusName

驱动程序正在加载的总线名称。示例值有 "PCMCIA_0_1_1"。不同的总线可能采用不同的方式组织名称。例如,USB HID 设备可能将该名称组织为 "HID_interface_collection"

有关设备管理器注册表项的信息,请参阅 Device Manager Registry Keys

总线驱动程序电源回调

总线驱动程序 IST 没有机会来卸载驱动程序以便防止电源回调调用。这是因为线程在电源回调期间不运行。对于可安装的 ISR 而言,电源回调可能试图在硬件继续执行时访问丢失的设备。要防止电源回调访问丢失的设备,父总线上的设备驱动程序可以调用 IOCTL_BUS_IS_CHILD_REMOVED 以确定它的设备是否丢失。电源回调可以调用该 IOCTL。有关该 IOCTL 和其他相关 IOCTL 的详细信息,请参阅 CEDDK Bus Access IOCTLs

有关挂起和恢复电源回调的信息,请参阅 Suspend and Resume Power Callbacks

另请参阅

Driver Architecture | CEDDK Bus Access Reference

 

相关文章推荐

如何在 Windows CE 5.0 中开发和测试设备驱动程序

发布日期 : 2005-3-31 | 更新日期 : 2005-3-31 Mike Hall Microsoft 适用于: Microsoft Windows CE version 5.0 摘...

windows CE下的USB设备驱动程序分析 .

随着USB设备的不断增加,我们这些开发人员也就多了对USB设备进行驱动程序开发的工作。但是对于很多初学者来说,存在以下三个困难:      一是对WinCE的驱动程序结构了解得太少,没办法得心应手的...
  • js_gary
  • js_gary
  • 2012年02月09日 17:21
  • 1313

Windows CE 6.x驱动程序的新特性

原文地址::http://space.itpub.net/16910633/viewspace-504206 好久又没有更新博客了。这次发表一篇古文,当然不是古典文言文,只是已经在我的硬...

Windows CE操作系统的触摸屏驱动程序模型

欢迎加入Wince技术讨论群QQ#326444254 本文介绍了Windows CE操作系统的触摸屏驱动程序模型,详细阐述嵌入式系统中电阻式触摸屏的Windows CE驱动程序的设计和实现方法。 ...

使用CETK测试驱动程序 (windows Embedded CE Test KIT)

使用CETK测试驱动程序             CETK 是微软提供的用于测试基于其 WINDOWS CE 平台开发的驱动程序的测试工具,对于开发稳定可靠的驱动程序很有帮助,所以现在很多大公...

Windows CE下的USB设备驱动程序开发实例(一)

作者:bjtuzdq 转自:http://blog.csdn.net/bjtuzdq/article/details/3856872 下面举个简单的例子来详细说明一下驱动程序的开发过程...
  • whw8007
  • whw8007
  • 2013年05月11日 14:37
  • 511

Windows CE下驱动程序开发基础

我想即使读者看过微软的关于驱动开发的培训教材和CE帮助文档中的驱动部分,头脑中仍然一片茫然。要想真正了解驱动程序必须结合一些驱动程序源码,在此我以串口驱动程序(COM16550)中初始化过程为线索简单...
  • zmq5411
  • zmq5411
  • 2011年04月09日 20:45
  • 318

Windows CE下驱动程序开发基础

研究的越多就越感觉自己懂的太少,其实在驱动开发方面我还是个菜鸟,我是想再次抛砖引玉,让做驱动有N年经验的人奉献一点出来,让大家减少一些研究驱动源码而又缺少注释所带来的痛苦。   我想即使读者看过微软...

Windows CE驱动程序分类

Windows CE嵌入式开发入门--基于Xscale架构 傅曦,陈黎等 人民邮电出版社   第九章  Windows CE BSP及驱动程序结构分析 9.1 Windows CE驱动程序结构...

如何开发Windows CE驱动程序

【IT168 专稿】本文将为读者详细介绍驱动程序的实现方法。我们首先介绍驱动程序的任务,并继续探讨缓冲区的处理、内存地址重建及调试域等。   1.驱动程序的任务   实际上,驱动程序的实现方法有多...
  • fgwntg
  • fgwntg
  • 2012年04月20日 11:24
  • 460
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows CE 5.0:驱动程序---总线驱动程序
举报原因:
原因补充:

(最多只允许输入30个字)