您现在的位置: 论文网 >> 计算机论文 >> 计算机应用论文 >> windowsnt环境下fddi网卡驱动程序设计(2)论文

windowsnt环境下fddi网卡驱动程序设计(2)

作者:未知
出处:论文网
时间:2007-01-18
第三阶段:获取注册库中各种控制信息,如用户定义的非页内存大小;第四阶段:初始化注册库 registrymachine下system和hardware并创建currentcontrolset,为装入相关硬件设备驱动程序作准备;
第五阶段:装入基本核心驱动程序;
第六阶段:释放一些已经完成使命的装入初始数据块;
第七阶段:进一步初始化注册库,以便有些依赖于基本核心驱动程序的上层驱动程序能顺利装入;
第八阶段:服务控制器装入应该由该服务控制器装入的各种驱动程序。

§2.2.2 fddi网卡驱动程序的加载过程
在windows nt启动的第五个阶段,将加载核心驱动程序。而对于ndis网卡驱动程序是在ndis接口(ndis.sys)加载后调入运行,向ndis wrapper注册、初始化、查询设置参数等。
windows nt启动时,相应的实体如nt的服务控制器根据注册库中yhfddi驱动程序的配置注册信息,初始化ndis wrapper,并装入相应的驱动程序,生成驱动程序管理块结构,申请内存以保存各种信息,向ndis wrapper注册驱动程序。初始化和注册完毕后,再由服务控制器读取注册库中相应的链接信息。
在ndis wrapper和yhfddi驱动程序初始化和注册成功后,ndis wrapper根据系统相应的注册信息,加入和yhfddi驱动程序所对应的fddi网卡,同时读入网卡的注册信息,并进行网卡注册和网卡初始化。
在以上过程成功后,wrapper将查询和设置驱动程序的各种参数,了解驱动程序对哪些操作支持,决定对上层驱动程序的支持范围。
第三节fddi网卡驱动程序的注册
driverentry函数是windows nt ddk规定的核心驱动程序的入口点,wrapper识别到入口点后,调入驱动程序,在driverentry函数内完成两个基本注册任务:
调用ndisminitializewapper函数向ndis接口报告驱动程序将以miniport类网卡驱动程序注册。ndis建立它需要记录的驱动程序状态信息,同时返回ndiswrapperhandle,驱动程序保存这个句柄,以利后来调用ndisxxxconfiguration和initialization等函数。
填写ndisxx_miniport_characteristics属性结构,主要记录ndis版本号和驱动程序支持的miniportxxx函数的入口点,然后调用ndismregisterminiport函数实现驱动程序的整体注册。
以yhfddi为例所要注册的属性结构的内容大致如下:
ndis_miniport_characteristics yhfddichar;
(ndis_miniport_characteristics这个结构将在第三章介绍)
yhfddichar.majorndisversion=yhfddi_ndis_major_version;
yhfddichar.minorndisversion=yhfddi_ndis_minor_version;
这两个属性决定驱动程序是ndis的哪个版本所支持,我们所用的是ndis3.0
yhfddichar.disableinterrupthandler=yhfddidisableinterrupt;
yhfddichar.enableinterrupthandler=yhfddienableinterrupt;
yhfddichar.isrhandle=yhfddiinterruptservice;
yhfddichar.handleinterrupthandler=yhfddihandleinterrupt;
以上四项属性是中断处理所需的上边缘服务函数的入口点(句柄)。fddi网卡驱动程序需要有smt站管理功能,而smt是以中断处理方式进行的,故这四项属性在fddi网卡驱动程序中是很重要的。
yhfddichar.initializehandler=yhfddiinitialize;
此项注册的是驱动程序的初始化函数句柄。
yhfddichar.queryinformationhandler= yhfddiqueryinformation;
yhfddichar.setinformationhandler=yhfddisetinformation;
这两项注册的是参数查询和设置函数的句柄。
yhfddichar.sendhanler= yhfddisend;
yhfddichar.transferdatahandler= yhfdditransferdata;
主要提供数据发送和接收函数句柄。  
yhfddichar.resethandler=yhfddireset;
此项注册网卡软硬件重置函数句柄。
yhfddichar.halthandler= yhfddihalt;
此项注册网卡驱动程序挂起函数句柄。
yhfddichar.checkforhandler=null;
yhfddichar.reconfigurehandler=null;
这两个上边缘服务函数是fddi网卡驱动程序所不提供的,故置为null。
填好这些结构以后,调用以下函数实现驱动程序的注册:
ndismregisterminiport(
yhfddiwrapperhandle,
&yhfddichar,

sizeof(yhfddichar));
其中yhfddiwrapperhandle是在此之前初始化wrapper调用ndisminitializewrapper所得的句柄。
如果调用ndismregisterminiport不能返回ndis_status_success,必须在退出driverentry之前释放已经分配的资源(如yhfddiwrapperhandle等),故调用
ndisterminatewrapper(yhfddiwrapperhandle,null)。
这样驱动程序没能正确注册,亦不能正常运行。
第四节 网卡驱动程序对象查询与设置
如果ndis的管理实体要查询或设置一个特定的网络对象,它必须提供一个32位的oid。oid的结构如下: 图2.3.0 oid结构图
由上可以看到,oid可分为三大类:
所有ndis驱动程序都有的一般对象;
特定介质的对象;
特殊的与具体实现相关的对象(如多目地址表的长度)。
一般的和特定介质的oid被记录在windows nt ddk中,对于这些oid ddk文本指明了相关的对象能否通过miniportqueryinformation查询参数和通过miniportsetinformation设置参数。
oid也可被分为操作特性(如多目地址表长度参数)和统计参数(如广播包接收)。最后oid可分为必须的和可选的两种。
oid的前三个字节表明oid的不同类别,而最后一个字节确定这一类别内特定的信息管理对象。

 [1] [2] 下一页

论文搜索
关键字:windowsnt fddi 网卡 驱动程序
最新计算机应用论文
基于网络信息安全技术管理的计算机应用研究
浅析人工智能体系建设
抖音短视频平台视频推荐模式研究
应用电子技术中可编程控制器的应用探讨
用友NC信息系统的实施应用实践研究
基于校园一卡通数据系统的学生行为分析研究
云环境下基于蚁群算法的动态容错技术研究
自拍图像中的记忆痕迹
抖音短视频用户使用动机研究
基于创新扩散理论的Vlog传播
热门计算机应用论文
学生成绩管理系统的设计与实现
浅析计算机病毒及防范的措施
学籍管理系统软件
对计算科学与计算机发展的思考
计算机应用型人才的培养模式研究
物资管理信息系统开发
计算机信息管理在第三方物流中的应用
嵌入式系统数字图像采集接口电路设计
基于B/S体系结构开发应用系统
项目管理在软件中的应用