PdhAddEnglishCounterW 函数 (pdh.h)

将指定的非特定语言计数器添加到查询。

语法

PDH_FUNCTION PdhAddEnglishCounterW(
  [in]  PDH_HQUERY   hQuery,
  [in]  LPCWSTR      szFullCounterPath,
  [in]  DWORD_PTR    dwUserData,
  [out] PDH_HCOUNTER *phCounter
);

参数

[in] hQuery

要向其添加计数器的查询句柄。 此句柄由 PdhOpenQuery 函数返回。

[in] szFullCounterPath

包含计数器路径的以 Null 结尾的字符串。 有关计数器路径格式的详细信息,请参阅 指定计数器路径。 计数器路径的最大长度为PDH_MAX_COUNTER_PATH。

[in] dwUserData

用户定义的值。 此值将成为计数器信息的一部分。 若要稍后检索此值,请调用 PdhGetCounterInfo 函数并访问 PDH_COUNTER_INFO 结构的 dwQueryUserData 成员。

[out] phCounter

添加到查询的计数器的句柄。 可能需要在后续调用中引用此句柄。

返回值

如果函数成功,则返回ERROR_SUCCESS。

如果函数失败,则返回值为 系统错误代码PDH 错误代码。 以下是可能的值。

返回代码 描述
PDH_CSTATUS_BAD_COUNTERNAME
无法分析或解释计数器路径。
PDH_CSTATUS_NO_COUNTER
无法在计算机或日志文件中找到指定的计数器。
PDH_CSTATUS_NO_COUNTERNAME
计数器路径为空。
PDH_CSTATUS_NO_MACHINE
路径不包含计算机名,函数无法检索本地计算机名称。
PDH_CSTATUS_NO_OBJECT
无法在计算机或日志文件中找到指定的对象。
PDH_FUNCTION_NOT_FOUND
无法确定要用于此计数器的计算函数。
PDH_INVALID_ARGUMENT
一个或多个参数无效。
PDH_INVALID_HANDLE
查询句柄无效。
PDH_MEMORY_ALLOCATION_FAILURE
无法分配完成函数所需的内存。

言论

此函数提供了一种非特定语言的方式,用于向查询添加性能计数器。 相比之下,必须在 PdhAddCounter 函数中指定的计数器路径进行本地化。

如果指定了尚不存在的计数器实例,PdhAddEnglishCounter 不会报告错误条件。 而是返回ERROR_SUCCESS。 此行为的原因是,目前还不清楚是否指定了不存在的计数器实例,或者是否存在计数器实例,但尚未创建。

若要从查询中删除计数器,请使用 PdhRemoveCounter 函数。

注意 如果计数器路径包含通配符,则路径的非通配符部分将本地化,但在将本地化的计数器路径添加到查询之前,通配符将不会展开。 在这种情况下,需要使用以下过程将所有匹配的计数器名称添加到查询。
  1. 进行查询
  2. PdhAddEnglishCounter 与包含通配符的字符串配合使用
  3. PdhAddEnglishCounter 返回的计数器句柄上使用 PdhGetCounterInfo 获取本地化的完整路径(szFullPath.)此字符串仍包含通配符,但非通配符部分现已本地化。
  4. 使用 PdhExpandWildCardPath 展开通配符。
  5. 在每个生成的路径上使用 PdhAddCounter
 

注意

pdh.h 标头将 PdhAddEnglishCounter 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows Vista [仅限桌面应用]
支持的最低服务器 Windows Server 2008 [仅限桌面应用]
目标平台 窗户
标头 pdh.h
Pdh.lib
DLL Pdh.dll

另请参阅

PdhAddCounter

PdhBrowseCounters

PdhMakeCounterPath

PdhOpenQuery

PdhRemoveCounter