PerfSetCounterRefValue function (perflib.h)
Updates the value of a counter whose value is a pointer to the actual data. Providers use this function.
Syntax
ULONG PerfSetCounterRefValue(
[in] HANDLE Provider,
[in] PPERF_COUNTERSET_INSTANCE Instance,
[in] ULONG CounterId,
[in] PVOID Address
);
Parameters
[in] Provider
The handle of the provider. Use the handle variable that the CTRPP tool generated for you. For the name of the variable, see the symbol attribute of the provider element.
Windows Vista: The PerfStartProvider function returns the handle.
[in] Instance
A PERF_COUNTERSET_INSTANCE structure that contains the counter set instance. The PerfCreateInstance function returns this pointer.
[in] CounterId
Identifier that uniquely identifies the counter to update in the instance block. The identifier is defined in the id attribute of the counter element and must match the CounterId member of one of the PERF_COUNTER_INFO structures in the instance block. Use the counter ID constant that the CTRPP tool generated for you. For the name of the constant, see the symbol attribute of the counter element.
Windows Vista: The counter ID constant is not available.
[in] Address
Pointer to the actual counter data.
If NULL, the consumer receives ERROR_NO_DATA.
To indicate that the counter data is accessed by reference, the counter declaration in the manifest must include a counterAttribute element whose name attribute is set to "reference".
Return value
If the function succeeds, it returns ERROR_SUCCESS.
If the function fails, the return value is a system error code.
Remarks
This is a convenience function for specifying a reference to the raw counter data. To update the reference to the raw counter data yourself, use the Offset member of the PERF_COUNTER_INFO structure to access the counter value for a specific counter. The Attrib member must include the PERF_ATTRIB_BY_REFERENCE flag. The PERF_COUNTERSET_INSTANCE structure block contains one or more counter information structures.
Depending on the counter type, the pointer must reference a 4-byte or 8-byte unsigned integer. When collecting the counter data, PERFLIB dereferences the pointer and returns the actual data.
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows Vista [desktop apps only] |
Minimum supported server | Windows Server 2008 [desktop apps only] |
Target Platform | Windows |
Header | perflib.h |
Library | Advapi32.lib |
DLL | Advapi32.dll |