配置和启动 SystemTraceProvider 会话
SystemTraceProvider 是一个内核提供程序,其中包含Windows 7、Windows Server 2008 R2 及更高版本支持的预定义内核事件集。 在 Windows 7 和 Windows Server 2008 R2 上,SystemTraceProvider 只能用于 NT 内核记录器会话。
在Windows 8、Windows Server 2012和更高版本上,系统TraceProvider 最多可以多路复用 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 函数。
相关主题