ke077
驱动牛犊
驱动牛犊
  • 注册日期2007-03-14
  • 最后登录2010-10-28
  • 粉丝1
  • 关注0
  • 积分362分
  • 威望134点
  • 贡献值0点
  • 好评度72点
  • 原创分0分
  • 专家分0分
阅读:2191回复:4

使用线程引起IRQ_NOT_LESS_OR_EQUAL,大家给点提示

楼主#
更多 发布于:2007-05-22 17:23
我使用线程的初始化部分:
KeInitializeSpinLock( &pdx->lkIrpQueue );        
InitializeListHead( &pdx->IrpQueueListHead );        
KeInitializeSemaphore( &pdx->semIrpQueue,   0, MAXLONG);
KeInitializeEvent( &pdx->evDeviceOperationComplete, SynchronizationEvent, FALSE );  
status = PsCreateSystemThread( &hThread, (ACCESS_MASK)0, NULL,
        (HANDLE)0, NULL, WorkerThreadMain,  pdx );  
ObReferenceObjectByHandle(  hThread, THREAD_ALL_ACCESS,
                     NULL, KernelMode, (PVOID*)&pdx->pThreadObj,  NULL );
ZwClose( hThread );

我加上这段,在进行usb配置的时候调用IoCallDriver就蓝屏,提示IRQ_NOT_LESS_OR_EQUAL,不加则一切正常。
在论坛上看了几个帖子,说驱动程序在DISPATCH_LEVEL_IRQ或之上接触分页内存后就这样。
我在调用IoCallDriver之前KeGetCurrentIrql(),都是passive_level,再就不知道了,大家给指点一下,或者察看什么资料?
ke077
驱动牛犊
驱动牛犊
  • 注册日期2007-03-14
  • 最后登录2010-10-28
  • 粉丝1
  • 关注0
  • 积分362分
  • 威望134点
  • 贡献值0点
  • 好评度72点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-05-23 16:05
顶一下,希望有人能够解答
ke077
驱动牛犊
驱动牛犊
  • 注册日期2007-03-14
  • 最后登录2010-10-28
  • 粉丝1
  • 关注0
  • 积分362分
  • 威望134点
  • 贡献值0点
  • 好评度72点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-05-30 10:34
不会没人知道吧,论坛上这么多DX
我再顶
gutian98
禁止发言
禁止发言
  • 注册日期2003-01-12
  • 最后登录2016-12-11
  • 粉丝4
  • 关注2
  • 积分760分
  • 威望8026点
  • 贡献值1点
  • 好评度364点
  • 原创分0分
  • 专家分21分
  • 金点子奖
  • 社区居民
地板#
发布于:2007-05-30 10:59
用户被禁言,该主题自动屏蔽!
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-06-04 11:58
都去好好学学怎么用WinDbg。这种bug用WinDbg几分钟就知道原因
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
游客

返回顶部