共用方式為


建立效能延伸模組 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 的詳細資訊,請參閱下列主題: