INFO: Export Registry Value Type for a Performance Extension DLL

This article was previously published under Q296481
This article has been archived. It is offered "as is" and will no longer be updated.
This article describes the registry value that is retrieved by the operating system and passed to the Open function of a performance extension DLL.
The Performance Library (PerfLib), which is contained within the system file Advapi32.dll, is responsible for calling the Open function of a performance extension DLL. PerfLib calls the Open function within a performance extension DLL when an application first connects to the registry to collect performance data. This Open function typically performs the initialization required for the library to provide performance data.

The following is the function prototype for the exported Open function in a performance extension DLL:
DWORD CALLBACK <OpenPerformanceData>(LPWSTR lpDeviceNames);

where the name <OpenPerformanceData> is merely a placeholder for an application-defined name.
When the system calls this Open function, the lpDeviceNames argument will point to a buffer containing the Unicode strings that are stored in the Export value within the following registry key:
On Microsoft Windows NT 4.0, PerfLib accepts any registry type for the Export value. However, on Microsoft Windows 2000 and Microsoft Windows XP, the type of the Export value must be either REG_SZ or REG_MULTI_SZ. If there are multiple strings, they should be separated by a UNICODE_NULL and terminated by two UNICODE_NULL characters. If the Export value does not conform to this specification on Windows 2000 and Windows XP, the Open procedure of a performance extension DLL will be called with NULL for the lpDeviceNames parameter.

Article ID: 296481 - Last Review: 02/27/2014 21:08:12 - Revision: 4.3

Microsoft Win32 Application Programming Interface

  • kbnosurvey kbarchive kbapi kbinfo kbkernbase kbperfmon KB296481
ERROR: at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)