配置和启动 SystemTraceProvider 会话

SystemTraceProvider 是一个内核提供程序,其中包含 Windows 7、Windows Server 2008 R2 及更高版本支持的预定义内核事件集。 在 Windows 7 和 Windows Server 2008 R2 上,SystemTraceProvider 只能用于 NT 内核记录器会话。

在 Windows 8、Windows Server 2012 及更高版本上,SystemTraceProvider 最多可多路复用 8 个记录器会话。 记录器会话的前两个槽是为 NT 内核记录器和循环内核上下文记录器 保留的。

有关将 NT 内核记录器会话用作跟踪提供程序的详细信息,请参阅 配置和启动 NT 内核记录器会话

在 Windows 10 SDK 内部版本 20348 及更高版本中,SystemTraceProvider 可以通过单独的系统提供程序进行配置,这些提供程序可以使用 EnableTraceEx2 进行控制,例如 Windows 事件提供程序的标准事件跟踪。 有关系统提供程序、关键字以及相应的旧标志和组的完整列表,请参阅 系统提供程序

启用 SystemTraceProvider 会话

若要使 SystemTraceProvider 能够启动 NT 内核记录器以外的会话,请执行以下命令:

tracelog -start MySession -f c:\Kernel1.etl -eflag PROC_THREAD+LOADER+CSWITCH

若要以编程方式使 SystemTraceProvider 能够启动 NT 内核记录器以外的会话,请使用以下步骤。

  • 定义专用记录器名称。

    #define PRIVATE_LOGGER_NAME L“某些专用跟踪会话”

  • 在控制器上,设置 EVENT_TRACE_PROPERTIES 结构的以下成员。

    LogFileMode 设置为 EVENT_TRACE_SYSTEM_LOGGER_MODE

    LoggerName 设置为专用记录器,而不是 KERNEL_LOGGER_NAME

    确保未将 EVENT_TRACE_PROPERTIES 结构的 Wnode.Guid 成员设置为 SystemTraceControlGuid。 必须为此成员分配新的 GUID

  • 在使用者中,将 EVENT_TRACE_LOGFILE 结构的 LoggerName 成员设置为此专用记录器。

注意

如果希望非管理员或非 TCB 进程能够代表第三方应用程序使用 SystemTraceProvider 启动分析跟踪会话,则需要授予用户配置文件权限,然后将此用户添加到为记录器会话创建的会话 GUID () 和系统跟踪提供程序 GUID 以启用系统跟踪提供程序。 有关详细信息,请参阅 EventAccessControl 函数。

 

配置和启动专用记录器会话

配置和启动自动记录器会话

配置和启动事件跟踪会话

配置和启动 NT 内核记录器会话

系统提供程序

更新事件跟踪会话