flashstar
驱动牛犊
驱动牛犊
  • 注册日期2007-06-26
  • 最后登录2008-02-25
  • 粉丝0
  • 关注0
  • 积分270分
  • 威望28点
  • 贡献值0点
  • 好评度27点
  • 原创分0分
  • 专家分0分
阅读:2897回复: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申请的内存明明是非分页的啊,到底怎么回事?
怎么解决?
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2007-08-08 10:40
1.看ndisuio的代码,有现成的代码可用,看明白以前,先不要自己去写,不然会死得很难看
2.学习用windbg调试,分析dump文件,不至于出了问题,一筹莫展
ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2007-08-08 14:53
估计是哪里访问了空指针!PBuffer你在哪里释放了?你这样写,极度危险!
人不靓仔心灵美,版头不正红花仔!
游客

返回顶部