效能計數器的新功能
本節說明針對每個版本新增至效能計數器的新功能。
Windows 10 20H1
如果您要直接從 登錄讀取效能資料,您現在可以執行僅限中繼資料的集合,以避免在建立可用的效能物件和計數器清單時發生不必要的工作。 如果您使用 MetadataGlobal
而不是 Global
在查詢中,所有已啟用中繼資料的提供者 DLL 都會略過資料收集步驟,可能會改善具有許多進程或執行緒之系統上的查詢效能。 未啟用中繼資料的提供者 DLL 將繼續如先前般運作。
如果您使用 效能 DLL 提供效能資料,您可以實作僅元資料集合的支援,以避免不必要的資料收集。 更新您的 Collect
函式以僅使用中繼資料來回應 MetadataGlobal
和 MetadataCostly
查詢, (使用 PERF_METADATA_NO_INSTANCES
或 PERF_METADATA_MULTIPLE_INSTANCES
NumInstances
,並省略回應) 的所有 PERF_INSTANCE_DEFINITION
區塊,然後將值為 1 的 Performance
登錄值 REG_DWORD
新增 Collect Supports Metadata
至服務的子機碼。
Windows 7 與 Windows Server 2008 R2
CTRPP工具已變更,以改善並簡化程式碼產生。 此工具現在只會產生標頭和資源檔。 如果您想要 (不建議使用舊程式碼產生行為) ,您可以使用新的 -legacy
引數。
- 您現在必須指定新的
-o
和-rc
引數,分別指定標頭和資源檔的名稱和資源檔的位置。 - 您可以使用選擇性的新
-prefix
引數來指定字串,以新增至所產生標頭檔中定義的全域變數和函式開頭。 - 如果您必須更新計數器資訊清單,使用新的程式碼產生,就不需要將先前的回呼實作與新的產生的程式碼合併,因為產生的程式碼中不再包含回呼。
下列資訊清單元素可以使用新的 symbol
屬性:
提供者和counterSet需要 屬性 symbol
,而且是計數器的選擇性屬性。 屬性可讓您提供符號名稱,您可以在呼叫提供者函式 (時用來參考每個元素,例如,呼叫 PerfCreateInstance) 時,可以使用計數器集合符號名稱。
Windows Vista
此版本已完全變更提供計數器資料的效能計數器架構。
先前,您已使用 INI 檔案來定義計數器資料,並實作在取用者程式中執行的效能 DLL,以在取用者要求時提供資料。 此架構已被取代,不建議用於新的程式碼,因為有顯著的效能和可靠性問題。
新的架構會使用資訊清單來定義計數器資料,並在提供者的程式中執行程式碼,以在取用者要求時提供資料。 如需其他詳細資料,請參閱 使用 2.0 版提供計數器資料。
此版本已新增下列函式:
- ControlCallback
- PerfCreateInstance
- PerfDeleteInstance
- PerfQueryInstance
- PerfSetCounterSetInfo
- PerfSetULongCounterValue
- PerfSetULongLongCounterValue
- PerfSetCounterRefValue
- PerfStartProvider
- PerfStopProvider
此版本已新增下列結構:
如需您在資訊清單中用來定義計數器的 XML 元素清單,請參閱 效能計數器架構。
如需剖析資訊清單的 CTRPP 前置處理器工具資訊,並產生您作為提供者起點的程式碼,請參閱 CTRPP。