共用方式為


PdhEnumObjectItemsA 函式 (pdh.h)

傳回指定之物件的計數器和實例名稱,這些名稱存在於指定的計算機上或指定的記錄檔中。

若要使用數據源的句柄,請使用 PdhEnumObjectItemsH 函式。

語法

PDH_FUNCTION PdhEnumObjectItemsA(
  [in]      LPCSTR  szDataSource,
  [in]      LPCSTR  szMachineName,
  [in]      LPCSTR  szObjectName,
  [out]     PZZSTR  mszCounterList,
  [in, out] LPDWORD pcchCounterListLength,
  [out]     PZZSTR  mszInstanceList,
  [in, out] LPDWORD pcchInstanceListLength,
  [in]      DWORD   dwDetailLevel,
  [in]      DWORD   dwFlags
);

參數

[in] szDataSource

Null-terminated 字串,指定用來列舉計數器和實例名稱的記錄檔名稱。 如果 NULL,函式會使用 中指定的計算機

szMachineName 參數來列舉名稱。

[in] szMachineName

Null-terminated 字串,指定包含您要列舉之計數器和實例名稱的計算機名稱。

在計算機名稱中包含前置斜線,例如 \computername。

如果 szDataSource 參數 NULL,您可以將 szMachineName 設定為 NULL 來指定本機計算機。

[in] szObjectName

Null-terminated 字串,指定您要列舉其計數器和實例名稱的物件名稱。

[out] mszCounterList

呼叫端配置的緩衝區,接收指定物件所提供的 null終止計數器名稱清單。 清單包含唯一的計數器名稱。 清單會以兩個 NULL 字元終止。 如果 pcchCounterListLength 參數為零,則設定為 NULL

[in, out] pcchCounterListLength

mszCounterList 緩衝區的大小,TCHARs。 如果輸入和物件存在零,函式會傳回PDH_MORE_DATA,並將此參數設定為所需的緩衝區大小。 如果緩衝區大於所需的大小,函式會將此參數設定為使用之緩衝區的實際大小。 如果輸入上的指定大小大於零,但小於所需的大小,則不應該依賴傳回的大小來重新配置緩衝區。

[out] mszInstanceList

呼叫端配置的緩衝區,接收指定物件所提供之 null終止實例名稱的清單。 此清單包含唯一的實例名稱。 清單會以兩個 NULL 字元終止。 如果 pcchInstanceListLength 為零,請將 設定為 NULL

[in, out] pcchInstanceListLength

TCHAR中,mszInstanceList 緩衝區的大小。 如果輸入和物件存在零,函式會傳回PDH_MORE_DATA,並將此參數設定為所需的緩衝區大小。 如果緩衝區大於所需的大小,函式會將此參數設定為使用之緩衝區的實際大小。 如果輸入上的指定大小大於零,但小於所需的大小,則不應該依賴傳回的大小來重新配置緩衝區。

如果指定的物件不支援變數實例,則傳回的值會是零。 如果指定的物件支援變數實例,但目前沒有任何實例,則傳回的值是 2,這是空MULTI_SZ列表字串的大小。

[in] dwDetailLevel

要傳回之效能項目的詳細數據層級。 會傳回屬於指定詳細層級或更少專案的所有專案(層級會以遞增順序列出)。 此參數可以是下列其中一個值。

價值 意義
PERF_DETAIL_NOVICE
新手使用者詳細數據層級。
PERF_DETAIL_ADVANCED
進階使用者詳細數據層級。
PERF_DETAIL_EXPERT
專家用戶層級的詳細數據。
PERF_DETAIL_WIZARD
系統設計工具的詳細數據層級。

[in] dwFlags

此參數必須是零。

傳回值

如果函式成功,則會傳回ERROR_SUCCESS。

如果函式失敗,傳回值是 系統錯誤碼PDH 錯誤碼。 以下是可能的值。

傳回碼 描述
PDH_MORE_DATA
其中一個緩衝區太小,無法包含名稱清單。 如果輸入時 pcchCounterListLengthpcchInstanceListLength 為零,則應該傳回值。 如果輸入上的指定大小大於零,但小於所需的大小,則不應該依賴傳回的大小來重新配置緩衝區。
PDH_INVALID_ARGUMENT
參數無效。 例如,在某些版本中,如果輸入上的指定大小大於零,但小於所需的大小,您可能會收到此錯誤。
PDH_MEMORY_ALLOCATION_FAILURE
無法配置記憶體以支援此函式。
PDH_CSTATUS_NO_MACHINE
指定的電腦離線或無法使用。
PDH_CSTATUS_NO_OBJECT
在指定的電腦上或指定的記錄檔中找不到指定的物件。

言論

您應該呼叫此函式兩次,第一次取得所需的緩衝區大小(將緩衝區設定為 NULL,並將大小設定為 0),第二次取得數據。

對這個函式的連續呼叫會傳回相同的計數器和實例清單,因為 PdhEnumObjectItems 一律會查詢最後一次 呼叫 PdhEnumObjects 所定義的性能物件清單,PdhEnumObjectItems。 若要重新整理性能物件清單 ,請在再次呼叫 PdhEnumObjectItems 之前,使用 bRefresh 旗標值 TRUE 呼叫 PdhEnumObjectItems 呼叫

實例和計數器名稱的順序是不確定的。

例子

如需範例,請參閱 列舉進程物件

注意

pdh.h 標頭會根據 UNICODE 預處理器常數的定義,將 PdhEnumObjectItems 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
支援的最低伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平臺 窗戶
標頭 pdh.h
連結庫 Pdh.lib
DLL Pdh.dll

另請參閱

PdhEnumObjectItemsH

PdhEnumObjects