阅读:2191回复:4
使用线程引起IRQ_NOT_LESS_OR_EQUAL,大家给点提示
我使用线程的初始化部分:
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,再就不知道了,大家给指点一下,或者察看什么资料? |
|
沙发#
发布于:2007-05-23 16:05
顶一下,希望有人能够解答
|
|
板凳#
发布于:2007-05-30 10:34
不会没人知道吧,论坛上这么多DX
我再顶 |
|
地板#
发布于:2007-05-30 10:59
用户被禁言,该主题自动屏蔽! |
|
地下室#
发布于:2007-06-04 11:58
都去好好学学怎么用WinDbg。这种bug用WinDbg几分钟就知道原因
|
|
|