存储在 ETW 中的设备驱动程序映像列表在哪里?
Where is the list of device driver images stored in ETW?
我正在尝试通过 WPA 使用的强大 TraceProcessing 库以编程方式从 ETW 获取设备驱动器列表。
using ITraceProcessor processor = TraceProcessor.Create(myEtlFile, new
TraceProcessorSettings
{
AllowLostEvents = true,
AllowTimeInversion = true,
});
myProcesses = processor.UseProcesses();
foreach (var process in myProcesses.Result.Processes)
{
foreach (var dll in process.Images)
{
// get dll.Path, dll.FileVersion, dll.ProductVersion, dll.ProductName, dll.FileVersionNumber, dll.FileDescription
}
}
这适用于除内核 (System(4)) 之外的所有进程。为什么我的系统进程中只有3个dll?我希望系统进程中的驱动程序文件也在那里。在 CPU 采样中,图像就在那里,所以看起来一切都在那里。
如果数据存在,这对于检查驱动程序版本非常有用。但到目前为止我找不到它。我在这里遗漏了什么吗?
很高兴听到您喜欢使用 TraceProcessor 库!
设备驱动程序由 ETW 针对“空闲 (0)”进程进行记录,示例如下:
using var tp = TraceProcessor.Create(@"trace.etl");
var processes = tp.UseProcesses();
tp.Process();
var idleProcess = processes.Result.Processes.FirstOrDefault(x => x.Id == 0);
foreach (var image in idleProcess?.Images)
{
Console.WriteLine(image.Path);
}
我正在尝试通过 WPA 使用的强大 TraceProcessing 库以编程方式从 ETW 获取设备驱动器列表。
using ITraceProcessor processor = TraceProcessor.Create(myEtlFile, new
TraceProcessorSettings
{
AllowLostEvents = true,
AllowTimeInversion = true,
});
myProcesses = processor.UseProcesses();
foreach (var process in myProcesses.Result.Processes)
{
foreach (var dll in process.Images)
{
// get dll.Path, dll.FileVersion, dll.ProductVersion, dll.ProductName, dll.FileVersionNumber, dll.FileDescription
}
}
这适用于除内核 (System(4)) 之外的所有进程。为什么我的系统进程中只有3个dll?我希望系统进程中的驱动程序文件也在那里。在 CPU 采样中,图像就在那里,所以看起来一切都在那里。 如果数据存在,这对于检查驱动程序版本非常有用。但到目前为止我找不到它。我在这里遗漏了什么吗?
很高兴听到您喜欢使用 TraceProcessor 库!
设备驱动程序由 ETW 针对“空闲 (0)”进程进行记录,示例如下:
using var tp = TraceProcessor.Create(@"trace.etl");
var processes = tp.UseProcesses();
tp.Process();
var idleProcess = processes.Result.Processes.FirstOrDefault(x => x.Id == 0);
foreach (var image in idleProcess?.Images)
{
Console.WriteLine(image.Path);
}