阅读:1361回复:3
请问:自己构造的包,发送出去或者通知上层之后能不能马上释放内存
//发送给上层应用程序
LogPackage((const char*)pNewDataBuffer, _firstSYNLen, "开始发送SYN包", __FUNCTION__, __LINE__); _adapter.ForwardUp(pNewNdisPacket); //释放空间 NdisUnchainBufferAtFront(pNewNdisPacket, &pNewNdisBuffer); NdisFreeBuffer(pNewNdisBuffer); NdisFreeMemory(pNewDataBuffer, _firstSYNLen, 0); NdisFreePacket(pNewNdisPacket); 这样的代码可以吗? |
|
沙发#
发布于:2007-08-29 08:55
设置OOB的Status为NDIS_STATUS_RESOURCE
这就表示你资源紧缺,要求上层驱动复制一个副本,尽快将资源返回给我。 用这个要小心,因为这虽然是NDIS的标准,但有些不负责的驱动根本不理会 NDIS_STATUS_RESOURCE,如果这时你释放资源,就会BSOD了! |
|
板凳#
发布于:2007-08-29 11:22
我把释放内存的代码去掉了,程序就OK了
但是不知道应该在哪里释放这片内存啊。。。 |
|
地板#
发布于:2007-08-30 10:55
如果包状态不是设置为NDIS_STATUS_RESOURCES,那么通常在ReturnPacket的时候释放
引用第2楼jerryq于2007-08-29 11:22发表的 : |
|