共用方式為


建立效能延伸模組 DLL

重要

由於顯著的效能和可靠性限制,提供本主題描述的效能計數器資料的方法未來可能會改變或無法使用。 相反地,Microsoft 建議您使用 使用 2.0 版提供計數器資料 中所述的 方法來建立新的效能計數器,並移轉現有的效能計數器以使用該方法。

V1 提供者會使用提供計數器資料的效能 DLL 給取用者。 效能 DLL 必須匯出 OpenPerformanceDataCollectPerformanceDataClosePerformanceData 函式。 一般而言,您會使用模組定義 (.def) 檔案,從 DLL 匯出函式。 當取用者查詢效能資料時,系統會呼叫這些函式。

當取用者第一次呼叫RegQueryValueEx時,或取用者使用RegOpenKeyRegConnectRegistry函式來開啟 HKEY_PERFORMANCE_DATA ,系統會針對電腦上註冊的每個提供者呼叫OpenPerformanceData函式。 例外狀況是,如果提供者指定它在 .INI 檔案區段中支援 [objects] 的物件清單。 在此情況下,只有在其中一個查詢的物件符合清單中的物件時,系統才會呼叫提供者。

OpenPerformanceData函式可讓每個提供者有機會初始化其效能資料結構。 然後,如果 OpenPerformanceData 函式成功傳回,系統會呼叫提供者的 CollectPerformanceData 函 式。 後續呼叫 RegQueryValueEx 會導致系統呼叫 CollectPerformanceData 函式。

當取用者完成收集效能資料時,它會在RegCloseKey函式的呼叫中指定 HKEY_PERFORMANCE_DATA 。 這會導致系統為每個提供者呼叫 ClosePerformanceData 函式。 接著會卸載提供者。

多個取用者可以同時收集效能資料。 系統只會在每次載入或卸載 DLL 時呼叫 OpenPerformanceDataClosePerformanceData 函式。

注意

請務必在 C++ 程式碼中包含 extern 「C」,以防止編譯器將裝飾新增至函式名稱;否則,系統可能無法找到您的函式。

注意

如果在載入效能 DLL、尋找函式或呼叫函式時發生錯誤,系統會在相同進程中停用後續集合的提供者。 此外,如果在特殊許可權進程中執行時發生這種情況,系統會將 [停用效能計數器 ] 值新增至 您的 [效能 ] 索引鍵,以防止未來載入提供者。

如需撰寫效能 DLL 的詳細資訊,請參閱下列主題: