阅读:1828回复:4
关于在NdisGetReceivedPacket中获取的Packet的资源释放问题
在PtReceive中,如果通过NdisGetReceivePacket获得了Packet后,一般的做法是NdisAllocatePacket,然后复用Packet中的Buffer,接着Indicate上层协议。
问题时,当Packet使用完之后,其Packet和Buffer如何释放? 根据个人理解,这些资源应该是属于低层驱动的。 在PtReceivePacket可以通过返回值或NdisReturnPacket来通知低层释放资源。 在PtReceive中如何实现呢?[p:1] |
|
沙发#
发布于:2007-04-11 17:29
具体什么函数释放本人网了,这里曾有一片关于packet收发流程的讲解,可以参考。重要一点:谁申请的资源谁释放的原则,相信你很快就能找到答案。
|
|
|
板凳#
发布于:2007-04-11 22:49
^_^这两天刚好研究过这个问题。
if你是比较新的网卡,或者是虚拟机,又if你可以顺利的通过NdisGetReceivePacket得到Packet,那么就很简单了。可以设置Packet的status为NDIS_STATUS_RESOURCES,那么就在NdisMIndicateReceivePacket函数之后释放你自己分配的资源。^_^ 希望有所帮助 |
|
|
地板#
发布于:2007-04-12 09:27
谢谢哦。
还有,如果不把Status的状态设为NDIS_STATUS_RESOURCE, 那么应该是一种什么样的情形呢? |
|
地下室#
发布于:2007-04-12 09:36
如果没有设置resources的化好像是mpreturnpacket这个函数中释放
|
|