1

我正在使用主机上的 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。我已经检查过了。

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

4

2 回答 2

2

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

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

我选择“IHVDRIVER”是因为在我的 KdPrintEx((DPFLTR_"IHVDRIVER"_ID, DPFLTR_INFO_LEVEL, "\n KmdfSmallEvtDeviceAdd has been called\n")) 和 DWORD 值 0x8 因为调平。

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

感谢您

关于马特

于 2013-06-15T19:52:01.830 回答
0

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的方法可能会有很多无用的输出。

于 2018-08-14T16:40:25.173 回答