gpt4 book ai didi

c# - 在 Windows 事件跟踪 (ETW) 中,TraceEventSession 不会从记事本中捕获读取事件

转载 作者:行者123 更新时间:2023-12-03 11:10:19 38 4
gpt4 key购买 nike

我使用点击过滤器:

session.EnableKernelProvider(KernelTraceEventParser.Keywords.DiskFileIO |
KernelTraceEventParser.Keywords.FileIOInit |
KernelTraceEventParser.Keywords.FileIO);

我订阅了 DiskIOReadFileIORead事件。

如果我通过记事本打开文件,则不会发生该事件。

但是,如果我通过 Notepad++ 打开文件,则会发生这种情况。

更新:

完整代码:
class Program
{
static void Main(string[] args)
{

using(var session=new TraceEventSession("Test"))
{
session.EnableKernelProvider(KernelTraceEventParser.Keywords.DiskFileIO |
KernelTraceEventParser.Keywords.FileIOInit |
KernelTraceEventParser.Keywords.FileIO);


session.Source.Kernel.FileIORead += Kernel_FileIORead;
session.Source.Kernel.DiskIORead += Kernel_DiskIORead;
session.Source.Process();
}
}

private static void Kernel_FileIORead(Microsoft.Diagnostics.Tracing.Parsers.Kernel.FileIOReadWriteTraceData obj)
{
if (obj.FileName.ToUpper().StartsWith(@"E"))
{
Console.WriteLine("2:" + obj.FileName);
}
}

private static void Kernel_DiskIORead(Microsoft.Diagnostics.Tracing.Parsers.Kernel.DiskIOTraceData obj)
{
if (obj.FileName.ToUpper().StartsWith(@"E"))
{
Console.WriteLine("2:"+obj.FileName);
}
}
}

我使用 Windows 10。

最佳答案

添加 SourceFileIOQueryInfo像这样
session.Source.Kernel.FileIOQueryInfo += Kernel_FileIOQuery;
事件处理程序

private static void Kernel_FileIOQuery(FileIOInfoTraceData obj)
{
if (obj.FileName.ToUpper().StartsWith(@"E"))
{
Console.WriteLine("queryInfo:" + obj.FileName);
}
}

注:通过分区复制问题 E:\
通过在 E:\中打开一个txt文件来测试它通过记事本、写字板。
通过在 E:\ drive中打开一个word文件来测试它通过 MSWord

PS

如果你想按进程过滤,那么你可以使用 obj.ProcessName == "notepad"
引用文献

强烈推荐通过这个 doc来自 GIT

关于c# - 在 Windows 事件跟踪 (ETW) 中,TraceEventSession 不会从记事本中捕获读取事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60119460/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com