




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、windowsnt环境下fddi网卡驱动程序设计2indsnt环境下fddi网卡驱动程序设计2第三阶段:获取注册库中各种控制信息,如用户定义的非页内存大小;第四阶段:初始化注册库registryahine下syste和hardare并创立urrentntrlset,为装入相关硬件设备驱动程序作准备;第五阶段:装入根本核心驱动程序;第六阶段:释放一些已经完成使命的装入初始数据块;第七阶段:进一步初始化注册库,以便有些依赖于根本核心驱动程序的上层驱动程序能顺利装入;第八阶段:效劳控制器装入应该由该效劳控制器装入的各种驱动程序。2.2.2fddi网卡驱动程序的加载过程在indsnt启动的第五个阶段,
2、将加载核心驱动程序。而对于ndis网卡驱动程序是在ndis接口ndis.sys加载后调入运行,向ndisrapper注册、初始化、查询设置参数等。indsnt启动时,相应的实体如nt的效劳控制器根据注册库中yhfddi驱动程序的配置注册信息,初始化ndisrapper,并装入相应的驱动程序,生成驱动程序管理块构造,申请内存以保存各种信息,向ndisrapper注册驱动程序。初始化和注册完毕后,再由效劳控制器读取注册库中相应的链接信息。在ndisrapper和yhfddi驱动程序初始化和注册成功后,ndisrapper根据系统相应的注册信息,参加和yhfddi驱动程序所对应的fddi网卡,同时读
3、入网卡的注册信息,并进展网卡注册和网卡初始化。在以上过程成功后,rapper将查询和设置驱动程序的各种参数,理解驱动程序对哪些操作支持,决定对上层驱动程序的支持范围。第三节fddi网卡驱动程序的注册driverentry函数是indsntddk规定的核心驱动程序的入口点,rapper识别到入口点后,调入驱动程序,在driverentry函数内完成两个根本注册任务:调用ndisinitializeapper函数向ndis接口报告驱动程序将以iniprt类网卡驱动程序注册。ndis建立它需要记录的驱动程序状态信息,同时返回ndisrapperhandle,驱动程序保存这个句柄,以利后来调用ndis
4、xxxnfiguratin和initializatin等函数。填写ndisxx_iniprt_harateristis属性构造,主要记录ndis版本号和驱动程序支持的iniprtxxx函数的入口点,然后调用ndisregisteriniprt函数实现驱动程序的整体注册。以yhfddi为例所要注册的属性构造的内容大致如下:ndis_iniprt_harateristisyhfddihar;(ndis_iniprt_harateristis这个构造将在第三章介绍)yhfddihar.ajrndisversin=yhfddi_ndis_ajr_versin;yhfddihar.inrndisvers
5、in=yhfddi_ndis_inr_versin;这两个属性决定驱动程序是ndis的哪个版本所支持,我们所用的是ndis3.0yhfddihar.disablEinterrupthandler=yhfddidisableinterrupt;yhfddihar.enableinterrupthandler=yhfddienableinterrupt;yhfddihar.isrhandle=yhfddiinterruptservie;yhfddihar.handleinterrupthandler=yhfddihandleinterrupt;以上四项属性是中断处理所需的上边缘效劳函数的入口点句柄
6、。fddi网卡驱动程序需要有st站管理功能,而st是以中断处理方式进展的,故这四项属性在fddi网卡驱动程序中是很重要的。yhfddihar.initializehandler=yhfddiinitialize;此项注册的是驱动程序的初始化函数句柄。yhfddihar.queryinfratinhandler=yhfddiqueryinfratin;yhfddihar.setinfratinhandler=yhfddisetinfratin;这两项注册的是参数查询和设置函数的句柄。yhfddihar.sendhanler=yhfddisend;yhfddihar.transferdatahan
7、dler=yhfdditransferdata;主要提供数据发送和接收函数句柄。yhfddihar.resethandler=yhfddireset;此项注册网卡软硬件重置函数句柄。yhfddihar.halthandler=yhfddiha此项注册网卡驱动程序挂起函数句柄。yhfddihar.hekfrhandler=null;yhfddihar.renfigurehandler=null;这两个上边缘效劳函数是fddi网卡驱动程序所不提供的,故置为null。填好这些构造以后,调用以下函数实现驱动程序的注册:ndisregisteriniprt(yhfddirapperhandle,yhfd
8、dihar,sizef(yhfddihar);其中yhfddirapperhandle是在此之前初始化rapper调用ndisinitializerapper所得的句柄。假如调用ndisregisteriniprt不能返回ndis_status_suess,必须在退出driverentry之前释放已经分配的资源如yhfddirapperhandle等,故调用ndisterinaterapper(yhfddirapperhandle,null)。这样驱动程序没能正确注册,亦不能正常运行。第四节网卡驱动程序对象查询与设置假如ndis的管理实体要查询或设置一个特定的网络对象,它必须提供一个32位的i
9、d。id的构造如下:图2.3.0id构造图由上可以看到,id可分为三大类:所有ndis驱动程序都有的一般对象;特定介质的对象;特殊的与详细实现相关的对象如多目地址表的长度。一般的和特定介质的id被记录在indsntddk中,对于这些idddk文本指明了相关的对象能否通过iniprtqueryinfratin查询参数和通过iniprtsetinfratin设置参数。id也可被分为操作特性如多目地址表长度参数和统计参数如播送包接收。最后id可分为必须的和可选的两种。id的前三个字节说明id的不同类别,而最后一个字节确定这一类别内特定的信息管理对象。针对于fddi网卡,被查询的id的第一个字节为0
10、x03。而ndis所查询的介质相关参数为:0 x03010104id_fddi_lng_ax_list_size0 x03010108id_fddi_shrt_ax_list_size0 x03010102id_fddi_lng_urrent_addr0 x03010106id_fddi_shrt_urrent_addrtp/ip传输驱动程序所要查询的fddiid为:0 x03010102id_fddi_lng_urrent_addr0 x03010103id_fddi_lng_ultiast_list0 x03010107id_fddi_shrt_ultiast_list通过以上两阶段的查询
11、,ndis和tp/ip驱动程序就分别理解了网卡驱动程序对其的支持,从而进展相应的捆绑,以便数据传输时正确选择网卡驱动程序。第五节开发环境与调试方法开发环境:fddi网卡驱动程序的开发环境为ntserver3.51,sdk,ddkfrrkstatin3.51,v+4.1,硬件平台为586。调试平台:主机为ntserver3.51,indbg32目的机为ntrkstatin3.51hek944调试方法:利用dbgprint把目的机上关键信息通过串口传到主机进展分析,以得出ndis驱动程序的调度机制和运转状况;利用assert产生异常断点,由主机对异常进展控制自定义宏,进展分级控制,以根据不同情况产
12、生不同调试信息第四章与st移植相关的问题讨论在本yhfddi网卡驱动程序中,st的移植是极其关键的一局部,主要承当了驱动程序中硬件初始化和中断延迟处理。但由于st是相对独立的软件,这样就有一个ndisrapper与st间参数传递的问题。所以本章主要讨论iniprt驱动程序与st的关系和移植st过程中初始化的要求、中断处理的要求,ndisrapper与st如何传递参数。一iniprtfddi网卡驱动程序与st的关系。在第一章已经谈及网卡驱动程序主要实现si参考模型中的物理层和a层。而对于fddi网络的物理层又可分为介质相关子层和介质无关子层。对于我们的fddi/pi是基于x.3.19、x3.14
13、8、x3.166和x3.229而实现的。st在整个is七层模型中属低两层范畴。下列图是is模型与fddi层次的对应关系,从而可知fddiiniprt驱动程序在nt网络构造中的位置。即在indsntfddi网卡驱动程序应包含st,实现fddi拓扑环上的站管理。而在驱动程序内部st主要是在iniprt驱动程序中的中断延迟处理上边缘效劳中实现的,也可以说是将st嵌入中断延迟处理程序中,实现ndis接口对st的正确调度。yh-fddi驱动程序的实现可分为硬件无关局部和硬件相关局部。移植st过程中初始化的要求.这里的初始化主要是指硬件初始化,包括存放器的初始化和数据构造的初始化,由st共用的硬件相关例程
14、库中硬件初始化局部来完成.我们在开发过程序是调用fddi_ain(bdd_t*bdd)这个函数来调用st共用的硬件相关例程库的.可见使用fddi_ain(bdd_t*bdd)时,需要传递bdd这个参量,而bdd_t这个数据构造的定义如下:它包含了各类硬件存放器的基址,所以要对其进展正确赋值就必须首先在nt的内存中映射一块虚存与网卡内存相对应,也就实现了bdd_t构造的赋值,对fddi_ain(bdd_t*bdd)的正确调用.因此,我们在调用fddi_ain前首先将网卡上存放器内存空间映射到nt的虚存空间上,并将bdd构造正确赋值.以映射bsi_phy_base为例,详细过程如下:phardes
15、tinatin;bdd_t*bdd;ndis_physial_addressphysialaddress;ulngbaseaddress;ndis_statusstatus;baseadress=0 x0d0000+bsi_phy_base;ndissetphysialaddresshigh(physialaddress,0);ndissetphysialaddressl(physialaddress,baseaddress);status=ndisapispae(pvid*)destinatin,iniprtadapterhandle,physialaddress,bsi_phy_len);
16、bdd-bsi_vir_base=(phar)destinatin;adapter-bdd-bsi_vir_base=bsi_vir_base;/*对adapter构造中的bdd构造赋值,以便在其它上边缘函数中使用这些虚存基地址*/中断处理要求.对于中断处理,在st中主要调用spintrhandandler()来实现.我们的fddi网卡驱动程序是iniprt方式的,假设在isr中做此处理将占用大量系统资源,使系统崩溃,所以我们采用只在isr中进展中断的排队,而在dp中调用spintrhandler()来完成中断处理.在中断处理方面还有一个中断屏蔽和中断使能的问题,这两方面st并不提供,故我们要
17、正确处理.详细处理方法见第三章.ndisrapper与st间参数如何传递.iniprt方式的网卡驱动程序中,网卡上有中断时,系统反映给ndisrapper,再由rapper调度中断处理上边缘效劳实现中断处理,在我们的yhfddi网卡驱动程序的中断详细处理是st完成的所以在调用spintrhandler时应将adapter构造传进st以便在以后应用.如在处理接收中断时,处理的最后应调用ndisindiatefddireEive,向ndisrapper指示以接收到一个数据包,而ndisindiaterfddireeive的调用需要adapteriniprthandle作为参数,这就必须一级级从中断
18、延迟处理函数(yhfddihandleinterrupt)中将adapter构造传递下来.当然,其它方面如发送,也会有类似的问题需要考虑.总之,对于st的移植,需要详尽的在程序中做好接口,才能实现与st的数据交换.完毕语ndis标准在网络两层间提供了一个统一界面,ndis对网络本身而言,是一个带有协议功能的标准接口,对实现者而言,它应该是一个环境,这种环境不仅带有协议功能,更重要的是带有和软、硬平台无关的核心功能支持,它不会受软、硬平台的变化严重影响,无疑,它是软件的移植和兼容的可靠保证,ndis把网络的一局部共性抽象出来,并根据详细的操作系统实现系统和平台相关的根底库以保证ndis的标准性和对开发者提供最大的功能支持,这也将加速和标准开发过程,但是,在操作系统之上提供ndis根底库获得标准同时也失去直接作用于操作系统带来的灵敏性以及更强的功能支持,同时,ndis处于网络中层和低层之间,低层网络的快速开展和ndis对网络局部共性的抽象必然导致ndis对实现者的滞后,例如ddk3.51提供的ndis开发环境只支持10以太网、fddi、令牌网802.5、laltalk、arnet等,而对新出现的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州毕节市信泰投资有限公司选聘总经济师1人笔试历年参考题库附带答案详解(3卷合一)
- 2025水发集团有限公司招聘笔试历年参考题库附带答案详解(3卷合一)
- 线的表现力(教学设计)-湘美版(2012)美术三年级上册
- 粮食类原料概述说课稿-2025-2026学年中职专业课-烹饪原料知识-中餐烹饪-旅游大类
- 2025医生中医知识考试题及答案
- 2025年养老护理员职业考试试题及答案
- 2025年初级社会工作综合能力考试真题及答案解析(更新版)
- 2025护士管理考试题库及答案
- 2025银行考试题库及答案大全
- 2025中医药局考试题及答案解析
- 2025-2030中国抗骨质疏松药物市场调研及未来增长预测报告
- 房屋安全性鉴定培训试题及答案解析
- 2025广西南宁上林县公安局面向社会招聘警务辅助人员50人笔试备考试题及答案解析
- 火锅店引流截流回流方案
- 黑龙江省齐齐哈尔市富拉尔基区2024-2025学年高一上学期期中考试生物试题含参考答案
- 2025年档案员考试试题及答案
- 仓库内安全培训资料课件
- 2025-2026学年七年级英语上学期第一次月考 (福建专用) 2025-2026学年七年级英语上学期第一次月考 (福建专用)原卷
- 国自然培训课件
- 高二第一次月考物理试卷含答案解析
- 2025安徽普通专升本《大学语文》统考试题及答案
评论
0/150
提交评论