折腾几天不成功求教:微软例程 Ndisprot 如何分别不同的设备?

ExitWindows 2011-07-31 03:49:28
折腾几天不成功求教:
微软官方示例程序 Ndisprot 中的NdisProtReceiveComplete、NdisProtOpen 等函数,如果是在多网卡的系统中运行,函数如何区分不同的设备?
这些函数执行时,检视pIrp->pDeviceObject、pFileObject->pDeviceObject等,都是相同的值,即指向的是同一个DEVICE_OBJECT,且这个DEVICE_OBJEC的 ->NextDevice、->AttchedDevice都是NULL,没法区分究竟是在哪张网卡上运行。
请指教。
...全文
205 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ExitWindows 2011-11-07
  • 打赏
  • 举报
回复
很抱歉,由于没等到答案,的确是忘了来了。
问题也算是解决了。
通过调试,发现 pDevExt->stuFileobjs[iIndex].pFileObject 的值可以用来区分网卡。
供各位参考。
Vincent_Song 2011-10-08
  • 打赏
  • 举报
回复
LZ问题解决了吗?
hopebring 2011-10-07
  • 打赏
  • 举报
回复
可能楼主已经忘记这个帖子了,不过这个帖子可以对后来者可以提供参考。
woshi_ziyu 2011-10-07
  • 打赏
  • 举报
回复
时间过去这么久了 也不知道LZ是否已经解决了吗
cqbamboo 2011-10-07
  • 打赏
  • 举报
回复
友情帮顶!
codesnail 2011-10-05
  • 打赏
  • 举报
回复
友情帮顶!
hopebring 2011-10-04
  • 打赏
  • 举报
回复
我帮你顶一下。不知道你解决这个问题没有。我的解释是:示例程序ndisprot中只创建了一个设备,你从IRP中只能得到这个设备对象。对于多网卡的情况,是用绑定上下文来区分不同的网卡,每个网卡的信息如绑定句柄时保存在绑定上下文中的。这样解释可以吗?
内容概要:本文档为成都科洛威尔科技有限公司生产的MIL-1394B仿真板卡的API函数使用手册,详细介绍了该板卡在Windows和Linux环境下进行MIL-1394B/AS5643总线协议仿真和测试所需的API函数、数据结构、使用流程及例程。板卡支持CC(控制计算机)、RN(远程节点)和BM(总线监控)三种工作模式,提供丰富的函数用于设备管理、节点控制、消息收发、故障注入、中断处理等功能,并涵盖数据包格式、发送接收流程、错误检测机制等关键技术细节。手册还提供了函数调用示例和典型应用场景,帮助开发者快速掌握板卡的开发与调试。; 适合人群:从事航空电子、嵌入式系统或工业自动化领域,具备C/C++编程基础并熟悉总线通信协议的1-3年工作经验的软硬件研发工程师。; 使用场景及目标:①在复杂总线环境中实现高精度数据仿真与测试;②开发基于MIL-1394B协议的通信系统;③进行消息收发控制、时序偏移管理、错误注入测试及中断响应处理等高级功能验证;④通过API调用实现对板卡工作模式、数据流、状态监测的全面控制。; 阅读建议:建议结合配套的demo示例程序进行实践,重点理解各函数的调用时序与参数配置逻辑,尤其关注STOF时序控制、消息发送模式、错误注入机制等核心功能的实现原理。使用前需仔细阅读“基本使用流程”与“附录”部分,确保正确配置硬件环境与通信参数。

21,620

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧