TRACE_PERIODIC_CAPTURE_STATE_INFO 结构 (evntrace.h)

TraceQueryInformationTraceSetInformation 一起使用,以获取或设置与定期捕获状态相关的信息。

语法

typedef struct _TRACE_PERIODIC_CAPTURE_STATE_INFO {
  ULONG  CaptureStateFrequencyInSeconds;
  USHORT ProviderCount;
  USHORT Reserved;
} TRACE_PERIODIC_CAPTURE_STATE_INFO, *PTRACE_PERIODIC_CAPTURE_STATE_INFO;

成员

CaptureStateFrequencyInSeconds

状态捕获的频率(以秒为单位)。

ProviderCount

提供程序数。

Reserved

保留供将来使用。

注解

定期捕获状态是允许将捕获状态通知定期发送到提供程序的一种方法。 启用此功能后,通知将仅发送到以前已启用到当前会话的提供程序注册。 如果通知有任何) ,每个提供程序可以定义自己的响应 (。 请注意,提供程序为响应通知而记录的事件将发送到启用提供程序的每个 ETW 会话,类似于手动请求的捕获状态。

若要使用定期捕获状态,请:

  1. 分配 TRACE_PERIODIC_CAPTURE_STATE_INFO 类型的缓冲区。 缓冲区的大小应为:sizeof (TRACE_PERIODIC_CAPTURE_STATE_INFO) + (x * sizeof (GUID) ) ,其中 x 是要启用的提供程序数。
  2. 使用 TracePeriodicCaptureStateInfo 对TRACE_INFO_CLASS枚举调用 TraceQueryInformation 将缓冲区及其大小作为 TraceQueryInformation 的 TraceInformationInformationLength 参数传递。
  3. CaptureStateFrequencyInSecondsTRACE_PERIODIC_CAPTURE_STATE_INFO 设置为 Windows 版本支持的最小频率。 此值将来可能会更改,因此不建议使用硬编码。 如果频率低于最小值,则对 TraceSetInformation 的 调用将失败。
  4. TRACE_PERIODIC_CAPTURE_STATE_INFO 中的 ProviderCount 设置为传递的提供程序 GUID 数。
  5. TRACE_PERIODIC_CAPTURE_STATE_INFO 结构结束之后添加每个提供程序的 GUID。 这会使用从第一步 (x * sizeof (GUID) ) 分配的额外空间。
  6. 使用 TracePeriodicCaptureStateListInfo 从 TRACE_INFO_CLASS 枚举调用 TraceSetInformation
  7. 若要关闭定期捕获状态,请再次调用 TraceSetInformation ,其中 TracePeriodicCaptureStateListInfo 来自 TRACE_INFO_CLASSTraceInformation 为 NULL,0 作为 InformationLength

要求

   
标头 evntrace.h