首页
社区
课程
招聘
NDIS中间层驱动自定义收包的问题
发表于: 2017-2-25 17:42 3509

NDIS中间层驱动自定义收包的问题

2017-2-25 17:42
3509

先说说我目前在干啥:

基于wdk例子passthru扩展, 在PtReceivePacket与PtReceive两个函数里截获收包,判断是否需要过滤,如果需要过滤,就自定义一个数据包上传,因为不太熟悉NDIS,所以自己研究了下,我是这样想的:先申请一块内存用作自定义数据包的缓冲,填好自定义数据后,申请一个新的packet,将packet与缓冲区关联起来,然后上传。但这样就出现了问题,我申请的内存不知道应该在哪里释放,这样就会造成内存泄漏。一直很苦恼


各位大神们如果研究过这个,请问下你们是怎么上传自定义数据包的的呢?


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 221
活跃值: (82)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自定义的包需要加入标识,在你收包完成的时候根据标识找出来,然后释放你自定义包使用的内存 用包描述符的ProtocolReserved作标识
2017-3-16 16:20
0
雪    币: 766
活跃值: (2369)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
在MPReturnPacket里面,Miniport上交的内存或你的passthru上交的内存在上层完成传输以后会返回使用权(调用MPReturnPacket)。在你的MPReturnPacket里面用NdisGetPoolFromPacket进行判断,如果是得到的Handle是miniport的pool就向下交付,否则说明是passthru的pool,由你自己手动释放。
2017-3-16 20:16
0
游客
登录 | 注册 方可回帖
返回
//