c++ - 驱动程序中的 ETW 跟踪——过程后

标签 c++ windows wdk etw

我在驱动程序中有 ETW 跟踪; list 文件已正确创建,资源已全部编译等。在目标机器上,我以管理员身份运行此命令:

wevtutil im myManifest.xml

我没有收到任何错误。然后,我运行(以管理员身份):

logman create trace myProviderName -o Log.etl -p "{myProviderGUID}" -f bincirc -max 1000

没有错误。然后我等待足够的时间来执行一些跟踪,然后我运行这些命令(作为管理员):

logman stop myProviderName

tracerpt Log000001.etl

现在我遇到的问题是生成的文件 dumpfile.xml 显示的记录根本没有我的踪迹。它显示了设置详细信息的基本结构,包括提供程序 GUID 等。

所以我的问题是:在上述过程中我是否遗漏了一个步骤,或者问题一定出在我的跟踪代码上吗?

最佳答案

原来是有问题;虽然它不是我的代码。我没有在 list 中包含我的事件的操作码,因此没有记录任何事件。

如果有人无意中看到这篇文章,它可能会帮助您注意到您的事件必须具有 channel 、级别、操作码和模板,甚至是基本功能。此外,上述过程缺少一个步骤。我需要执行以下操作:

  1. 右键单击“我的电脑”并选择“管理”
  2. 单击性能 > 数据收集器集 > 用户定义 > myProvider
  3. 在右侧 Pane 中右键单击 myProvider,选择“属性”
  4. 根据我在 list 中指定的设置关键字(任意)、关键字(全部)和级别
  5. 重新启动我的机器,并通过 logman 重新启用跟踪。

上述过程(在问题中+上面的补充)将创建一个日志 session 并从生成的 ETL 文件中生成一个基本的可读日志输出。

关于c++ - 驱动程序中的 ETW 跟踪——过程后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10953793/

相关文章:

c++ - std::string::c_str() 如何返回不会导致内存泄漏或未定义的 c 字符串内容的 c 字符串?

c++ - 如何防止在 Luabind 类中创建新属性?

c++ - 使用迭代器通过元素数量而不是键从 std::map 获取子映射

c++ - 串行通信 C++ ReadFile()

Python ctypes 无法在结构中传递内存数组

windows - KeWaitForSingleObject() 上的 'WaitReason' 参数的用途是什么?

c++ - 宏重新定义警告

c++ - 严格标准-符合Visual C++

c++ - 如何使用 Google Test 测试 EXE? (2)

c# - Windows shell 扩展 : context menu when more than 16 files are selected