- 1、本文档共81页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Session 2: Testing Windows CE .NET Alan Page, Microsoft 主要内容 概述 流驱动接口 设备驱动程序架构 USB mouse 驱动开发示例 Windows CE 系统服务 什么是设备驱动程序 “一般”驱动程序开发的理解 必须使用汇编语言对端口进行读写 设备驱动程序是操作系统的一部分,难于开发与调试。 设备驱动程序控制硬件 中断比较难于处理 必须使用汇编语言读写端口 CEDDK.dll 提供 APIs与硬件进行通信 HalGetBusData READ_PORT_UCHAR WRITE_REGISTER_ULONG 对于逻辑设备驱动程序,采用Win32 APIs 从硬件获取数据 设备驱动程序是操作系统的一部分,难于开发与调试 对于UNIX或者是 Windows 9x,设备驱动程序是与操作系统映像连接的,并运行于系统内核态。 对于windows CE,大多数的设备驱动程序运行于用户态,简单的来说就是一个DLL文件。 设备驱动程序控制硬件 大多数的设备驱动程序用来控制硬件。 对于某些硬件,是没有驱动的。 CPU 内存 对于虚拟设备驱动程序,没有物理设备。 文件系统驱动程序 RAM disk 中断有时难于处理 Windows CE提供逻辑中断 (SYSINTRs) 中断由一个用户态的线程进行处理 (IST) 为什么应当写驱动程序? 当我们设计硬件时,就需要提供这一硬件的驱动软件。 硬件OEM厂商不提供基于Windows CE的硬件驱动,但是提供硬件的规格说明。 对于一个现有硬件驱动的功能进行扩展。 驱动分类—整体 Windows CE 整体上将设备驱动分为三种: 内置驱动 总线 流接口 内置驱动 硬件所必须的驱动程序,这些驱动程序通常由设计OEM厂商进行设计。 如:键盘,触摸屏,音频设备。 可能不支持一般的驱动接口,也有可能带有扩展的接口或者完全提供一个用户自定义的接口。 内置驱动通常需要针对具体的操作系统进行小幅改动。 总线驱动 管理系统总线如PCI总线等。PCMCIA与 CompactFlash也在其列。 负责处理总线上硬件的询问,以及资源的分配。 同时也请求设备管理器为总线上的硬件安装适当驱动程序。 驱动分类 – 详细 Audio Drivers Battery Drivers Block Drivers Bluetooth HCI Transport Driver Direct3D Device Driver Interface DirectDraw Display Drivers Display Drivers DVD-Video Renderer IEEE 1394 Drivers Keyboard Drivers Notification LED Drivers Parallel Port Drivers PC Card Drivers Printer Drivers Serial Port Drivers Smart Card Drivers Stream Interface Drivers Touch Screen Drivers USB Drivers 驱动的加载过程 大多数的设备驱动由设备管理器(Device.exe)进程在系统启动时进行加载。 另一方面,其中一部分内置驱动程序由GWES.exe进行加载。这些驱动包括显示器驱动 (DDI.dll)、键盘驱动、鼠标驱动、触摸屏驱动等。 驱动的加载过程 当Device.exe对设备驱动程序进行安装时将在注册表的[HKEY_LOCAL_ MACHINE]\Drivers项下检查一个字符串,其值为 RootKey,传统地,其名字为 BuiltIn 。 然后设备管理器在进行初始化时使用注册信息检查器为它需要安装的各个驱动读取值为RootKey的键。 驱动的加载过程 驱动的加载过程 安装DLL,给每一个驱动创建一个Active 键,然后调用ActivateDevice 或者 ActivateDeviceEx将DLL注册为系统中的一个设备驱动程序。 ActivateDevice在 [HKEY_LOCAL_MACHINE\Drivers\Active下创建一个新的键值。 驱动的加载过程 驱动加载API 设备驱动程序也能通过应用程序进行手动的安装,这是ActivateDeviceEx的一个首选的功能。 安装驱动一个更老的方法是使用RegisterDevice 与 DeregisterDevice 主要内容 什么是流接口 流接口驱动包括所有提供流接口函数的驱动程序,不管由这个驱动控制的设备是什么类型。 典型的流接口驱动程序有: 文件系统驱动 (iost
文档评论(0)