问题标签 [etw]
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.
winapi - 来自 NDIS 等内核提供程序时的 ETW PID 准确性
我一直在玩 Windows 事件的事件跟踪,特别是网络事件,NDIS-PacketCapture 和 TCPIP。每个 ETW 消息都有 PID 字段,我试图找出分配背后的逻辑。似乎绝大多数 TCPIP 事件在 PID 字段中具有正确的 PID,并且大多数 NDIS 数据包捕获也是如此。然而,在很多情况下,可能有 30% 的 PID 显然是不正确的。这些不正确的 PID 信息中的一些是假阳性和一些假阴性。例如,它会错过来自 Chrome 的某些数据包,它只会为这种情况分配 PID 0(假阴性)。有时我会获取正在运行的应用程序的 PID,以在 PID 字段中捕获这些事件(误报)。据我分析,
另一个值得注意的有趣的事情是,一些 TCPIP 事件包含一个“PID”属性,该属性有时与标头中的 PID 一致。这个“PID”属性似乎比标头 PID 更准确,但它仍然表现出误报和误报。
我看到错误了吗?我不了解 ETW 消息中 PID 字段的用途吗?这些供应商是否只是选择在他们喜欢的时候放入垃圾?
我在 C++ 中使用 Win32/64 跟踪函数,例如 StartTrace、EnableTraceEx2、OpenTrace 和 ProcessEventRecordProperties(PEVENT_RECORD pEvent) 回调等。更具体地说,我修改了这个示例以提供 NDIS-PacketCapture 和 TCPIP 事件:http://msdn.microsoft.com/en-us/library/windows/desktop/ee441329(v=vs.85).aspx
这是典型 TCPIP 事件的所有值的样子(我使用 xxx.. 作为 IP 和端口号)
任何帮助是极大的赞赏。
c++ - 从用户模式应用程序中使用 WPP
我尝试在用户模式下使用 WPP,设法在 VS10 中成功使用它,通过添加到 proj 文件来发布目标:
然后 Wpp.targets 定义如下:
此步骤取自文章: http: //www.devproconnections.com/article/visual-studio-2010/wpp-tracing-in-visual-c-2010-projects
当尝试在 VS10->Debug 下编译它时,我可以看到正在生成“tmh”文件,但实际上我想记录一些东西时出现错误:
DoTraceMessage(TRACE_ERROR, L"啊哈"); // 错误 C2065:“TRACE_ERROR”:未声明的标识符错误 C3861:“WPP_CALL_Application_Test_cpp”:找不到标识符
正如我所说,我对 VS10->Release 目标上的相同代码没有任何问题。这是我的定义供参考:
有谁知道为什么这可能使用发布模式但在调试模式下不起作用?
windows - 如何强制事件跟踪会话更频繁地刷新数据?
我有一个使用 WPP 写入大量跟踪日志的驱动程序。
我已配置AutoLogger注册表项以将事件写入 .etl 文件。
日志记录会话成功启动并创建了文件,但似乎数据每隔一段时间就会刷新到磁盘一次。是否可以使其更频繁甚至实时刷新数据?
我尝试使用“Flush Timer”,但基于 MSDN 中所写的内容以及它所产生的效果,这不是我想要的。
谢谢。
windows - 在 Windows 内核系统调用跟踪中,这些神秘地址是什么?
我正在使用 Windows 事件跟踪 (ETW) 对 Windows Server 2008 R2 中的系统调用进行内核跟踪。
我在跑步:
在生成的内核跟踪中,我正在查看 SysCallAddress 属性,我看到了很多我所期望的:例如 0xFFFFF80001999EE0,它是 nt!NtWriteFile。
问题是我在 0xFFFFF960 范围内看到很多地址,例如 0xFFFFF9600004421C,我不知道这些地址是什么。内核调试器中的 ln 命令不返回任何这些地址的信息。有人知道内核跟踪器将这些地址视为系统调用的内容吗?
windows - 如何获取内核模块 nt 和 win32k 的地址?
我需要知道加载 nt 和 win32k 的基地址。我可以通过在启用内核调试的情况下启动系统、启动内核调试会话并运行命令lm
来获取已加载模块的列表来查找此信息。
我想要做的是以编程方式确定这两个模块的加载位置,而无需启动到调试模式并使用内核调试器。我需要用于解析 Windows 事件跟踪日志文件中的系统调用的基地址。
我正在使用的系统正在运行 Windows Server 2008 R2。
performance - 是否可以使用 ETW(Windows 事件跟踪)来收集内存统计信息?
是否可以使用 ETW 来获取所有进程和系统的内存统计信息?对于内存统计,我的意思是:例如提交字节、私有字节、分页池、工作集、...
我找不到任何有关使用 xperf 获取和查看内存统计信息的信息。它总是与 CPU、磁盘、网络有关。
可能会使用性能计数器来获取此类信息,但是如何在一个图表中以图形方式覆盖统计信息(如何关联/同步时间戳)?
c++ - 驱动程序中的 ETW 跟踪 - 后处理
我在驱动程序中有 ETW 跟踪;清单文件已正确创建,资源全部编译,等等。在目标机器上,我以管理员身份运行此命令:
wevtutil im myManifest.xml
我没有错误。然后,我运行(以管理员身份):
logman 创建跟踪 myProviderName -o Log.etl -p "{myProviderGUID}" -f bincirc -max 1000
没有错误。然后我等待足够的时间来执行一些跟踪,然后我运行这些命令(以管理员身份):
logman 停止 myProviderName
tracerpt Log000001.etl
现在我遇到的问题是生成的文件dumpfile.xml
根本没有显示我的任何痕迹的记录。它显示了设置详细信息的基本结构,包括提供程序 GUID 等。
所以我的问题是:在上述过程中我是否缺少一个步骤,或者问题一定出在我的跟踪代码上?
winapi - 为什么我的 Windows 事件跟踪不起作用?
我试图弄清楚如何使用 Windows 的事件跟踪......但我失败了。
为什么这段代码会给我错误代码ERROR_WMI_INSTANCE_NOT_FOUND
?
.net-4.5 - ETW 自定义控制器和消费者(使用 .net 4.5 EventSource 的提供者)
我一直在尝试在 .net 4.5 中使用 ETW。我有一个使用 EventSource 编写消息的小型示例应用程序,但是,我很难理解如何创建自己的 ETW 控制器和使用者应用程序。
我使用 PerfView 启用并查看事件源是否正常工作,以及在同一程序集中添加 EventListner。现在我希望能够拥有自己的自定义“PerfView”来管理和查看实时跟踪。我只是不知道如何绑定到事件源。
c - Windows 文件系统过滤器驱动程序
我正在尝试创建一个小型文件系统过滤器驱动程序,用于测试/演示如何在 Windows Server 2008 R2 中使用 ETW 跟踪过滤器驱动程序对 I/O 性能的影响。我已经下载了 DDK 并构建了一些示例,但我在尝试过滤特定磁盘设备或特定文件扩展名时遇到问题,这两种方法都适用于我正在尝试执行的任务。我想要做的是将过滤器驱动程序隔离到特定的磁盘/卷或具有特定扩展名的文件,以显示过滤器驱动程序处理请求如何影响 I/O 性能。我一直在使用直通示例进行测试,并且在我尝试引入延迟的任何地方都会受到负面影响,因为我无法将操作正确地过滤到我正在尝试做的事情。
这绝不是一个功能齐全的驱动程序,理想情况下,我希望能够拦截/影响特定卷或特定文件扩展名上的 IRP_MJ_WRITE 操作,以便我可以显示过滤器驱动程序对这些操作的影响。有什么简单的方法可以做到这一点,而我只是在这里想念吗?我完全理解人们以编写这些类型的驱动程序为生,但如果可能的话,我真的希望能够制作一个简单的过滤器。
谢谢!