PdhAddEnglishCounterA 函数 (pdh.h)

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

语法

PDH_FUNCTION PdhAddEnglishCounterA(
  [in]  PDH_HQUERY   hQuery,
  [in]  LPCSTR       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 [仅限桌面应用]
目标平台 Windows
标头 pdh.h
Library Pdh.lib
DLL Pdh.dll

另请参阅

PdhAddCounter

PdhBrowseCounters

PdhMakeCounterPath

PdhOpenQuery

PdhRemoveCounter