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 成员设置为此专用记录器。
注释
如果希望非管理员或非 TCP 控制块(TCB)进程能够代表第三方应用程序使用 SystemTraceProvider 启动分析跟踪会话,则需要授予用户配置文件权限,然后将此用户添加到会话 GUID (为记录器会话创建)和系统跟踪提供程序 GUID 以启用系统跟踪提供程序。 有关详细信息,请参阅 EventAccessControl 函数。
相关主题