问题标签 [windows-wpp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
driver - 如何将我的驱动程序的 WPP 提供程序添加到 Windows 性能记录器配置文件?
我有一个配置了 WPP 跟踪的驱动程序。
我有兴趣看到我的驱动程序的 WPP 跟踪消息出现在 WPA 时间线中,以及其他系统事件。
我尝试将驱动程序的 WPP 提供程序 GUID 作为 EventProvider 添加到自定义配置文件,但它不起作用。
没有关于如何将 WPP(经典)提供程序添加到配置文件的文档,也不清楚我是应该自己发起会话,还是 WPR 会为我做。
linux - 用于 Linux 的 WPP 跟踪
我正在寻找一种将跟踪输出到我的代码中的日志文件的方法,该代码在 linux 上运行。
我不想在我部署它的每个地方都将打印信息包含在二进制文件中。
在 Windows 中,我只是使用WPP进行跟踪,而没有将实际的跟踪字符串放入我的二进制文件中。
如何在 Linux 中实现这一点?
c++ - 如何配置 WPP 以检测头文件(例如模板)中的代码?
我的驱动程序项目使用了几个在 c++ 头文件中实现的模板类。
默认情况下,WPP 仅在 .c 和 .cpp 源文件上运行,根本不处理 .h 文件。
我已按照如何从头文件生成跟踪消息中的说明进行操作? 来自 MSDN,但是 .h 文件仍然没有被 WPP 处理。
c++ - 如何在带有 WppEnabled 标志的用户模式应用程序中使用 WPP 跟踪
我想在用户模式应用程序中使用 WPP 跟踪,如下所示:
那只是更改 .vcxproj 文件以添加 WppEnabled 标志,也许我需要添加更多标志。我试图这样做,但我失败了。
我知道我可以使用 tracewpp.exe 命令生成 tmh 文件并使用 wpp 跟踪,但不允许这样做。我的平台工具集是 Visual Studio 2015 (v140)。在我的用户模式项目中使用 WppEnabled 标志来启用 WPP 跟踪是否可行,以及如何?谢谢!
etw - 如何为特定驱动程序打开 ETW/WPP?
就像在主题中一样,我想知道如何为特定的 Windows 驱动程序“打开”ETW 或 WPP。让我们以 vdrvroot.sys 为例。当我们反汇编这个驱动程序时,我们在 DriverEntry 几个函数调用的开头看到:
这会打开跟踪功能。对于 McGenEventRegister 中的 ETW,我看到以下提供程序注册:
其中 VDRVROOT_PROVIDER_ID 等于 900448e4-b685-dd11-ad8b-0800200c9a66。我试图记录最终的日志:
并通过 TraceView 查看日志文件。除了在这个驱动程序中没有捕获任何东西之外,EtwWrite 只在一个地方被调用,我可能没有用我的动作触发。问题是我是否可以在不反转驱动程序的情况下打开上述跟踪机制;)?
visual-c++ - WPP 跟踪的宏别名
我开始在我的驱动程序中使用 WPP 进行跟踪。我定义了宏DoTraceLevelMessage
以支持日志级别(类似于 TraceDrv 示例代码)。我的跟踪代码如下所示:
这使得跟踪线有点长,所以我想使用某种别名,例如:
所以上面的代码将如下所示:
我似乎无法使其与 WPP 一起使用。我认为 WPP 预处理器在编译器预处理器之前运行,因此上述宏不会像我预期的那样扩展。我收到以下编译错误:
当我使用DoTraceLevelMessage
宏时,一切正常。知道如何定义这样的别名吗?
c++ - Evntrace API:在 StartTrace() 之后不写入日志(使用 WPP 跟踪)
我需要在启动我的应用程序时启动 Logging 会话。我编写了日志初始化 / deinit 函数,创建了 *.etl 文件,但会话结束后它是空的。我正在使用 WPP 跟踪(用于内核以及用户空间)。我不知道我做错了什么。我已经阅读了很多关于此 API 的文章和文档,但无法提出解决方案。
我正在使用 VERBOSE 标志来编写与我的应用程序相关的所有内容,我还为跟踪会话 (ToolSessionGuid) 和与我的应用程序相关的 GUID (GUID_APP) 定义了 GUID。
这是我对 Init/deinit 函数的实现:
在 main 函数中,我正在初始化结构和句柄:
然后用 wpp trace 做一些事情并用 deinit 函数关闭会话:
visual-studio - Windows SDK 版本 10.0.15063.0 和 10.0.17134.0 之间 tracewpp 的行为变化
我有一个应用程序依赖于通过 wpp 框架进行的用户模式跟踪。然而,微软在两个最新版本的 Windows SDK 中引入了一些更改,tracewpp.exe
以某种方式破坏了该工具。我看到的实际问题如下:
& "C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\tracewpp.exe" ... 更多参数 ...
按预期工作(我检查了旧版本的 SDK,低至 8.0 - 一切都很好)。
但是,当我尝试使用较新版本的 SDK 执行相同的构建时,构建会因一个相当神秘的错误而中断:
& "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x64\tracewpp.exe" ...所有相同的参数...
结果是:
provider.tpl(0) : 错误 wpp : (Template::DoId) Var not found: Provider tracewpp(0) : error wpp : (RealMain) 致命错误:模板解析错误
有问题的模板最初来自这里:https ://github.com/antoxar/WPPTracingSample/blob/master/sample/WppTracing/WppConfig/Rev1/provider.tpl
有人可以指出我的 tracewpp.exe 工具的更改日志,概述最近对其进行了哪些更改,或者以其他方式阐明上述问题吗?
ndis - Logman 定期刷新缓冲区到文件
我正在对导致随机蓝屏的 NDIS 微型端口过滤器驱动程序进行故障排除。我为我的驱动程序启用了驱动程序验证程序。我还尝试使用以下命令通过logman收集我的驱动程序跟踪日志 -
logman create trace myndis -p {MY_GUID} -ct system -f bincirc -max 5000 -o C:\DriverTrace.etl
但问题是除非明确停止跟踪,否则logman不会写入文件。当 BSOD 发生时,我认为跟踪被杀死而不是被操作系统停止,这导致我的输出 etl 文件为空。
我尝试过-ft ::1
每 1 秒将缓冲区刷新到文件中,但这似乎不起作用。我也尝试过-rt
flag 但没有帮助。如何实现logman不断写入 etl 文件?
customization - 将 Windows WPP 软件跟踪合并到 SCons 构建中的最简单方法是什么?
我以如此具体的方式问我的问题,因为我担心更通用的形式可能会导致关于如何以最合适的方式最好地完成事情的过度理论讨论(比如关于前处理和后处理的问题)缺点)。
WPP 合并实际上需要在编译文件之前执行附加命令(命令),并且即使构建过程发现有必要编译文件而不考虑 WPP。
我要说的是,这很容易通过共享 Visual Studio 属性页文件中的几行定义来实现,这使得它以对开发人员绝对透明的方式适用于多个项目、文件夹等中的多个文件。
因此,我想知道这是否可以用 SCons 以同样简单的方式完成?我对 SCons 或 MSBuild 框架没有任何深入的了解;我和他们一起工作是为了简单的实际使用,所以我真的很感激一个实用和有用的建议。