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 結尾的字串,指定用來列舉計數器和實例名稱的記錄檔名稱。 如果 為 NULL,函式會使用 中指定的電腦

要列舉名稱 的 szMachineName 參數。

[in] szMachineName

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

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

如果 szDataSource 參數為 NULL,您可以將 szMachineName 設定為 NULL ,以指定本機電腦。

[in] szObjectName

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

[out] mszCounterList

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

[in, out] pcchCounterListLength

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

[out] mszInstanceList

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

[in, out] pcchInstanceListLength

MSzInstanceList 緩衝區的大小,以 TCHAR 為單位。 如果輸入和物件上有零,則函式會傳回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 錯誤碼。 以下是可能的值。

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

備註

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

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

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

範例

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

注意

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

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 pdh.h
程式庫 Pdh.lib
Dll Pdh.dll

另請參閱

PdhEnumObjectItemsH

PdhEnumObjects