存储在 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);
  }