欢迎来到天天文库
浏览记录
ID:52243395
大小:80.54 KB
页数:3页
时间:2020-03-25
《windowsnt环境下fddi网卡驱动程序设计(2).pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、windowsnt环境下fddi网卡驱动程序设计(2)第三阶段:获取注册库中各种控制信息,如用户定义的非页内存大小;第四阶段:初始化注册库registrymachine下system和hardware并创建currentcontrolset,为装入相关硬件设备驱动程序作准备;第五阶段:装入基本核心驱动程序;第六阶段:释放一些已经完成使命的装入初始数据块;第七阶段:进一步初始化注册库,以便有些依赖于基本核心驱动程序的上层驱动程序能顺利装入;第八阶段:服务控制器装入应该由该服务控制器装入的各种驱动程序。§2.2.2fddi
2、网卡驱动程序的加载过程在windowsnt启动的第五个阶段,将加载核心驱动程序。而对于ndis网卡驱动程序是在ndis接口(ndis.sys)加载后调入运行,向ndiswrapper注册、初始化、查询设置参数等。windowsnt启动时,相应的实体如nt的服务控制器根据注册库中yhfddi驱动程序的配置注册信息,初始化ndiswrapper,并装入相应的驱动程序,生成驱动程序管理块结构,申请内存以保存各种信息,向ndiswrapper注册驱动程序。初始化和注册完毕后,再由服务控制器读取注册库中相应的链接信息。在ndiswr
3、apper和yhfddi驱动程序初始化和注册成功后,ndiswrapper根据系统相应的注册信息,加入和yhfddi驱动程序所对应的fddi网卡,同时读入网卡的注册信息,并进行网卡注册和网卡初始化。在以上过程成功后,wrapper将查询和设置驱动程序的各种参数,了解驱动程序对哪些操作支持,决定对上层驱动程序的支持范围。第三节fddi网卡驱动程序的注册driverentry函数是windowsntddk规定的核心驱动程序的入口点,wrapper识别到入口点后,调入驱动程序,在driverentry函数内完成两个基本注册任务:
4、调用ndisminitializewapper函数向ndis接口报告驱动程序将以miniport类网卡驱动程序注册。ndis建立它需要记录的驱动程序状态信息,同时返回ndiswrapperhandle,驱动程序保存这个句柄,以利后来调用ndisxxxconfiguration和initialization等函数。填写ndisxx_miniport_characteristics属性结构,主要记录ndis版本号和驱动程序支持的miniportxxx函数的入口点,然后调用ndismregisterminiport函数实现驱动程
5、序的整体注册。以yhfddi为例所要注册的属性结构的内容大致如下:ndis_miniport_characteristicsyhfddichar;(ndis_miniport_characteristics这个结构将在第三章介绍)yhfddichar.majorndisversion=yhfddi_ndis_major_version;用心爱心专心1yhfddichar.minorndisversion=yhfddi_ndis_minor_version;这两个属性决定驱动程序是ndis的哪个版本所支持,我们所用的是ndi
6、s3.0yhfddichar.disableinterrupthandler=yhfddidisableinterrupt;yhfddichar.enableinterrupthandler=yhfddienableinterrupt;yhfddichar.isrhandle=yhfddiinterruptservice;yhfddichar.handleinterrupthandler=yhfddihandleinterrupt;以上四项属性是中断处理所需的上边缘服务函数的入口点(句柄)。fddi网卡驱动程序需要有smt
7、站管理功能,而smt是以中断处理方式进行的,故这四项属性在fddi网卡驱动程序中是很重要的。yhfddichar.initializehandler=yhfddiinitialize;此项注册的是驱动程序的初始化函数句柄。yhfddichar.queryinformationhandler=yhfddiqueryinformation;yhfddichar.setinformationhandler=yhfddisetinformation;这两项注册的是参数查询和设置函数的句柄。yhfddichar.sendhanler
8、=yhfddisend;yhfddichar.transferdatahandler=yhfdditransferdata;主要提供数据发送和接收函数句柄。yhfddichar.resethandler=yhfddireset;此项注册网卡软硬件重置函数句柄。yhfddichar.halthandler
此文档下载收益归作者所有