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

 

驱动程序分层分离概念_总线驱动设备模型

上一节讲了input子系统,主要思想就是把硬件相关的部分和纯软件部分分开来,由input.c把两部分连接起来。并由它向应用层提供接口,这样硬件相关的部分再怎么改,只要符合这套规范,应用程序都不需要变,...
  • ymangu
  • ymangu
  • 2014年09月27日 16:46
  • 1034

Windows CE驱动程序分类

Windows CE嵌入式开发入门--基于Xscale架构 傅曦,陈黎等 人民邮电出版社   第九章  Windows CE BSP及驱动程序结构分析 9.1 Windows CE驱动程序结构...
  • chendesheng1988
  • chendesheng1988
  • 2013年07月02日 20:47
  • 651

USB驱动程序之USB总线驱动程序学习笔记

USB总线驱动程序的作用 1. 识别USB设备 1.1 分配地址 1.2 并告诉USB设备(set address) 1.3 发出命令获取描述符 描述符的信息可以在include\linux\usb\...
  • qingkongyeyue
  • qingkongyeyue
  • 2016年11月27日 11:39
  • 768

windows CE5.0模拟器 可在PC上运行的WINDOWS CE5.0下载(转载)

蚁言送给新手朋友.免安装绿色版,最好用的分辨率可调CE5.0模拟器  码字很劳累,转贴请注明作者ZH1H2H3或蚁言并保持帖子的完整.  先看几个吧,别的分辨率的就不上图了 看到网上朋友谈论在PC...
  • cruelchen
  • cruelchen
  • 2013年07月12日 10:50
  • 1223

Windows驱动开发之第一个驱动程序

一个简单的驱动程序
  • enjoy5512
  • enjoy5512
  • 2016年07月05日 10:18
  • 1116

USB驱动程序之USB总线驱动程序

USB主机控制器分为三种,一种是UHCI  OHCI  EHCI UHCI规范:intel阵营  告诉你怎么做USB这些东西 适用于低速和全速USB设备  低速一般称为USB1.1 全速一般称为USB...
  • fight_onlyfor_you
  • fight_onlyfor_you
  • 2017年03月14日 21:56
  • 433

Linux驱动USB驱动程序-USB总线驱动程序

USB主机控制器分为三种,一种是UHCI  OHCI  EHCI UHCI规范:intel阵营  告诉你怎么做USB这些东西 适用于低速和全速USB设备  低速一般称为USB1.1 全速一般称为...
  • PZ0605
  • PZ0605
  • 2017年07月01日 16:37
  • 433

大话USB驱动之总线驱动程序

总线驱动是不用改的,内核都帮我们做好了,为了了解整个USB驱动的体系,我们来分析一下总线驱动程序。...
  • u013584315
  • u013584315
  • 2014年05月06日 16:54
  • 2429

Windows CE下驱动程序开发基础

作者:SUKHOI27SMK 转自:http://blog.csdn.net/sukhoi27smk/article/details/8299079 Windows CE下的串口驱动程序能够处...
  • whw8007
  • whw8007
  • 2014年01月20日 21:22
  • 378

如何:在不使用 ActiveSync 的情况下连接到 Windows CE 设备

当 ActiveSync 不可用时,Visual Studio 不会将所需的连接文件自动复制到设备。应使用下面的步骤将这些文件安装到设备上,修改 Visual Studio 连接配置,并建立设备安全。...
  • joji_h
  • joji_h
  • 2016年04月14日 09:12
  • 584
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows CE 5.0:驱动程序---总线驱动程序
举报原因:
原因补充:

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