cheke2008
驱动牛犊
驱动牛犊
  • 注册日期2006-04-04
  • 最后登录2011-07-11
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望19点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:1788回复:4

关于在NdisGetReceivedPacket中获取的Packet的资源释放问题

楼主#
更多 发布于:2007-04-11 16:30
  在PtReceive中,如果通过NdisGetReceivePacket获得了Packet后,一般的做法是NdisAllocatePacket,然后复用Packet中的Buffer,接着Indicate上层协议。
问题时,当Packet使用完之后,其Packet和Buffer如何释放?
根据个人理解,这些资源应该是属于低层驱动的。
在PtReceivePacket可以通过返回值或NdisReturnPacket来通知低层释放资源。
在PtReceive中如何实现呢?[p:1]
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
沙发#
发布于:2007-04-11 17:29
具体什么函数释放本人网了,这里曾有一片关于packet收发流程的讲解,可以参考。重要一点:谁申请的资源谁释放的原则,相信你很快就能找到答案。
走走看看开源好 Solaris vs Linux
superjason
驱动牛犊
驱动牛犊
  • 注册日期2007-03-05
  • 最后登录2008-09-03
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望26点
  • 贡献值0点
  • 好评度25点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-04-11 22:49
^_^这两天刚好研究过这个问题。
if你是比较新的网卡,或者是虚拟机,又if你可以顺利的通过NdisGetReceivePacket得到Packet,那么就很简单了。可以设置Packet的status为NDIS_STATUS_RESOURCES,那么就在NdisMIndicateReceivePacket函数之后释放你自己分配的资源。^_^
希望有所帮助
爱让你不孤独
cheke2008
驱动牛犊
驱动牛犊
  • 注册日期2006-04-04
  • 最后登录2011-07-11
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望19点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-04-12 09:27
谢谢哦。
还有,如果不把Status的状态设为NDIS_STATUS_RESOURCE, 那么应该是一种什么样的情形呢?
 
dfbb1980
驱动牛犊
驱动牛犊
  • 注册日期2006-07-05
  • 最后登录2007-07-30
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度82点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-04-12 09:36
如果没有设置resources的化好像是mpreturnpacket这个函数中释放
游客

返回顶部