2015年荐windowsnt环境下fddi网卡驱动程序设计.docVIP

2015年荐windowsnt环境下fddi网卡驱动程序设计.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
windowsnt环境下fddi网卡驱动程序设计 xx函数的入口点,然后调用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的不同类别,而最后一个字节确定这一类别内特定的信息管理对象。 针对于fddi网卡,被查询的oid的第一个字节为0x03。而ndis所查询的介质相关参数为: 0 oid_fddi_long_max_list_size 0

文档评论(0)

seym + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档