如何用NdisUnchainBufferAtBack删掉PNDIS_PACKET后面两个buffer descriptors
NdisUnchainBufferAtBack函数可以用来移除包的缓冲描述符链的最后一个,
如果我想将包的缓冲描述符链的最后两个或者多个移除掉(至少保留首部的一个buffer descriptor),该怎么做?我试着两次调用NdisUnchainBufferAtBack,可是总蓝屏。
而且,我用下面的代码移除最后一个buffer descriptor,并且,清空该buffer descriptors 指向的内存,也会蓝屏,这又是为什么?
PVOID address;
PNDIS_BUFFER tmpBuffer, pBuffer;
ULONG current_length;
PSEND_RSVD SendRsvd;
NdisUnchainBufferAtBack(MyPacket ,&pBuffer);
while (NULL != pBuffer)
{
NdisQueryBufferSafe(pBuffer, &address, ¤t_length, NormalPagePriority);
NdisFreeMemory(address, current_length, 0);
tmpBuffer = pBuffer;
NdisGetNextBuffer(tmpBuffer, &pBuffer);
// NdisFreeBuffer(tmpBuffer);
}