NDIS6修改过滤器

时间:2014-12-13 10:18:13

标签: ndis

我们正在研究NDIS6的修改过滤器,它使用原始数据包包装到自己的层协议中。

在添加我们自己的标头之前,我们调用NdisRetreatNetBufferDataStart(pNetBuffer,sizeof(OurHeader),0,NULL),假设NDIS将通过其默认的'来自己分配额外的MDL。函数,如http://msdn.microsoft.com/en-us/library/windows/hardware/ff570697%28v=vs.85%29.aspx中所述("如果入口点为NULL,则NDIS使用默认方法分配MDL。")

我们在FilterSendNetBufferListsComplete中注意NdisAdvanceNetBufferDataStart(pNetBuffer,sizeof(OurHeader),TRUE,NULL)。

但是,我们得到一个BSOD DRIVER_IRQL_NOT_LESS_OR_EQUAL,这意味着从IRQ处理程序中访问了一些分页内存(读取操作,通过错误检查的第3个参数判断)。

我们怀疑我们的RetratXxx调用导致分配分页内存,而微型端口在尝试发送数据时被困?如果是这样,那就是"默认"内存分配行为,以及如何在这种情况下调用NdisRetreatNetBufferDataStart?

0 个答案:

没有答案