- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
wince流接口驱动工作原理
wince流接口驱动工作原理
流接口驱动
Windows CE.Net 支持四种驱动模型:本地驱动、流驱动、USB、NDIS。本文只针对流驱动进行介绍。
1 流接口驱动体系结构
流驱动将设备抽象为文件进行操作,它体系结构如图1所示。应用程序使用文件API对设备进行访问,文件API被操作系统转发到FileSys.exe进程中;然后FileSys.exe发现是对设备进行操作,就会把执行交给设备管理器;接着设备管理器根据具体的请求,调用不同的流接口驱动程序中暴露的接口;最终驱动程序负责与硬件交互。
?
图1流接口驱动的体系结构
2 流接口函数
流接口驱动程序是动态连接库,由设备管理程序的特殊程序加载、管理和卸载,与具有单独目的接口的内部驱动程序相比,流接口驱动程序使用同一个接口并调用同一个函数集-流接口函数[4]。Windows CE.Net 系统规定流接口的入口点如表1,对应着直接或者间接调用流接口函数的系统组件或文件API函数。生成一个DLL后,就用设备文件名前缀替换入口点名字中的XXX。
表1 流接口入口函数
流接口函数 功能描述 调用流接口对象 XXX_Init() 初始化设备 系统设备管理器 XXX_Denit() 卸载设备 系统设备管理器 XXX_Open() 打开设备进行读写操作 文件API函数CreateFile() XXX_Close() 关闭设备 文件API函数CloseHandle() XXX_Read() 读取设备数据 文件API函数ReadFile() XXX_Write() 向设备写数据 文件API函数WriteFile() XXX_IOControl() 对设备进行各种操作 文件API函数DeviceIOControl() XXX_Seek() 移动设备数据的指针位置 文件API函数SetFilePointer() XXX_PowerDown() 使设备休眠 系统电源管理器 XXX_PowerUp() 恢复设备电源 系统电源管理器 3 流接口驱动工作原理
在流驱动工作原理中需要包括几个重要的工作实体:硬件、流接口驱动驱动程序、系统注册表、设备管理器、应用程序。整个驱动程序工作原理如图2所示。
?
流驱动的工作顺序如下:
1)加载驱动。在当系统启动时,设备管理器搜寻注册表的HKEY_LOCAL_MACHINE/Driver/BuiltIn键下面的子键,并逐一加载子键下的每个驱动,此过程叫BusEnum。
2)设备管理器从注册表的dll键值中获取驱动程序所在的DLL文件名。
3)设备管理器调用LoadDriver()函数把DLL加载到自己的虚拟地址空间内。
4)设备管理器在注册表的HKEY_LOCAL_MACHINE/Driver/Active下面,记录所有已经加载的驱动程序[2]。
5)设备管理器调用驱动中的XXX_Init()函数。
6)在XXX_Init()中,通常对硬件进行一些基本的初始化操作。通过以上6步,流接口驱动被成功加载。
7)应用程序使用该设备。首先它调用CreateFile()打开设备。CreateFile()是在FileSys.exe中实现的。但是FileSys.exe只作简单判断,如果发现打开的设备驱动程序而不是一个文件,那么就重新把主动权交还给设备管理器。
8)设备管理器调用驱动程序中的XXX_Open()函数打开设备。在XXX_Open()中,驱动程序可能会对硬件进行一些额外的初始化工作,使硬件进入工作状态。
9)XXX_Open()函数把打开设备的结果返回给设备管理器。
10)设备管理器把XXX_Open()返回的结果,再返回给应用程序的CreateFile()函数调用。通过7-10步,设备已被成功打开,至此就可以对设备进行读写和控制操作。
11)应用程序使用第7步CreateFile()函数返回的句柄作为?ReadFile() / WriteFile()的第一个参数,向设备发送读请求。同样ReadFile() / WriteFile()要经过FileSys.exe转发给设备管理器。
12)设备管理器调用驱动程序中的XXX_Read() / XXX_Write() 函数,读取设备的数据信息或向设备写信息。
13)在流驱动程序中,XXX_Read() / XXX_Write() 函数可与硬件交互,从硬件中读取必要的信息或向硬件写必要的信息。然后返回给设备管理器,再返回给应用程序。
当应用程序不再使用该设备时,它可调用CloseHandle()将设备关闭。当系统不再使用设备时,应用程序可调用DeactivateDevice()函数把该驱动程序卸载。
图2 流驱动工作原理顺序图
您可能关注的文档
最近下载
- (完整版)电气设备安装标准规范.pdf
- GB∕T 13861-2022生产过程危险和有害因素分类、解读与示例说明清单【危险源识别工具】(雷泽佳-2024A0).doc
- 2021年中国光大银行校园招聘在线测试笔试题考试真题笔经.doc
- 新浪·按键精灵开发者1级认证参考解析.docx VIP
- 2023年福建省各地中考语文模拟卷【文学类文本阅读题解及答案解析】汇集.docx VIP
- 皮亚杰认知发展论.ppt VIP
- 2.1 几代中国人的美好夙愿 课件初中读本.ppt
- 流域化“厂网一体”运营模式的探索与实践.pdf
- 半导体制造技术离子注入工艺.pptx
- 全国普通话水平测试用普通话词语表(表一+表二).pdf
文档评论(0)