我使用点击数过滤器:
session.EnableKernelProvider(KernelTraceEventParser.Keywords.DiskFileIO |
KernelTraceEventParser.Keywords.FileIOInit |
KernelTraceEventParser.Keywords.FileIO);
我订阅了DiskIORead
和FileIORead
事件。
如果我通过记事本打开文件,则不会发生该事件。
但是,如果我通过记事本++打开文件,则会发生这种情况。
UPD:
完整代码:
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。
为Source
添加FileIOQueryInfo
,像这样
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
中打开一个单词文件进行了测试PS
如果要按过程进行过滤,则可以使用
obj.ProcessName == "notepad"
参考
强烈推荐通过GIT进行此doc
”>