PerfCreateInstance 函式 (perflib.h)
建立指定之計數器集的實例。 提供者會使用此函式。
語法
PPERF_COUNTERSET_INSTANCE PerfCreateInstance(
[in] HANDLE ProviderHandle,
[in] LPCGUID CounterSetGuid,
[in] PCWSTR Name,
[in] ULONG Id
);
參數
[in] ProviderHandle
提供者的句柄。 使用 CTRPP 工具為您產生的句柄變數。 如需變數的名稱,請參閱提供者專案的符號屬性。
Windows Vista: PerfStartProvider 函式會傳回句柄。
[in] CounterSetGuid
可唯一識別您要建立 實例之計數器集的 GUID。 這是 counterSet 元素之 guid 屬性中指定的相同 GUID。 使用 CTRPP 工具為您產生的 GUID 變數。 如需變數的名稱,請參閱counterSet元素的符號屬性。
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 |
程式庫 | Advapi32.lib |
Dll | Advapi32.dll |