ReactOS 0.4.17-dev-966-gf06eace
pdh.c File Reference
#include <stdio.h>
#include "windows.h"
#include "pdh.h"
#include "pdhmsg.h"
#include "wine/test.h"
Include dependency graph for pdh.c:

Go to the source code of this file.

Macros

#define GETFUNCPTR(func)   p##func = (void *)GetProcAddress( pdh, #func );
 

Functions

static PDH_STATUS (WINAPI *pPdhAddEnglishCounterA)(PDH_HQUERY
 
static double (WINAPI *pPdhVbGetDoubleCounterValue)(PDH_HCOUNTER
 
static BOOL is_lang_english (void)
 
static void init_function_ptrs (void)
 
static void test_PdhOpenQueryA (void)
 
static void test_PdhOpenQueryW (void)
 
static void test_PdhAddCounterA (void)
 
static void test_PdhAddCounterW (void)
 
static void test_PdhAddEnglishCounterA (void)
 
static void test_PdhAddEnglishCounterW (void)
 
static void test_PdhCollectQueryDataWithTime (void)
 
static void test_PdhGetFormattedCounterValue (void)
 
static void test_PdhGetRawCounterValue (void)
 
static void test_PdhVbGetDoubleCounterValue (void)
 
static void test_PdhSetCounterScaleFactor (void)
 
static void test_PdhGetCounterTimeBase (void)
 
static void test_PdhGetCounterInfoA (void)
 
static void test_PdhGetCounterInfoW (void)
 
static void test_PdhLookupPerfIndexByNameA (void)
 
static void test_PdhLookupPerfIndexByNameW (void)
 
static void test_PdhLookupPerfNameByIndexA (void)
 
static void test_PdhLookupPerfNameByIndexW (void)
 
static void test_PdhValidatePathA (void)
 
static void test_PdhValidatePathW (void)
 
static void test_PdhValidatePathExA (void)
 
static void test_PdhValidatePathExW (void)
 
static void test_PdhCollectQueryDataEx (void)
 
static void test_PdhMakeCounterPathA (void)
 
static void test_PdhGetDllVersion (void)
 
 START_TEST (pdh)
 

Variables

static HMODULE pdh
 
static LPCSTR
 
static DWORD_PTR
 
static PDH_HCOUNTER *static LPCWSTR
 
static const WCHAR processor_time [] = L"% Processor Time"
 
static const WCHAR uptime [] = L"System Up Time"
 
static const WCHAR system_uptime [] = L"\\System\\System Up Time"
 
static const WCHAR nonexistent_counter [] = L"\\System\\System Down Time"
 
static const WCHAR percentage_processor_time [] = L"\\Processor(_Total)\\% Processor Time"
 

Macro Definition Documentation

◆ GETFUNCPTR

#define GETFUNCPTR (   func)    p##func = (void *)GetProcAddress( pdh, #func );

Definition at line 39 of file pdh.c.

Function Documentation

◆ double()

static double ( WINAPI *  pPdhVbGetDoubleCounterValue)
static

◆ init_function_ptrs()

static void init_function_ptrs ( void  )
static

Definition at line 65 of file pdh.c.

66{
67 pdh = GetModuleHandleA( "pdh" );
74}
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:812
static HMODULE pdh
Definition: pdh.c:30
#define GETFUNCPTR(func)
Definition: pdh.c:39
PDH_STATUS WINAPI PdhValidatePathExW(PDH_HLOG source, LPCWSTR path)
Definition: pdh_main.c:1104
PDH_STATUS WINAPI PdhAddEnglishCounterW(PDH_HQUERY query, LPCWSTR path, DWORD_PTR userdata, PDH_HCOUNTER *counter)
Definition: pdh_main.c:290
PDH_STATUS WINAPI PdhCollectQueryDataWithTime(PDH_HQUERY handle, LONGLONG *timestamp)
Definition: pdh_main.c:544
double WINAPI PdhVbGetDoubleCounterValue(PDH_HCOUNTER handle, PDH_STATUS *counter_status)
Definition: pdh_main.c:1072
PDH_STATUS WINAPI PdhValidatePathExA(PDH_HLOG source, LPCSTR path)
Definition: pdh_main.c:1089
PDH_STATUS WINAPI PdhAddEnglishCounterA(PDH_HQUERY query, LPCSTR path, DWORD_PTR userdata, PDH_HCOUNTER *counter)
Definition: pdh_main.c:277

Referenced by START_TEST().

◆ is_lang_english()

static BOOL is_lang_english ( void  )
static

Definition at line 45 of file pdh.c.

46{
47 static HMODULE hkernel32 = NULL;
48 static LANGID (WINAPI *pGetThreadUILanguage)(void) = NULL;
49 static LANGID (WINAPI *pGetUserDefaultUILanguage)(void) = NULL;
50
51 if (!hkernel32)
52 {
53 hkernel32 = GetModuleHandleA("kernel32.dll");
54 pGetThreadUILanguage = (void*)GetProcAddress(hkernel32, "GetThreadUILanguage");
55 pGetUserDefaultUILanguage = (void*)GetProcAddress(hkernel32, "GetUserDefaultUILanguage");
56 }
57 if (pGetThreadUILanguage)
58 return PRIMARYLANGID(pGetThreadUILanguage()) == LANG_ENGLISH;
59 if (pGetUserDefaultUILanguage)
60 return PRIMARYLANGID(pGetUserDefaultUILanguage()) == LANG_ENGLISH;
61
63}
#define NULL
Definition: types.h:112
#define GetProcAddress(x, y)
Definition: compat.h:753
LANGID WINAPI GetUserDefaultLangID(void)
Definition: locale.c:1182
USHORT LANGID
Definition: mui.h:9
static HINSTANCE hkernel32
Definition: process.c:68
#define LANG_ENGLISH
Definition: nls.h:52
#define PRIMARYLANGID(l)
Definition: nls.h:16
#define WINAPI
Definition: msvc.h:6

Referenced by START_TEST().

◆ PDH_STATUS()

static PDH_STATUS ( WINAPI *  pPdhAddEnglishCounterA)
static

◆ START_TEST()

START_TEST ( pdh  )

Definition at line 1019 of file pdh.c.

1020{
1021 if (!is_lang_english())
1022 {
1023 skip("An English UI is needed for the pdh tests\n");
1024 return;
1025 }
1027
1030
1033
1034 if (pPdhAddEnglishCounterA) test_PdhAddEnglishCounterA();
1035 if (pPdhAddEnglishCounterW) test_PdhAddEnglishCounterW();
1036 if (pPdhCollectQueryDataWithTime) test_PdhCollectQueryDataWithTime();
1037
1042
1044
1047
1050
1053
1056
1057 if (pPdhValidatePathExA) test_PdhValidatePathExA();
1058 if (pPdhValidatePathExW) test_PdhValidatePathExW();
1059
1063}
#define skip(...)
Definition: atltest.h:64
static void test_PdhSetCounterScaleFactor(void)
Definition: pdh.c:469
static void test_PdhAddEnglishCounterA(void)
Definition: pdh.c:229
static void test_PdhCollectQueryDataWithTime(void)
Definition: pdh.c:313
static void test_PdhGetFormattedCounterValue(void)
Definition: pdh.c:345
static void test_PdhCollectQueryDataEx(void)
Definition: pdh.c:848
static void test_PdhOpenQueryW(void)
Definition: pdh.c:107
static void test_PdhValidatePathExA(void)
Definition: pdh.c:802
static void test_PdhLookupPerfIndexByNameA(void)
Definition: pdh.c:640
static void test_PdhGetCounterInfoW(void)
Definition: pdh.c:586
static void test_PdhValidatePathA(void)
Definition: pdh.c:756
static BOOL is_lang_english(void)
Definition: pdh.c:45
static void init_function_ptrs(void)
Definition: pdh.c:65
static void test_PdhOpenQueryA(void)
Definition: pdh.c:83
static void test_PdhValidatePathExW(void)
Definition: pdh.c:825
static void test_PdhGetRawCounterValue(void)
Definition: pdh.c:395
static void test_PdhGetDllVersion(void)
Definition: pdh.c:997
static void test_PdhAddCounterA(void)
Definition: pdh.c:131
static void test_PdhVbGetDoubleCounterValue(void)
Definition: pdh.c:429
static void test_PdhAddCounterW(void)
Definition: pdh.c:180
static void test_PdhGetCounterInfoA(void)
Definition: pdh.c:532
static void test_PdhLookupPerfIndexByNameW(void)
Definition: pdh.c:666
static void test_PdhAddEnglishCounterW(void)
Definition: pdh.c:271
static void test_PdhLookupPerfNameByIndexW(void)
Definition: pdh.c:726
static void test_PdhValidatePathW(void)
Definition: pdh.c:779
static void test_PdhMakeCounterPathA(void)
Definition: pdh.c:898
static void test_PdhLookupPerfNameByIndexA(void)
Definition: pdh.c:692
static void test_PdhGetCounterTimeBase(void)
Definition: pdh.c:503

◆ test_PdhAddCounterA()

static void test_PdhAddCounterA ( void  )
static

Definition at line 131 of file pdh.c.

132{
136
137 ret = PdhOpenQueryA( NULL, 0, &query );
138 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08lx\n", ret);
139
140 ret = PdhAddCounterA( NULL, "\\System\\System Up Time", 0, NULL );
141 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterA failed 0x%08lx\n", ret);
142
143 ret = PdhAddCounterA( NULL, "\\System\\System Up Time", 0, &counter );
144 ok(ret == PDH_INVALID_HANDLE, "PdhAddCounterA failed 0x%08lx\n", ret);
145
147 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterA failed 0x%08lx\n", ret);
148
149 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, NULL );
150 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterA failed 0x%08lx\n", ret);
151
152 ret = PdhAddCounterA( query, "\\System\\Nonexistent Counter", 0, &counter );
154 broken(ret == PDH_INVALID_PATH), /* Win2K */
155 "PdhAddCounterA failed 0x%08lx\n", ret);
156 ok(!counter, "PdhAddCounterA failed %p\n", counter);
157
158 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
159 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08lx\n", ret);
160
162 ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryData failed 0x%08lx\n", ret);
163
165 ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryData failed 0x%08lx\n", ret);
166
168 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08lx\n", ret);
169
171 ok(ret == PDH_INVALID_HANDLE, "PdhRemoveCounter failed 0x%08lx\n", ret);
172
174 ok(ret == ERROR_SUCCESS, "PdhRemoveCounter failed 0x%08lx\n", ret);
175
177 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08lx\n", ret);
178}
#define ok(value,...)
Definition: atltest.h:57
#define broken(x)
Definition: atltest.h:178
#define ERROR_SUCCESS
Definition: deptool.c:10
return ret
Definition: mutex.c:147
LONG PDH_STATUS
Definition: pdh.h:35
PDH_STATUS WINAPI PdhRemoveCounter(PDH_HCOUNTER handle)
Definition: pdh_main.c:966
PDH_STATUS WINAPI PdhAddCounterA(PDH_HQUERY query, LPCSTR path, DWORD_PTR userdata, PDH_HCOUNTER *counter)
Definition: pdh_main.c:205
PDH_STATUS WINAPI PdhOpenQueryA(LPCSTR source, DWORD_PTR userdata, PDH_HQUERY *query)
Definition: pdh_main.c:922
PDH_STATUS WINAPI PdhCollectQueryData(PDH_HQUERY handle)
Definition: pdh_main.c:429
PDH_STATUS WINAPI PdhCloseQuery(PDH_HQUERY handle)
Definition: pdh_main.c:362
#define PDH_INVALID_HANDLE
Definition: pdhmsg.h:45
#define PDH_INVALID_ARGUMENT
Definition: pdhmsg.h:46
#define PDH_INVALID_PATH
Definition: pdhmsg.h:53
#define PDH_CSTATUS_NO_COUNTER
Definition: pdhmsg.h:42

Referenced by START_TEST().

◆ test_PdhAddCounterW()

static void test_PdhAddCounterW ( void  )
static

Definition at line 180 of file pdh.c.

181{
185
186 ret = PdhOpenQueryW( NULL, 0, &query );
187 ok(ret == ERROR_SUCCESS, "PdhOpenQueryW failed 0x%08lx\n", ret);
188
190 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterW failed 0x%08lx\n", ret);
191
193 ok(ret == PDH_INVALID_HANDLE, "PdhAddCounterW failed 0x%08lx\n", ret);
194
196 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterW failed 0x%08lx\n", ret);
197
199 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterW failed 0x%08lx\n", ret);
200
203 broken(ret == PDH_INVALID_PATH), /* Win2K */
204 "PdhAddCounterW failed 0x%08lx\n", ret);
205 ok(!counter, "PdhAddCounterW failed %p\n", counter);
206
208 ok(ret == ERROR_SUCCESS, "PdhAddCounterW failed 0x%08lx\n", ret);
209
211 ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryData failed 0x%08lx\n", ret);
212
214 ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryData failed 0x%08lx\n", ret);
215
217 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08lx\n", ret);
218
220 ok(ret == PDH_INVALID_HANDLE, "PdhRemoveCounter failed 0x%08lx\n", ret);
221
223 ok(ret == ERROR_SUCCESS, "PdhRemoveCounter failed 0x%08lx\n", ret);
224
226 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08lx\n", ret);
227}
static const WCHAR nonexistent_counter[]
Definition: pdh.c:80
static const WCHAR percentage_processor_time[]
Definition: pdh.c:81
PDH_STATUS WINAPI PdhAddCounterW(PDH_HQUERY hquery, LPCWSTR path, DWORD_PTR userdata, PDH_HCOUNTER *hcounter)
Definition: pdh_main.c:227
PDH_STATUS WINAPI PdhOpenQueryW(LPCWSTR source, DWORD_PTR userdata, PDH_HQUERY *handle)
Definition: pdh_main.c:940

Referenced by START_TEST().

◆ test_PdhAddEnglishCounterA()

static void test_PdhAddEnglishCounterA ( void  )
static

Definition at line 229 of file pdh.c.

230{
234
235 ret = PdhOpenQueryA( NULL, 0, &query );
236 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08lx\n", ret);
237
239 ok(ret == PDH_NO_DATA, "PdhCollectQueryData failed 0x%08lx\n", ret);
240
241 ret = pPdhAddEnglishCounterA( NULL, "\\System\\System Up Time", 0, NULL );
242 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterA failed 0x%08lx\n", ret);
243
244 ret = pPdhAddEnglishCounterA( NULL, "\\System\\System Up Time", 0, &counter );
245 ok(ret == PDH_INVALID_HANDLE || broken(ret == PDH_INVALID_ARGUMENT) /* win10 <= 1909 */,
246 "PdhAddEnglishCounterA failed 0x%08lx\n", ret);
247
248 ret = pPdhAddEnglishCounterA( query, NULL, 0, &counter );
249 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterA failed 0x%08lx\n", ret);
250
251 ret = pPdhAddEnglishCounterA( query, "\\System\\System Up Time", 0, NULL );
252 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterA failed 0x%08lx\n", ret);
253
254 ret = pPdhAddEnglishCounterA( query, "\\System\\System Down Time", 0, &counter );
255 ok(ret == PDH_CSTATUS_NO_COUNTER, "PdhAddEnglishCounterA failed 0x%08lx\n", ret);
256 ok(!counter, "PdhAddEnglishCounterA failed %p\n", counter);
257
258 ret = pPdhAddEnglishCounterA( query, "\\System\\System Up Time", 0, &counter );
259 ok(ret == ERROR_SUCCESS, "PdhAddEnglishCounterA failed 0x%08lx\n", ret);
260
262 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08lx\n", ret);
263
265 ok(ret == ERROR_SUCCESS, "PdhRemoveCounter failed 0x%08lx\n", ret);
266
268 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08lx\n", ret);
269}
#define PDH_NO_DATA
Definition: pdhmsg.h:31

Referenced by START_TEST().

◆ test_PdhAddEnglishCounterW()

static void test_PdhAddEnglishCounterW ( void  )
static

Definition at line 271 of file pdh.c.

272{
276
277 ret = PdhOpenQueryW( NULL, 0, &query );
278 ok(ret == ERROR_SUCCESS, "PdhOpenQueryW failed 0x%08lx\n", ret);
279
281 ok(ret == PDH_NO_DATA, "PdhCollectQueryData failed 0x%08lx\n", ret);
282
283 ret = pPdhAddEnglishCounterW( NULL, system_uptime, 0, NULL );
284 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterW failed 0x%08lx\n", ret);
285
286 ret = pPdhAddEnglishCounterW( NULL, system_uptime, 0, &counter );
287 ok(ret == PDH_INVALID_HANDLE || broken(ret == PDH_INVALID_ARGUMENT) /* win10 <= 1909 */,
288 "PdhAddEnglishCounterW failed 0x%08lx\n", ret);
289
290 ret = pPdhAddEnglishCounterW( query, NULL, 0, &counter );
291 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterW failed 0x%08lx\n", ret);
292
293 ret = pPdhAddEnglishCounterW( query, system_uptime, 0, NULL );
294 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterW failed 0x%08lx\n", ret);
295
296 ret = pPdhAddEnglishCounterW( query, nonexistent_counter, 0, &counter );
297 ok(ret == PDH_CSTATUS_NO_COUNTER, "PdhAddEnglishCounterW failed 0x%08lx\n", ret);
298 ok(!counter, "PdhAddEnglishCounterA failed %p\n", counter);
299
300 ret = pPdhAddEnglishCounterW( query, system_uptime, 0, &counter );
301 ok(ret == ERROR_SUCCESS, "PdhAddEnglishCounterW failed 0x%08lx\n", ret);
302
304 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08lx\n", ret);
305
307 ok(ret == ERROR_SUCCESS, "PdhRemoveCounter failed 0x%08lx\n", ret);
308
310 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08lx\n", ret);
311}
static const WCHAR system_uptime[]
Definition: pdh.c:79

Referenced by START_TEST().

◆ test_PdhCollectQueryDataEx()

static void test_PdhCollectQueryDataEx ( void  )
static

Definition at line 848 of file pdh.c.

849{
854 BOOL ret;
855 UINT i;
856
857 status = PdhOpenQueryA( NULL, 0, &query );
858 ok(status == ERROR_SUCCESS, "PdhOpenQuery failed 0x%08lx\n", status);
859
860 event = CreateEventA( NULL, FALSE, FALSE, "winetest" );
861 ok(event != NULL, "CreateEvent failed\n");
862
863 status = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
864 ok(status == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08lx\n", status);
865
867 ok(status == PDH_INVALID_HANDLE, "PdhCollectQueryDataEx failed 0x%08lx\n", status);
868
870 ok(status == ERROR_SUCCESS, "PdhCollectQueryDataEx failed 0x%08lx\n", status);
871
873 ok(status == ERROR_SUCCESS, "PdhCollectQueryDataEx failed 0x%08lx\n", status);
874
876 ok(status == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08lx\n", status);
877
878 for (i = 0; i < 3; i++)
879 {
881 {
883
885 ok(status == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08lx\n", status);
886
887 trace( "uptime %s\n", wine_dbgstr_longlong(value.largeValue) );
888 }
889 }
890
891 ret = CloseHandle( event );
892 ok(ret, "CloseHandle failed\n");
893
895 ok(status == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08lx\n", status);
896}
#define trace
Definition: atltest.h:70
#define FALSE
Definition: types.h:117
#define CloseHandle
Definition: compat.h:739
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:49
#define INFINITE
Definition: serial.h:102
unsigned int BOOL
Definition: ntddk_ex.h:94
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int UINT
Definition: sysinfo.c:13
#define PDH_FMT_LARGE
Definition: pdh.h:51
PDH_STATUS WINAPI PdhCollectQueryDataEx(PDH_HQUERY handle, DWORD interval, HANDLE event)
Definition: pdh_main.c:485
PDH_STATUS WINAPI PdhGetFormattedCounterValue(PDH_HCOUNTER handle, DWORD format, LPDWORD type, PPDH_FMT_COUNTERVALUE value)
Definition: pdh_main.c:737
Definition: filter.c:185
Definition: ps.c:97
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventA(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCSTR lpName OPTIONAL)
Definition: synch.c:573
Definition: pdh_main.c:64
#define WAIT_OBJECT_0
Definition: winbase.h:383

Referenced by START_TEST().

◆ test_PdhCollectQueryDataWithTime()

static void test_PdhCollectQueryDataWithTime ( void  )
static

Definition at line 313 of file pdh.c.

314{
319
320 ret = PdhOpenQueryA( NULL, 0, &query );
321 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08lx\n", ret);
322
324 ok(ret == PDH_NO_DATA, "PdhCollectQueryData failed 0x%08lx\n", ret);
325
326 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
327 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08lx\n", ret);
328
329 ret = pPdhCollectQueryDataWithTime( NULL, NULL );
330 ok(ret == PDH_INVALID_ARGUMENT, "PdhCollectQueryDataWithTime failed 0x%08lx\n", ret);
331
332 ret = pPdhCollectQueryDataWithTime( query, NULL );
333 ok(ret == PDH_INVALID_ARGUMENT, "PdhCollectQueryDataWithTime failed 0x%08lx\n", ret);
334
335 ret = pPdhCollectQueryDataWithTime( NULL, &time );
336 ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryDataWithTime failed 0x%08lx\n", ret);
337
338 ret = pPdhCollectQueryDataWithTime( query, &time );
339 ok(ret == ERROR_SUCCESS, "PdhCollectQueryDataWithTime failed 0x%08lx\n", ret);
340
342 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08lx\n", ret);
343}
__u16 time
Definition: mkdosfs.c:8
int64_t LONGLONG
Definition: typedefs.h:68

Referenced by START_TEST().

◆ test_PdhGetCounterInfoA()

static void test_PdhGetCounterInfoA ( void  )
static

Definition at line 532 of file pdh.c.

533{
538 DWORD size;
539
540 ret = PdhOpenQueryA( NULL, 0, &query );
541 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08lx\n", ret);
542
543 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
544 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08lx\n", ret);
545
547 ok(ret == PDH_INVALID_HANDLE || ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoA failed 0x%08lx\n", ret);
548
550 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoA failed 0x%08lx\n", ret);
551
553 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoA failed 0x%08lx\n", ret);
554
555 size = sizeof(info) - 1;
557 ok(ret == PDH_MORE_DATA || ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoA failed 0x%08lx\n", ret);
558
559 size = sizeof(info);
561 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoA failed 0x%08lx\n", ret);
562 ok(size == sizeof(info), "PdhGetCounterInfoA failed %ld\n", size);
563
565 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoA failed 0x%08lx\n", ret);
566 ok(info.lScale == 0, "lScale %ld\n", info.lScale);
567
569 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08lx\n", ret);
570
572 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoA failed 0x%08lx\n", ret);
573 ok(info.lScale == 0, "lScale %ld\n", info.lScale);
574
576 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08lx\n", ret);
577
579 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoA failed 0x%08lx\n", ret);
580 ok(info.lScale == -5, "lScale %ld\n", info.lScale);
581
583 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08lx\n", ret);
584}
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizeiptr size
Definition: glext.h:5919
PDH_STATUS WINAPI PdhGetCounterInfoA(PDH_HCOUNTER handle, BOOLEAN text, LPDWORD size, PPDH_COUNTER_INFO_A info)
Definition: pdh_main.c:616
PDH_STATUS WINAPI PdhSetCounterScaleFactor(PDH_HCOUNTER handle, LONG factor)
Definition: pdh_main.c:989
#define PDH_MORE_DATA
Definition: pdhmsg.h:28

Referenced by START_TEST().

◆ test_PdhGetCounterInfoW()

static void test_PdhGetCounterInfoW ( void  )
static

Definition at line 586 of file pdh.c.

587{
592 DWORD size;
593
594 ret = PdhOpenQueryW( NULL, 0, &query );
595 ok(ret == ERROR_SUCCESS, "PdhOpenQueryW failed 0x%08lx\n", ret);
596
598 ok(ret == ERROR_SUCCESS, "PdhAddCounterW failed 0x%08lx\n", ret);
599
601 ok(ret == PDH_INVALID_HANDLE || ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoW failed 0x%08lx\n", ret);
602
604 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoW failed 0x%08lx\n", ret);
605
607 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoW failed 0x%08lx\n", ret);
608
609 size = sizeof(info) - 1;
611 ok(ret == PDH_MORE_DATA || ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoW failed 0x%08lx\n", ret);
612
613 size = sizeof(info);
615 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoW failed 0x%08lx\n", ret);
616 ok(size == sizeof(info), "PdhGetCounterInfoW failed %ld\n", size);
617
619 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoW failed 0x%08lx\n", ret);
620 ok(info.lScale == 0, "lScale %ld\n", info.lScale);
621
623 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08lx\n", ret);
624
626 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoW failed 0x%08lx\n", ret);
627 ok(info.lScale == 0, "lScale %ld\n", info.lScale);
628
630 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08lx\n", ret);
631
633 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoW failed 0x%08lx\n", ret);
634 ok(info.lScale == -5, "lScale %ld\n", info.lScale);
635
637 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08lx\n", ret);
638}
PDH_STATUS WINAPI PdhGetCounterInfoW(PDH_HCOUNTER handle, BOOLEAN text, LPDWORD size, PPDH_COUNTER_INFO_W info)
Definition: pdh_main.c:658

Referenced by START_TEST().

◆ test_PdhGetCounterTimeBase()

static void test_PdhGetCounterTimeBase ( void  )
static

Definition at line 503 of file pdh.c.

504{
509
510 ret = PdhOpenQueryA( NULL, 0, &query );
511 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08lx\n", ret);
512
513 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
514 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08lx\n", ret);
515
517 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterTimeBase failed 0x%08lx\n", ret);
518
520 ok(ret == PDH_INVALID_HANDLE, "PdhGetCounterTimeBase failed 0x%08lx\n", ret);
521
523 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterTimeBase failed 0x%08lx\n", ret);
524
526 ok(ret == ERROR_SUCCESS, "PdhGetCounterTimeBase failed 0x%08lx\n", ret);
527
529 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08lx\n", ret);
530}
PDH_STATUS WINAPI PdhGetCounterTimeBase(PDH_HCOUNTER handle, LONGLONG *base)
Definition: pdh_main.c:700

Referenced by START_TEST().

◆ test_PdhGetDllVersion()

static void test_PdhGetDllVersion ( void  )
static

Definition at line 997 of file pdh.c.

998{
1000 DWORD version;
1001
1004 broken(ret == ERROR_SUCCESS), /* Vista+ */
1005 "Expected PdhGetDllVersion to return PDH_INVALID_ARGUMENT, got %ld\n", ret);
1006
1008 ok(ret == ERROR_SUCCESS,
1009 "Expected PdhGetDllVersion to return ERROR_SUCCESS, got %ld\n", ret);
1010
1011 if (ret == ERROR_SUCCESS)
1012 {
1015 "Expected version number to be PDH_CVERSION_WIN50 or PDH_VERSION, got %lu\n", version);
1016 }
1017}
static const WCHAR version[]
Definition: asmname.c:66
#define PDH_VERSION
Definition: pdh.h:42
#define PDH_CVERSION_WIN50
Definition: pdh.h:41
PDH_STATUS WINAPI PdhGetDllVersion(LPDWORD version)
Definition: pdh_main.c:724

Referenced by START_TEST().

◆ test_PdhGetFormattedCounterValue()

static void test_PdhGetFormattedCounterValue ( void  )
static

Definition at line 345 of file pdh.c.

346{
351
352 ret = PdhOpenQueryA( NULL, 0, &query );
353 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08lx\n", ret);
354
355 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
356 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08lx\n", ret);
357
359 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetFormattedCounterValue failed 0x%08lx\n", ret);
360
362 ok(ret == PDH_INVALID_HANDLE, "PdhGetFormattedCounterValue failed 0x%08lx\n", ret);
363
365 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetFormattedCounterValue failed 0x%08lx\n", ret);
366
368 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08lx\n", ret);
369
371 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08lx\n", ret);
372
374 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08lx\n", ret);
375
377 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08lx\n", ret);
378
380 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08lx\n", ret);
381
383 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08lx\n", ret);
384
386 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08lx\n", ret);
387
389 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08lx\n", ret);
390
392 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08lx\n", ret);
393}
#define PDH_FMT_NOCAP100
Definition: pdh.h:54
#define PDH_FMT_1000
Definition: pdh.h:53
#define PDH_FMT_NOSCALE
Definition: pdh.h:52

Referenced by START_TEST().

◆ test_PdhGetRawCounterValue()

static void test_PdhGetRawCounterValue ( void  )
static

Definition at line 395 of file pdh.c.

396{
401
402 ret = PdhOpenQueryA( NULL, 0, &query );
403 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08lx\n", ret);
404
405 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
406 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08lx\n", ret);
407
409 ok(ret == PDH_INVALID_HANDLE, "PdhGetRawCounterValue failed 0x%08lx\n", ret);
410
412 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetRawCounterValue failed 0x%08lx\n", ret);
413
415 ok(ret == ERROR_SUCCESS, "PdhGetRawCounterValue failed 0x%08lx\n", ret);
416 ok(value.CStatus == ERROR_SUCCESS, "expected ERROR_SUCCESS got %lx\n", value.CStatus);
417
419 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08lx\n", ret);
420
422 ok(ret == ERROR_SUCCESS, "PdhGetRawCounterValue failed 0x%08lx\n", ret);
423 ok(value.CStatus == ERROR_SUCCESS, "expected ERROR_SUCCESS got %lx\n", value.CStatus);
424
426 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08lx\n", ret);
427}
PDH_STATUS WINAPI PdhGetRawCounterValue(PDH_HCOUNTER handle, LPDWORD type, PPDH_RAW_COUNTER value)
Definition: pdh_main.c:771

Referenced by START_TEST().

◆ test_PdhLookupPerfIndexByNameA()

static void test_PdhLookupPerfIndexByNameA ( void  )
static

Definition at line 640 of file pdh.c.

641{
643 DWORD index;
644
646 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameA failed 0x%08lx\n", ret);
647
649 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameA failed 0x%08lx\n", ret);
650
651 ret = PdhLookupPerfIndexByNameA( NULL, "No Counter", &index );
652 ok(ret == PDH_STRING_NOT_FOUND, "PdhLookupPerfIndexByNameA failed 0x%08lx\n", ret);
653
654 ret = PdhLookupPerfIndexByNameA( NULL, "% Processor Time", NULL );
655 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameA failed 0x%08lx\n", ret);
656
657 ret = PdhLookupPerfIndexByNameA( NULL, "% Processor Time", &index );
658 ok(ret == ERROR_SUCCESS, "PdhLookupPerfIndexByNameA failed 0x%08lx\n", ret);
659 ok(index == 6, "PdhLookupPerfIndexByNameA failed %ld\n", index);
660
661 ret = PdhLookupPerfIndexByNameA( NULL, "System Up Time", &index );
662 ok(ret == ERROR_SUCCESS, "PdhLookupPerfIndexByNameA failed 0x%08lx\n", ret);
663 ok(index == 674, "PdhLookupPerfIndexByNameA failed %ld\n", index);
664}
#define index(s, c)
Definition: various.h:29
GLuint index
Definition: glext.h:6031
PDH_STATUS WINAPI PdhLookupPerfIndexByNameA(LPCSTR machine, LPCSTR name, LPDWORD index)
Definition: pdh_main.c:803
#define PDH_STRING_NOT_FOUND
Definition: pdhmsg.h:69

Referenced by START_TEST().

◆ test_PdhLookupPerfIndexByNameW()

static void test_PdhLookupPerfIndexByNameW ( void  )
static

Definition at line 666 of file pdh.c.

667{
669 DWORD index;
670
672 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameW failed 0x%08lx\n", ret);
673
675 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameW failed 0x%08lx\n", ret);
676
677 ret = PdhLookupPerfIndexByNameW( NULL, L"No Counter", &index );
678 ok(ret == PDH_STRING_NOT_FOUND, "PdhLookupPerfIndexByNameW failed 0x%08lx\n", ret);
679
681 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameW failed 0x%08lx\n", ret);
682
684 ok(ret == ERROR_SUCCESS, "PdhLookupPerfIndexByNameW failed 0x%08lx\n", ret);
685 ok(index == 6, "PdhLookupPerfIndexByNameW failed %ld\n", index);
686
688 ok(ret == ERROR_SUCCESS, "PdhLookupPerfIndexByNameW failed 0x%08lx\n", ret);
689 ok(index == 674, "PdhLookupPerfIndexByNameW failed %ld\n", index);
690}
#define L(x)
Definition: resources.c:13
static const WCHAR uptime[]
Definition: pdh.c:77
static const WCHAR processor_time[]
Definition: pdh.c:76
PDH_STATUS WINAPI PdhLookupPerfIndexByNameW(LPCWSTR machine, LPCWSTR name, LPDWORD index)
Definition: pdh_main.c:828

Referenced by START_TEST().

◆ test_PdhLookupPerfNameByIndexA()

static void test_PdhLookupPerfNameByIndexA ( void  )
static

Definition at line 692 of file pdh.c.

693{
695 char buffer[PDH_MAX_COUNTER_NAME] = "!!";
696 DWORD size;
697
699 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfNameByIndexA failed 0x%08lx\n", ret);
700
701 size = 0;
703 ok(ret == PDH_MORE_DATA || ret == PDH_INSUFFICIENT_BUFFER, "PdhLookupPerfNameByIndexA failed 0x%08lx\n", ret);
704
705 size = sizeof(buffer);
707 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexA failed 0x%08lx\n", ret);
708 ok(!lstrcmpA( buffer, "% Processor Time" ),
709 "PdhLookupPerfNameByIndexA failed, got %s expected \'%% Processor Time\'\n", buffer);
710 ok(size == sizeof("% Processor Time"), "PdhLookupPerfNameByIndexA failed %ld\n", size);
711
712 size = sizeof(buffer);
715 ret == PDH_MORE_DATA, /* win2k3 */
716 "PdhLookupPerfNameByIndexA failed 0x%08lx\n", ret);
717
718 size = sizeof(buffer);
720 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexA failed 0x%08lx\n", ret);
721 ok(!lstrcmpA( buffer, "System Up Time" ),
722 "PdhLookupPerfNameByIndexA failed, got %s expected \'System Up Time\'\n", buffer);
723 ok(size == sizeof("System Up Time"), "PdhLookupPerfNameByIndexA failed %ld\n", size);
724}
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
Definition: locale.c:4104
GLuint buffer
Definition: glext.h:5915
#define PDH_MAX_COUNTER_NAME
Definition: pdh.h:47
PDH_STATUS WINAPI PdhLookupPerfNameByIndexA(LPCSTR machine, DWORD index, LPSTR buffer, LPDWORD size)
Definition: pdh_main.c:855
#define PDH_INSUFFICIENT_BUFFER
Definition: pdhmsg.h:51

Referenced by START_TEST().

◆ test_PdhLookupPerfNameByIndexW()

static void test_PdhLookupPerfNameByIndexW ( void  )
static

Definition at line 726 of file pdh.c.

727{
730 DWORD size;
731
733 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfNameByIndexW failed 0x%08lx\n", ret);
734
735 size = 0;
737 ok(ret == PDH_MORE_DATA || ret == PDH_INSUFFICIENT_BUFFER, "PdhLookupPerfNameByIndexW failed 0x%08lx\n", ret);
738
741 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexW failed 0x%08lx\n", ret);
742 ok(size == ARRAY_SIZE(processor_time), "PdhLookupPerfNameByIndexW failed %ld\n", size);
743
747 ret == PDH_MORE_DATA, /* win2k3 */
748 "PdhLookupPerfNameByIndexW failed 0x%08lx\n", ret);
749
752 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexW failed 0x%08lx\n", ret);
753 ok(size == ARRAY_SIZE(uptime), "PdhLookupPerfNameByIndexW failed %ld\n", size);
754}
#define ARRAY_SIZE(A)
Definition: main.h:20
PDH_STATUS WINAPI PdhLookupPerfNameByIndexW(LPCWSTR machine, DWORD index, LPWSTR buffer, LPDWORD size)
Definition: pdh_main.c:883
short WCHAR
Definition: pedump.c:58

Referenced by START_TEST().

◆ test_PdhMakeCounterPathA()

static void test_PdhMakeCounterPathA ( void  )
static

Definition at line 898 of file pdh.c.

899{
902 char buffer[1024];
903 DWORD buflen;
904
906 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08lx\n", ret);
907
908 buflen = 0;
909 ret = PdhMakeCounterPathA(NULL, NULL, &buflen, 0);
910 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08lx\n", ret);
911
912 if (0) { /* Crashes on Windows 10 >= 2004 */
913 buflen = 0;
914 ret = PdhMakeCounterPathA(NULL, buffer, &buflen, 0);
915 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08lx\n", ret);
916 }
917
918 buflen = sizeof(buffer);
919 memset(&e, 0, sizeof(e));
920 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
921 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08lx\n", ret);
922
923 buffer[0] = 0;
924 buflen = sizeof(buffer);
925 e.szMachineName = (char *)"machine";
926 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
927 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08lx\n", ret);
928 ok(!strcmp(buffer, ""), "expected \"machine\" got %s\n", buffer);
929
930 buffer[0] = 0;
931 buflen = sizeof(buffer);
932 e.szObjectName = (char *)"object";
933 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
934 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08lx\n", ret);
935 ok(!strcmp(buffer, ""), "expected \"machine\" got %s\n", buffer);
936
937 buffer[0] = 0;
938 buflen = sizeof(buffer);
939 e.szInstanceName = (char *)"instance";
940 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
941 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08lx\n", ret);
942 ok(!strcmp(buffer, ""), "expected \"machine\" got %s\n", buffer);
943
944 buffer[0] = 0;
945 buflen = sizeof(buffer);
946 e.szParentInstance = (char *)"parent";
947 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
948 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08lx\n", ret);
949 ok(!strcmp(buffer, ""), "expected \"machine\" got %s\n", buffer);
950
951 buffer[0] = 0;
952 buflen = sizeof(buffer);
953 e.dwInstanceIndex = 1;
954 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
955 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08lx\n", ret);
956 ok(!strcmp(buffer, ""), "expected \"machine\" got %s\n", buffer);
957
958 buffer[0] = 0;
959 buflen = sizeof(buffer);
960 e.szCounterName = (char *)"counter";
961 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
962 ok(ret == ERROR_SUCCESS, "PdhMakeCounterPathA failed 0x%08lx\n", ret);
963 ok(!strcmp(buffer, "\\\\machine\\object(parent/instance#1)\\counter"),
964 "expected \"\\\\machine\\object(parent/instance#1)\\counter\" got %s\n", buffer);
965
966 buffer[0] = 0;
967 buflen = sizeof(buffer);
968 e.szParentInstance = NULL;
969 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
970 ok(ret == ERROR_SUCCESS, "PdhMakeCounterPathA failed 0x%08lx\n", ret);
971 ok(!strcmp(buffer, "\\\\machine\\object(instance#1)\\counter"),
972 "expected \"\\\\machine\\object(instance#1)\\counter\" got %s\n", buffer);
973
974 buffer[0] = 0;
975 buflen = sizeof(buffer);
976 e.szInstanceName = NULL;
977 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
978 ok(ret == ERROR_SUCCESS, "PdhMakeCounterPathA failed 0x%08lx\n", ret);
979 ok(!strcmp(buffer, "\\\\machine\\object\\counter"),
980 "expected \"\\\\machine\\object\\counter\" got %s\n", buffer);
981
982 buffer[0] = 0;
983 buflen = sizeof(buffer);
984 e.szMachineName = NULL;
985 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
986 ok(ret == ERROR_SUCCESS, "PdhMakeCounterPathA failed 0x%08lx\n", ret);
987 ok(!strcmp(buffer, "\\object\\counter"),
988 "expected \"\\object\\counter\" got %s\n", buffer);
989
990 buffer[0] = 0;
991 buflen = sizeof(buffer);
992 e.szObjectName = NULL;
993 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
994 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08lx\n", ret);
995}
_ACRTIMP int __cdecl strcmp(const char *, const char *)
Definition: string.c:3324
#define e
Definition: ke_i.h:82
PDH_STATUS WINAPI PdhMakeCounterPathA(PDH_COUNTER_PATH_ELEMENTS_A *e, LPSTR buffer, LPDWORD buflen, DWORD flags)
Definition: pdh_main.c:1119
#define memset(x, y, z)
Definition: compat.h:39

Referenced by START_TEST().

◆ test_PdhOpenQueryA()

static void test_PdhOpenQueryA ( void  )
static

Definition at line 83 of file pdh.c.

84{
87
88 ret = PdhOpenQueryA( NULL, 0, NULL );
89 ok(ret == PDH_INVALID_ARGUMENT, "PdhOpenQueryA failed 0x%08lx\n", ret);
90
91 ret = PdhOpenQueryA( NULL, 0, &query );
92 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08lx\n", ret);
93
95 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08lx\n", ret);
96
98 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08lx\n", ret);
99
101 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08lx\n", ret);
102
104 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08lx\n", ret);
105}

Referenced by START_TEST().

◆ test_PdhOpenQueryW()

static void test_PdhOpenQueryW ( void  )
static

Definition at line 107 of file pdh.c.

108{
111
112 ret = PdhOpenQueryW( NULL, 0, NULL );
113 ok(ret == PDH_INVALID_ARGUMENT, "PdhOpenQueryW failed 0x%08lx\n", ret);
114
115 ret = PdhOpenQueryW( NULL, 0, &query );
116 ok(ret == ERROR_SUCCESS, "PdhOpenQueryW failed 0x%08lx\n", ret);
117
119 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08lx\n", ret);
120
121 ret = PdhCloseQuery( &query );
122 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08lx\n", ret);
123
125 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08lx\n", ret);
126
128 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08lx\n", ret);
129}

Referenced by START_TEST().

◆ test_PdhSetCounterScaleFactor()

static void test_PdhSetCounterScaleFactor ( void  )
static

Definition at line 469 of file pdh.c.

470{
474
475 ret = PdhOpenQueryA( NULL, 0, &query );
476 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08lx\n", ret);
477
478 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
479 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08lx\n", ret);
480
482 ok(ret == PDH_INVALID_HANDLE, "PdhSetCounterScaleFactor failed 0x%08lx\n", ret);
483
485 ok(ret == PDH_INVALID_HANDLE, "PdhSetCounterScaleFactor failed 0x%08lx\n", ret);
486
488 ok(ret == PDH_INVALID_ARGUMENT, "PdhSetCounterScaleFactor failed 0x%08lx\n", ret);
489
491 ok(ret == PDH_INVALID_ARGUMENT, "PdhSetCounterScaleFactor failed 0x%08lx\n", ret);
492
494 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08lx\n", ret);
495
497 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08lx\n", ret);
498
500 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08lx\n", ret);
501}

Referenced by START_TEST().

◆ test_PdhValidatePathA()

static void test_PdhValidatePathA ( void  )
static

Definition at line 756 of file pdh.c.

757{
759
761 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathA failed 0x%08lx\n", ret);
762
763 ret = PdhValidatePathA( "" );
764 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathA failed 0x%08lx\n", ret);
765
766 ret = PdhValidatePathA( "\\System" );
767 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathA failed 0x%08lx\n", ret);
768
769 ret = PdhValidatePathA( "System Up Time" );
770 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathA failed 0x%08lx\n", ret);
771
772 ret = PdhValidatePathA( "\\System\\Nonexistent Counter" );
773 ok(ret == PDH_CSTATUS_NO_COUNTER, "PdhValidatePathA failed 0x%08lx\n", ret);
774
775 ret = PdhValidatePathA( "\\System\\System Up Time" );
776 ok(ret == ERROR_SUCCESS, "PdhValidatePathA failed 0x%08lx\n", ret);
777}
PDH_STATUS WINAPI PdhValidatePathA(LPCSTR path)
Definition: pdh_main.c:1016
#define PDH_CSTATUS_BAD_COUNTERNAME
Definition: pdhmsg.h:49

Referenced by START_TEST().

◆ test_PdhValidatePathExA()

static void test_PdhValidatePathExA ( void  )
static

Definition at line 802 of file pdh.c.

803{
805
806 ret = pPdhValidatePathExA( NULL, NULL );
807 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathExA failed 0x%08lx\n", ret);
808
809 ret = pPdhValidatePathExA( NULL, "" );
810 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathExA failed 0x%08lx\n", ret);
811
812 ret = pPdhValidatePathExA( NULL, "\\System" );
813 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathExA failed 0x%08lx\n", ret);
814
815 ret = pPdhValidatePathExA( NULL, "System Up Time" );
816 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathExA failed 0x%08lx\n", ret);
817
818 ret = pPdhValidatePathExA( NULL, "\\System\\System Down Time" );
819 ok(ret == PDH_CSTATUS_NO_COUNTER, "PdhValidatePathExA failed 0x%08lx\n", ret);
820
821 ret = pPdhValidatePathExA( NULL, "\\System\\System Up Time" );
822 ok(ret == ERROR_SUCCESS, "PdhValidatePathExA failed 0x%08lx\n", ret);
823}

Referenced by START_TEST().

◆ test_PdhValidatePathExW()

static void test_PdhValidatePathExW ( void  )
static

Definition at line 825 of file pdh.c.

826{
828
829 ret = pPdhValidatePathExW( NULL, NULL );
830 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathExW failed 0x%08lx\n", ret);
831
832 ret = pPdhValidatePathExW( NULL, L"" );
833 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathExW failed 0x%08lx\n", ret);
834
835 ret = pPdhValidatePathExW( NULL, L"\\System" );
836 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathExW failed 0x%08lx\n", ret);
837
838 ret = pPdhValidatePathExW( NULL, uptime );
839 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathExW failed 0x%08lx\n", ret);
840
841 ret = pPdhValidatePathExW( NULL, nonexistent_counter );
842 ok(ret == PDH_CSTATUS_NO_COUNTER, "PdhValidatePathExW failed 0x%08lx\n", ret);
843
844 ret = pPdhValidatePathExW( NULL, system_uptime );
845 ok(ret == ERROR_SUCCESS, "PdhValidatePathExW failed 0x%08lx\n", ret);
846}

Referenced by START_TEST().

◆ test_PdhValidatePathW()

static void test_PdhValidatePathW ( void  )
static

Definition at line 779 of file pdh.c.

780{
782
784 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathW failed 0x%08lx\n", ret);
785
786 ret = PdhValidatePathW( L"" );
787 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathW failed 0x%08lx\n", ret);
788
789 ret = PdhValidatePathW( L"\\System" );
790 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathW failed 0x%08lx\n", ret);
791
793 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathW failed 0x%08lx\n", ret);
794
796 ok(ret == PDH_CSTATUS_NO_COUNTER, "PdhValidatePathW failed 0x%08lx\n", ret);
797
799 ok(ret == ERROR_SUCCESS, "PdhValidatePathW failed 0x%08lx\n", ret);
800}
PDH_STATUS WINAPI PdhValidatePathW(LPCWSTR path)
Definition: pdh_main.c:1042

Referenced by START_TEST().

◆ test_PdhVbGetDoubleCounterValue()

static void test_PdhVbGetDoubleCounterValue ( void  )
static

Definition at line 429 of file pdh.c.

430{
435 double ret;
436
437 status = PdhOpenQueryA( NULL, 0, &query );
438 ok(status == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08lx\n", status);
439
440 status = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
441 ok(status == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08lx\n", status);
442
444 ok(status == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08lx\n", status);
445
447 ok(status == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08lx\n", status);
448
449 ret = pPdhVbGetDoubleCounterValue( NULL, NULL );
450 ok(ret == 0.0, "Unexpected value %f\n", ret);
451
453 ret = pPdhVbGetDoubleCounterValue( NULL, &status );
454 ok(status == PDH_INVALID_HANDLE, "PdhVbGetDoubleCounterValue failed 0x%08lx\n", status);
455 ok(ret == 0.0, "Unexpected value %f\n", ret);
456
457 ret = pPdhVbGetDoubleCounterValue( counter, NULL );
458 ok(ret == value.doubleValue, "Unexpected value %f\n", ret);
459
461 ret = pPdhVbGetDoubleCounterValue( counter, &status );
462 ok(status == ERROR_SUCCESS, "PdhVbGetDoubleCounterValue failed 0x%08lx\n", status);
463 ok(ret == value.doubleValue, "Unexpected value %f\n", ret);
464
466 ok(status == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08lx\n", status);
467}
#define PDH_FMT_DOUBLE
Definition: pdh.h:50
#define PDH_FUNCTION_NOT_FOUND
Definition: pdhmsg.h:47

Referenced by START_TEST().

Variable Documentation

◆ DWORD_PTR

Definition at line 32 of file pdh.c.

◆ LPCSTR

PDH_HCOUNTER *static PDH_HCOUNTER *static LONGLONG *static LPCSTR

Definition at line 32 of file pdh.c.

◆ LPCWSTR

Definition at line 33 of file pdh.c.

◆ nonexistent_counter

const WCHAR nonexistent_counter[] = L"\\System\\System Down Time"
static

◆ pdh

HMODULE pdh
static

Definition at line 30 of file pdh.c.

Referenced by GetSeparateDebugHeader(), init_function_ptrs(), and render_embed_source_hack().

◆ percentage_processor_time

const WCHAR percentage_processor_time[] = L"\\Processor(_Total)\\% Processor Time"
static

Definition at line 81 of file pdh.c.

Referenced by test_PdhAddCounterW(), and test_PdhGetCounterInfoW().

◆ processor_time

const WCHAR processor_time[] = L"% Processor Time"
static

Definition at line 76 of file pdh.c.

Referenced by test_PdhLookupPerfIndexByNameW(), and test_PdhLookupPerfNameByIndexW().

◆ system_uptime

const WCHAR system_uptime[] = L"\\System\\System Up Time"
static

◆ uptime