【问题标题】:KdPrintEx in 'Debugger Immediate Window' into VS 2012 is not printing any msgVS 2012 中的“调试器即时窗口”中的 KdPrintEx 未打印任何消息
【发布时间】:2013-06-11 03:18:05
【问题描述】:

我正在使用主机上的 VS2012 调试目标 VM 上安装的 KmdfSmall 驱动程序。

但是,主机上的 VS 2012 中的“调试器即时窗口”没有打印任何消息。

这里我使用KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "\n KmdfSmallEvtDeviceAdd has been called\n")),因为它在msdn 中给出。

我更新了flag的值以及OSRonline中的描述。

“HKLM\SYSTEM\CCS\Control\Session Manager\Debug Print Filter”。在该键下,创建了一个名为“DEFAULT”的值,并将该键的值设置为等于 DWORD 值 0xf”。

但没有任何改变。可能是我在寻找“KdPrintEx”msg o/p 的错误位置。 一件事是KdPrintEx 的明确返回值是正确的,即STATUS_SUCCESS。我已经检查过了。

所以,请让我知道我哪里错了。 问候 马特

【问题讨论】:

    标签: windows debugging kernel device-driver


    【解决方案1】:

    更改了已安装驱动程序以进行调试的目标计算机上的组件过滤器掩码的值。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug 打印过滤器。

    在此键下,创建一个名为“IHVDRIVER”的值,并将该键的值设置为等于 DWORD 值 0x8”。

    我选择“IHVDRIVER”是因为在我的 KdPrintEx((DPFLTR_"IHVDRIVER"_ID, DPFLTR_INFO_LEVEL, "\n KmdfSmallEvtDeviceAdd 已被调用\n")) 而DWORD值0x8是因为Leveling。

    详情:http://msdn.microsoft.com/en-us/library/windows/hardware/ff551519(v=vs.85).aspx

    谢谢你

    问候 马特

    【讨论】:

      【解决方案2】:

      KdPrintEx 需要更多的值。你可以使用这个:

      KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, STR));
      

      STR是PSTR,你可以直接用“lakr awesome!”代替“巴拉拉”

      你也可以有这个功能:

      VOID LakrPrint(PCSTR STR) {
      KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, STR));}
      

      这样称呼:

      LakrPrint("Hello World!");
      

      最好的祝愿。

      // 使用regedit的方法可能会有很多无用的输出。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多