【问题标题】:Windows Kernel Debugger API?...accessing stringsWindows 内核调试器 API?...访问字符串
【发布时间】:2011-02-10 13:12:47
【问题描述】:

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

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

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

【问题讨论】:

标签: windows winapi debugging kernel debugview


【解决方案1】:

在用户态,你havetheDBWINAPI”:

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

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

在旧的东西上,你需要做一些挂钩(int 0x2d / DebugService)寻找更多帮助的最佳位置可能是theOSRnewsgroup

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

【讨论】:

  • 非常感谢您的回复,但我仍然有一些问题......我已经写了这些问题作为答案!
猜你喜欢
  • 2011-10-03
  • 1970-01-01
  • 2014-07-30
  • 2014-09-15
  • 2012-09-23
  • 2015-09-22
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
相关资源
最近更新 更多