flashstar
驱动牛犊
驱动牛犊
  • 注册日期2007-06-26
  • 最后登录2008-02-25
  • 粉丝0
  • 关注0
  • 积分270分
  • 威望28点
  • 贡献值0点
  • 好评度27点
  • 原创分0分
  • 专家分0分
阅读:2912回复:2

求助:电脑蓝屏,显示 DRIVER_IRQL_NOT_LESS_OR_EQUAL!

楼主#
更多 发布于:2007-08-07 19:01
在Window 2000 DDK中的例子Packet,
在DriverEntry中,我加入代码:
if (NDIS_STATUS_SUCCESS == NdisAllocateMemoryWithTag(&Pmemory,1514,'BHH'))
    {
        if (PBuffer=IoAllocateMdl(Pmemory,1514,FALSE,FALSE,NULL))
        {
            DebugPrint (("NdisAllocateMemory:IoAllocateMdl:success\n"));
        }
    }
注释: PBuffer为全局变量
我在PacketTransferDataComplete 函数中加了下面这一段代码,
NdisMoveMappedMemory(
        ((PUCHAR)MmGetSystemAddressForMdlSafe(irp->MdlAddress,    NormalPagePriority))+ETHERNET_HEADER_LENGTH,
        MmGetMdlVirtualAddress(PBuffer),
        BytesTransfered
        );
其实就是说先把数据包接收过来,如果认为要向上传递,就把数据包拷贝到irp->MdlAddress,
但是电脑蓝屏,显示 DRIVER_IRQL_NOT_LESS_OR_EQUAL,我查了以下,DDK上说是因为:
system attempted to access pageable memory at a process IRQL that was too high,
可是我用NdisAllocateMemoryWithTag申请的内存明明是非分页的啊,到底怎么回事?
怎么解决?
游客

返回顶部