DbgPrint()无法打印字符串而不打印数字

时间:2017-03-26 18:06:16

标签: windbg

我正在开发一个简单的驱动程序,目前我刚开始使用PsSetCreateThreadNotifyRoutine安装了一个简单的回调。在回调函数中,我调用DbgPrint打印出pid和进程名称:

DbgPrint("%.4x %s", ProcessId, GetProcessNameFromPid(ProcessId)); // dbgview shows nothing

如果我删除%s特异性,它突然起作用:

DbgPrint("%.4x", ProcessId); // works

我在Windows 7 x64上使用dbgview查看调试消息。我在注册表中打印调试过滤器设置为0xF

我还通过windbg验证了GetProcessNameFromPid()返回的指针确实指向了进程名称。

LPSTR GetProcessNameFromPid(HANDLE Pid)
{
    PEPROCESS Process;

    if (PsLookupProcessByProcessId(Pid, &Process) != STATUS_SUCCESS)
        return "????";

    return (LPSTR)PsGetProcessImageFileName(Process);
}

0 个答案:

没有答案