此帖出自嵌入式系统论坛
最新回复
如果设了sleep,用windbg调试的时候,多线程的时间好像并不中断
这种情况怎么处理.
VOID
CreateThreadTest()
{
HANDLE hThread;
NTSTATUS status;
UNICODE_STRING ustrTest;
// 初始化
KeInitializeEvent(&kEvent, SynchronizationEvent, TRUE);
RtlInitUnicodeString(&ustrTest, L"This is a string for test!");
// 创建系统线程
status = PsCreateSystemThread(&hThread, 0, NULL, NULL, NULL, MyThreadFunc, (PVOID)(&ustrTest));
if (!NT_SUCCESS(status))
{
KdPrint(("[Test] CreateThread Test Failed!"));
}
ZwClose(hThread);
// 等待事件
KeWaitForSingleObject(&kEvent, Executive, KernelMode, FALSE, 0);
}
VOID
MyThreadFunc(
IN PVOID context
)
{
PUNICODE_STRING str = (PUNICODE_STRING)context;
KdPrint(("[Test] %d : %wZ", (int)PsGetCurrentProcessId(), str));
// 设置事件对象
KeSetEvent(&kEvent, 0, FALSE);
// 结束线程
PsTerminateSystemThread(STATUS_SUCCESS);
}
复制代码
在DriverEntry里调用CreateThreadTest.
普通情况下运行可以得到想要的结果,但如果用windbg调试的话就不会输出str
这种情况怎么办?
详情
回复
发表于 2009-7-21 09:53
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
| |
|
|
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
| |
|
|
| |
|
|
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
| |
|
|
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
EEWorld Datasheet 技术支持