检查计数器数据状态代码

PDH 函数的返回值指示函数调用的成功或失败,这与计数器数据的状态不同。 始终检查 PDH 结构中返回的计数器值的 CStatus 成员,以确保在使用数据之前返回的数据有效。 如果 CStatus 成员的值不指示成功,请不要使用数据。 下面是计数器的可能状态值:

含义
PDH_CSTATUS_NO_MACHINE PDH 无法连接到计数器路径中指定的计算机。 如果在添加计数器时返回此状态,则计数器不会完全初始化。 每次更新查询时,PDH 都会重试连接。 建立连接后,正常数据收集将恢复。
PDH_CSTATUS_NO_OBJECT 找到指定的计算机,但在计算机上找到了指定的性能对象。 如果在添加计数器时返回此状态,则指定的计数器不包括在查询中。 如果活动计数器返回此状态,则该计数器的数据无效。 每次请求数据时,PDH 都会尝试获取此计数器数据。
PDH_CSTATUS_NO_INSTANCE 在 对象中找不到指定的实例。 如果在将计数器添加到查询时返回此状态,则会将计数器成功添加到查询,但在出现特定实例并返回成功状态之前,没有可用的数据。
PDH_CSTATUS_NO_COUNTER 在指定的 对象中找不到指定的计数器。 如果在添加计数器时返回此状态,则不会将计数器添加到查询中。 如果在数据收集后返回此状态,则该计数器的数据无效。 每次请求数据时,PDH 都会尝试获取此计数器数据。
PDH_CSTATUS_INVALID_DATA 已成功找到计数器,但返回的数据无效。 如果计数器值小于上一个值,则会发生此错误。 (由于计数器值始终递增,计数器值在达到其最大值时会滚动到零。) 另一个可能的原因是系统计时器不正确。
PDH_CSTATUS_VALID_DATA 计数器的数据已成功返回,但与上次读取计数器时的数据没有变化。
PDH_CSTATUS_NEW_DATA 计数器的数据已成功返回,与上次读取计数器时的数据不同。 PDH_CSTATUS_NEW_DATA可以在速率计数器上返回,即使生成的速率与最后一个样本相同。 这是因为用于确定此状态值的原始数据值已更改,而不是计算速率。
PDH_MORE_DATA 提供的缓冲区不够大,无法存储所有计数器数据。 分配更大的缓冲区,然后再次执行函数。
PDH_CSTATUS_ITEM_NOT_VALIDATED 计数器已添加到查询,但尚未验证或访问。 此计数器上没有其他状态信息可用。
PDH_CSTATUS_NO_COUNTERNAME 查询中未指定计数器名称。
PDH_CSTATUS_NO_COUNTER 找不到指定的计数器名称。
PDH_CSTATUS_NO_OBJECT 找不到指定的性能对象。
PDH_CALC_NEGATIVE_DENOMINATOR 计数器具有负分母值。
PDH_CALC_NEGATIVE_TIMEBASE 计数器具有负的时基值。
PDH_CALC_NEGATIVE_VALUE 计数器具有负值。
PDH_CSTATUS_NO_COUNTERNAME 未指定计数器路径。
PDH_CSTATUS_BAD_COUNTERNAME 计数器路径格式不正确。