-
-
[求助]调用KeWaitForSingleObject蓝屏?
-
发表于:
2009-4-20 15:20
15371
-
[求助]调用KeWaitForSingleObject蓝屏?
这段代码是在IRP_MJ_READ的事件处理函数里面的。
HANDLE hThread = NULL;
if (NT_SUCCESS(PsCreateSystemThread(&hThread, 0, NULL, NULL, NULL, TestFunc, NULL)))
{
KeWaitForSingleObject(hThread, Executive, KernelMode, FALSE, NULL);
ZwClose(hThread);
}
TestFunc里面就是一句PsTerminateSystemThread(STATUS_SUCCESS),调试发现一调用KeWaitForSingleObject就蓝了。
原来以为是用句柄不行,就这样试了一下
HANDLE hThread = NULL;
OBJECT_ATTRIBUTES objAttrib;
InitializeObjectAttributes(&objAttrib, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);
if (NT_SUCCESS(PsCreateSystemThread(&hThread, THREAD_ALL_ACCESS, &objAttrib, NULL, NULL, TestFunc, NULL)))
{
KeWaitForSingleObject(hThread, Executive, KernelMode, FALSE, NULL);
ZwClose(hThread);
}
结果照蓝不误,蓝屏提示IRQL_NOT_LESS_OR_EQUAL,但是我打印KeGetCurrentIrql()却是0。
我查过资料说是,KeWaitForSingleObject可以等待线程HANDLE的,不过正确写法应该是什么呢?
谢谢!!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课