PdhExpandWildCardPathA 函数 (pdh.h)

检查指定的计算机或日志文件,并返回那些与包含通配符的给定计数器路径匹配的计数器路径。

若要使用数据源的句柄,请使用 PdhExpandWildCardPathH 函数。

语法

PDH_FUNCTION PdhExpandWildCardPathA(
  [in]      LPCSTR  szDataSource,
  [in]      LPCSTR  szWildCardPath,
  [out]     PZZSTR  mszExpandedPathList,
  [in, out] LPDWORD pcchPathListLength,
  [in]      DWORD   dwFlags
);

parameters

[in] szDataSource

包含日志文件名称的以 Null 结尾的字符串。 函数使用日志文件中定义的性能对象和计数器来扩展 szWildCardPath 参数中指定的路径。

如果 为 NULL,则函数将搜索 szWildCardPath 中指定的计算机。

[in] szWildCardPath

以 Null 结尾的字符串,指定要展开的计数器路径。 计数器路径的最大长度为PDH_MAX_COUNTER_PATH。

如果 szDataSource 参数为 NULL,则该函数在路径中指定的计算机中搜索匹配项。 如果路径未指定计算机,函数将搜索本地计算机。

[out] mszExpandedPathList

调用方分配的缓冲区,接收与 szWildCardPath 中的通配符规范匹配的以 null 结尾的计数器路径的列表。 列表以两个 NULL 字符结尾。 如果 pcchPathListLength 为零,则设置为 NULL

[in, out] pcchPathListLength

mszExpandedPathList 缓冲区的大小(以 TCHAR 为单位)。 如果输入为零且对象存在,则函数将返回PDH_MORE_DATA并将此参数设置为所需的缓冲区大小。 如果缓冲区大于所需大小,则函数会将此参数设置为使用的实际缓冲区大小。 如果输入上的指定大小大于零但小于所需大小,则不应依赖返回的大小来重新分配缓冲区。

注意 必须在 Windows XP 上将一个添加到所需大小。
 

[in] dwFlags

指示哪些通配符不展开的标志。 可以指定一个或多个标志。

含义
PDH_NOEXPANDCOUNTERS
如果路径包含计数器名称的通配符,请不要展开计数器名称。
PDH_NOEXPANDINSTANCES
如果路径包含父实例、实例名称或实例索引的通配符,请不要展开实例名称。
PDH_REFRESHCOUNTERS
刷新计数器列表。

返回值

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

如果函数失败,则返回值为 系统错误代码PDH 错误代码

返回代码 说明
PDH_MORE_DATA
mszExpandedPathList 缓冲区不够大,无法包含路径列表。 如果 pcchPathListLength 在输入时为零,则此返回值应为预期值。 如果输入上的指定大小大于零但小于所需大小,则不应依赖返回的大小来重新分配缓冲区。
PDH_INVALID_ARGUMENT
参数无效。 例如,在某些版本中,如果输入上的指定大小大于零但小于所需大小,则可能会收到此错误。
PDH_INVALID_PATH
指定的 对象不包含实例。
PDH_MEMORY_ALLOCATION_FAILURE
无法分配内存以支持此函数。
PDH_CSTATUS_NO_OBJECT
在计算机上或日志文件中找不到指定的对象。

注解

应调用此函数两次,第一次调用此函数以获取所需的缓冲区大小 (将 mszExpandedPathList 设置为 NULL将 pcchPathListLength 设置为 0) ,第二次调用以获取数据。

PdhExpandWildCardPathPdhExpandCounterPath 在以下方面不同:

  1. 允许控制展开的通配符。
  2. 日志文件的内容可用作计数器名称的源。
常规计数器路径格式如下所示:

\computer\object (parent/instance#index) \counter

计数器路径的父、实例、索引和计数器组件可能包含有效名称或通配符。 并非所有计数器都需要计算机、父级、实例和索引组件。

下面是可能格式的列表:

  • \\computer\object (parent/instance#index) \counter
  • \\computer\object (parent/instance) \counter
  • \\computer\object (instance#index) \counter
  • \\computer\object (实例) \counter
  • \\computer\object\counter
  • \object (parent/instance#index) \counter
  • \object (parent/instance) \counter
  • \object (instance#index) \counter
  • \object (实例) \counter
  • \object\counter
使用星号 (*) 作为通配符,例如\object (*) \counter。

如果在父名称中指定通配符,则将返回与指定实例和计数器字段匹配的指定对象的所有实例。 例如,\object (*/instance) \counter。

如果在实例名称中指定了通配符,则如果与指定索引对应的所有实例名称都与通配符匹配,则将返回指定对象和父对象的所有实例。 例如,\object (parent/*) \counter。 如果对象不包含实例,则会发生错误。

如果在计数器名称中指定通配符,则返回指定对象的所有计数器。

部分计数器路径字符串与 (匹配,例如,支持“pro*”) 。

在 Windows Vista 之前: 不支持部分通配符匹配。

注意

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

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 pdh.h
Library Pdh.lib
DLL Pdh.dll

请参阅

PdhEnumObjectItems

PdhEnumObjects

PdhExpandCounterPath

PdhExpandWildCardPathH