共用方式為


2.系統和事件提供者定義

Windows Performance Recorder (WPR) 錄製設定檔會儲存在副檔名為 .wprp 的 XML 檔案中。 系統提供者定義會指定 .wprp 檔案中的系統關鍵字、堆疊和記憶體集區標籤。

提供者定義

.wprp 檔案中的專案必須以下列順序定義:

  1. 所有收集器

  2. 系統提供者

  3. 事件提供者

  4. 堆積提供者,如果有的話

  5. 所有設定檔

在某些情況下,可以在 設定檔定義之前定義提供者,而不是之前定義提供者。 例如:

<EventCollector Id="Collector1" Name="Sample Event Collector">
   <BufferSize Value="128"/>
   <Buffers Value="64"/>
</EventCollector>

<Profile Id="Sample.Verbose.File" Name="Sample" Description="Sample profile" DetailLevel="Verbose" LoggingMode="File">
   <Collectors>
      <EventCollectorId Value="Collector1">
         <EventProviders>
            <EventProvider Id="EventProvider_Microsoft-Windows-Kernel-Power" Name="Microsoft-Windows-Kernel-Power" NonPagedMemory="true">
               <Keywords>
                  <Keyword Value="0x4"/>
               </Keywords>
            </EventProvider>
         </EventProviders>
      </EventCollectorId>
   </Collectors>
</Profile>

系統提供者

系統提供者定義的唯一必要屬性是 Id。內部 XML 標記會指定要啟用的關鍵字、堆疊和集區標籤。 如需所有支援的關鍵字和堆疊清單,請參閱SystemProvider) 中的Stack和關鍵字 (。

下列程式碼範例顯示系統提供者定義。

<SystemProvider
  Id="system-provider">
  <Keywords>
    <Keyword
      Value="ProcessThread"/>
    <Keyword
      Value="Loader"/>
    <Keyword
      Value="CSwitch"/>
  </Keywords>
  <Stacks>
    <Stack
      Value="ThreadCreate"/>
    <Stack
      Value="ReadyThread"/>
    <Stack
      Value="CSwitch"/>
  </Stacks>
  <PoolTags>
    <PoolTag
      Value="a*"/>
    <PoolTag
      Value="b*"/>
    <PoolTag
      Value="c*"/>
    <PoolTag
      Value="d*"/>
  </PoolTags>
</SystemProvider>

事件提供者

事件提供者定義會指定要使用的 Windows (ETW 事件追蹤) 提供者,以及要啟用的關鍵字和層級。 事件提供者定義需要強制 的 Name 屬性和必要的 Id 屬性。

Name屬性會指定下列其中一個名稱:

  • 已註冊的 Crimson 提供者名稱,例如 「Microsoft-Windows-Search-Core」。

  • 提供者 GUID,例如 「49c2c27c-fe2d-40bf-8c4e-c3fb518037e7」。

  • 舊版提供者的名稱,例如 「IE6」。

  • 特殊大小寫名稱,例如 「PerfTrack」 或 「DotNetProvider」。

您可以使用下列選擇性屬性來微調提供者參數:

  • 堆疊:指出提供者是否擷取堆疊。 預設設定為 「false」。

  • 層級:指定 ETW 記錄層級。 預設設定為 0xFF。

  • NonPagedMemory:指出 WPR 是否針對這個提供者的緩衝區使用非分頁式記憶體。 預設設定為 「false」。

    警告 某些 Windows 事件提供者需要在追蹤擷取期間使用非分頁式記憶體。 需要 NonPagedMemory 的事件提供者範例為 EventProvider_Microsoft-Windows-Win32k

  • CaptureStateOnly:如果設定為 「true」,表示 WPR 只會在指定的擷取狀態啟用此提供者。

  • SID:指定記錄事件的擴充資料是否包含使用者的安全性識別碼 (SID) 。

  • TSID:如果設定為 「true」,則會指定終端機會話識別碼來擴充記錄事件的資料。

選擇性的內部 XML 標籤會指定要啟用的關鍵字。 不同于系統提供者,事件提供者沒有定義的文字常數。 因此,事件提供者具有十六進位值。 不過,語法與系統提供者的語法相同。 如果您未指定關鍵字,則預設值為 0xFFFFFFFFFFFFFFFF。

堆積事件提供者

堆積提供者定義會指定 WPR 擷取堆積事件之進程的進程識別碼。 識別碼 是唯一的必要屬性。 HeapProcessId子項目並非必要專案。 此元素會指定您要分析之進程的進程 識別碼 屬性。 下列範例示範如何執行。

<HeapEventProvider
  Id="Base_Heap_Provider">
</HeapEventProvider>
<HeapEventProvider
  Base="Base_Heap_Provider"
  Id="Derived_Heap_Provider">
  <HeapProcessIds Operation="Set">
    <HeapProcessId Value="2314"/>
  </HeapProcessIds>
</HeapEventProvider>

擷取狀態提供者

不同于在整個追蹤會話中啟用的一般提供者,只有在您儲存或啟動擷取會話時,才會啟用擷取狀態提供者。 下列範例顯示一般和擷取狀態提供者。

<EventProvider Id="sample-provider" Name="SampleProvider" NonPagedMemory="true" Level="5">
  <Keywords>
    <Keyword Value="0x98"/> <!-- Provider is enabled with these keywords throughout the tracing session. -->
  </Keywords>
  <CaptureStateOnStart>
    <Keyword Value="0xff4"/> <!-- Provider is enabled with these keywords when tracing is started. -->
  </CaptureStateOnStart>
  <CaptureStateOnSave>
    <Keyword Value="0x118"/> <!-- Provider is enabled with these keywords when tracing is saved. -->
  </CaptureStateOnSave>
</EventProvider>

<EventProvider Id="EventProvider_DWMWin32k_CaptureState" Name="e7ef96be-969f-414f-97d7-3ddb7b558ccc" NonPagedMemory="true" CaptureStateOnly="true" >
  <!-- CaptureStateOnly="true" means provider is not enabled throughout the tracing session. -->
  <CaptureStateOnSave>
    <Keyword Value="0x80000"/> <!-- Provider is enabled with these keywords when tracing is saved. -->
  </CaptureStateOnSave>
</EventProvider>

範例

下列程式碼範例會定義兩個事件提供者。

<EventProvider
  Id="Win32K-provider"
  Name="Microsoft-Windows-Win32K"
  NonPagedMemory="true"
  Stack="true">
  <Keywords>
    <Keyword
      Value="0x240000"/>
  </Keywords>
</EventProvider>

<EventProvider
  Id="Search-Core-provider"
  Name="Microsoft-Windows-Search-Core"/>

撰寫錄製設定檔

1.收集器定義

3.設定檔定義

SystemProvider

EventProvider

HeapEventProvider

關鍵字 (在 SystemProvider 中)

堆疊

PoolTag