1

如何读取由调用 kdPrint 或 debugPrint 函数生成的 Windows 内核调试器字符串?

尤其是在用户模式下阅读,但在内核模式下也很好!

这与 DebugView 所做的相同,但我想过滤并仅处理提供给调试器的某些消息(字符串)。

4

1 回答 1

1

在用户模式下,您拥有DBWIN " API "

  1. 创建一个命名的(“DBWIN_BUFFER”)共享内存区域(4096 字节,第一个 DWORD 是进程 pid)和两个事件
  2. 向 DBWIN_BUFFER_READY 命名事件发出信号
  3. 等待 DBWIN_DATA_READY 命名事件
  4. 读取共享内存(并转到第 2 步以获取下一个输出)

在 NT6 的内核模式下,您有DbgSetDebugPrintCallback

对于较旧的东西,您需要进行某种挂钩 (int 0x2d / DebugService) 找到更多帮助的最佳位置可能 OSR 新闻组

编辑:在 Vista 及更高版本上,您需要设置调试打印过滤器注册表项以启用来自 DbgPrint[Ex] 的调试输出消息(对于 KdPrint,您需要内核调试器 IIRC)

于 2010-04-21T13:44:50.930 回答