PerfCreateInstance 函数 (perflib.h)

创建指定计数器集的实例。 提供程序使用此函数。

语法

PPERF_COUNTERSET_INSTANCE PerfCreateInstance(
  [in] HANDLE  ProviderHandle,
  [in] LPCGUID CounterSetGuid,
  [in] PCWSTR  Name,
  [in] ULONG   Id
);

参数

[in] ProviderHandle

提供程序的句柄。 使用 CTRPP 工具为你生成的句柄变量。 有关变量的名称,请参阅提供程序元素的 symbol 属性。

Windows Vista: PerfStartProvider 函数返回句柄。

[in] CounterSetGuid

唯一标识要创建其实例的计数器集的 GUID。 这与 counterSet 元素的 guid 属性中指定的 GUID 相同。 使用 CTRPP 工具为你生成的 GUID 变量。 有关变量的名称,请参阅 counterSet 元素的 symbol 属性。

Windows Vista: GUID 变量不可用。

[in] Name

Null 结尾的 Unicode 字符串,其中包含此实例的唯一名称。

[in] Id

计数器集的此实例的唯一标识符。 标识符可以是为每个新实例递增的序列号。

返回值

包含计数器集实例 的PERF_COUNTERSET_INSTANCE 结构;如果 PERFLIB 无法创建实例,则为 NULL 。 缓存此指针以在以后的调用中使用,而不是调用 PerfQueryInstance 来检索指向 实例的指针。

如果发生错误,此函数返回 NULL 。 若要确定发生的错误,请调用 GetLastError

注解

提供程序确定何时创建实例。 如果计数器数据更静态,则提供程序可以在初始化时创建实例。 例如,计算机上的处理器数将被视为静态,因此为处理器提供计数器数据的提供程序可以在初始化时为计算机上的每个处理器创建实例。 对于动态性更高的计数器(例如磁盘或进程计数器),提供程序将创建新的实例,以响应正在添加新的 USB 设备或正在创建新进程。

当提供程序调用此函数时,PERFLIB 为新实例分配本地内存并生成实例块。 当提供程序调用 PerfDeleteInstance 函数时,PERFLIB 会删除内存。

实例包含原始计数器数据。 提供程序使用以下三个函数来更新原始计数器数据:

通常,提供程序始终使计数器数据保持最新。 作为替代方法,提供程序可以实现 ControlCallback 函数,并使用 PERF_COLLECT_START 请求代码来触发更新。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 perflib.h
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

PerfDeleteInstance

PerfQueryInstance