ReactOS 0.4.15-dev-7942-gd23573b
pdh.c
Go to the documentation of this file.
1/*
2 * Tests for pdh.dll (Performance Data Helper)
3 *
4 * Copyright 2007 Hans Leidekker
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21#include <stdio.h>
22
23#include "windows.h"
24
25#include "pdh.h"
26#include "pdhmsg.h"
27
28#include "wine/test.h"
29
30static HMODULE pdh;
31
32static PDH_STATUS (WINAPI *pPdhAddEnglishCounterA)(PDH_HQUERY, LPCSTR, DWORD_PTR, PDH_HCOUNTER *);
33static PDH_STATUS (WINAPI *pPdhAddEnglishCounterW)(PDH_HQUERY, LPCWSTR, DWORD_PTR, PDH_HCOUNTER *);
34static PDH_STATUS (WINAPI *pPdhCollectQueryDataWithTime)(PDH_HQUERY, LONGLONG *);
35static PDH_STATUS (WINAPI *pPdhValidatePathExA)(PDH_HLOG, LPCSTR);
36static PDH_STATUS (WINAPI *pPdhValidatePathExW)(PDH_HLOG, LPCWSTR);
37
38#define GETFUNCPTR(func) p##func = (void *)GetProcAddress( pdh, #func );
39
40
41/* Returns true if the user interface is in English. Note that this does not
42 * presume of the formatting of dates, numbers, etc.
43 */
45{
46 static HMODULE hkernel32 = NULL;
47 static LANGID (WINAPI *pGetThreadUILanguage)(void) = NULL;
48 static LANGID (WINAPI *pGetUserDefaultUILanguage)(void) = NULL;
49
50 if (!hkernel32)
51 {
52 hkernel32 = GetModuleHandleA("kernel32.dll");
53 pGetThreadUILanguage = (void*)GetProcAddress(hkernel32, "GetThreadUILanguage");
54 pGetUserDefaultUILanguage = (void*)GetProcAddress(hkernel32, "GetUserDefaultUILanguage");
55 }
56 if (pGetThreadUILanguage)
57 return PRIMARYLANGID(pGetThreadUILanguage()) == LANG_ENGLISH;
58 if (pGetUserDefaultUILanguage)
59 return PRIMARYLANGID(pGetUserDefaultUILanguage()) == LANG_ENGLISH;
60
62}
63
64static void init_function_ptrs( void )
65{
66 pdh = GetModuleHandleA( "pdh" );
72}
73
74static const WCHAR processor_time[] =
75 {'%',' ','P','r','o','c','e','s','s','o','r',' ','T','i','m','e',0};
76static const WCHAR uptime[] =
77 {'S','y','s','t','e','m',' ','U','p',' ','T','i','m','e',0};
78
79static const WCHAR system_uptime[] =
80 {'\\','S','y','s','t','e','m','\\','S','y','s','t','e','m',' ','U','p',' ','T','i','m','e',0};
81static const WCHAR nonexistent_counter[] =
82 {'\\','S','y','s','t','e','m','\\','S','y','s','t','e','m',' ','D','o','w','n',' ','T','i','m','e',0};
84 {'\\','P','r','o','c','e','s','s','o','r','(','_','T','o','t','a','l',')',
85 '\\','%',' ','P','r','o','c','e','s','s','o','r',' ','T','i','m','e',0};
86
87static void test_PdhOpenQueryA( void )
88{
91
92 ret = PdhOpenQueryA( NULL, 0, NULL );
93 ok(ret == PDH_INVALID_ARGUMENT, "PdhOpenQueryA failed 0x%08x\n", ret);
94
95 ret = PdhOpenQueryA( NULL, 0, &query );
96 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
97
99 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08x\n", ret);
100
101 ret = PdhCloseQuery( &query );
102 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08x\n", ret);
103
105 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
106
108 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08x\n", ret);
109}
110
111static void test_PdhOpenQueryW( void )
112{
115
116 ret = PdhOpenQueryW( NULL, 0, NULL );
117 ok(ret == PDH_INVALID_ARGUMENT, "PdhOpenQueryW failed 0x%08x\n", ret);
118
119 ret = PdhOpenQueryW( NULL, 0, &query );
120 ok(ret == ERROR_SUCCESS, "PdhOpenQueryW failed 0x%08x\n", ret);
121
123 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08x\n", ret);
124
125 ret = PdhCloseQuery( &query );
126 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08x\n", ret);
127
129 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
130
132 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08x\n", ret);
133}
134
135static void test_PdhAddCounterA( void )
136{
140
141 ret = PdhOpenQueryA( NULL, 0, &query );
142 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
143
144 ret = PdhAddCounterA( NULL, "\\System\\System Up Time", 0, NULL );
145 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterA failed 0x%08x\n", ret);
146
147 ret = PdhAddCounterA( NULL, "\\System\\System Up Time", 0, &counter );
148 ok(ret == PDH_INVALID_HANDLE, "PdhAddCounterA failed 0x%08x\n", ret);
149
151 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterA failed 0x%08x\n", ret);
152
153 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, NULL );
154 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterA failed 0x%08x\n", ret);
155
156 ret = PdhAddCounterA( query, "\\System\\Nonexistent Counter", 0, &counter );
158 broken(ret == PDH_INVALID_PATH), /* Win2K */
159 "PdhAddCounterA failed 0x%08x\n", ret);
160 ok(!counter, "PdhAddCounterA failed %p\n", counter);
161
162 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
163 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08x\n", ret);
164
166 ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryData failed 0x%08x\n", ret);
167
169 ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryData failed 0x%08x\n", ret);
170
172 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08x\n", ret);
173
175 ok(ret == PDH_INVALID_HANDLE, "PdhRemoveCounter failed 0x%08x\n", ret);
176
178 ok(ret == ERROR_SUCCESS, "PdhRemoveCounter failed 0x%08x\n", ret);
179
181 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
182}
183
184static void test_PdhAddCounterW( void )
185{
189
190 ret = PdhOpenQueryW( NULL, 0, &query );
191 ok(ret == ERROR_SUCCESS, "PdhOpenQueryW failed 0x%08x\n", ret);
192
194 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterW failed 0x%08x\n", ret);
195
197 ok(ret == PDH_INVALID_HANDLE, "PdhAddCounterW failed 0x%08x\n", ret);
198
200 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterW failed 0x%08x\n", ret);
201
203 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterW failed 0x%08x\n", ret);
204
207 broken(ret == PDH_INVALID_PATH), /* Win2K */
208 "PdhAddCounterW failed 0x%08x\n", ret);
209 ok(!counter, "PdhAddCounterW failed %p\n", counter);
210
212 ok(ret == ERROR_SUCCESS, "PdhAddCounterW failed 0x%08x\n", ret);
213
215 ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryData failed 0x%08x\n", ret);
216
218 ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryData failed 0x%08x\n", ret);
219
221 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08x\n", ret);
222
224 ok(ret == PDH_INVALID_HANDLE, "PdhRemoveCounter failed 0x%08x\n", ret);
225
227 ok(ret == ERROR_SUCCESS, "PdhRemoveCounter failed 0x%08x\n", ret);
228
230 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
231}
232
233static void test_PdhAddEnglishCounterA( void )
234{
238
239 ret = PdhOpenQueryA( NULL, 0, &query );
240 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
241
243 ok(ret == PDH_NO_DATA, "PdhCollectQueryData failed 0x%08x\n", ret);
244
245 ret = pPdhAddEnglishCounterA( NULL, "\\System\\System Up Time", 0, NULL );
246 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterA failed 0x%08x\n", ret);
247
248 ret = pPdhAddEnglishCounterA( NULL, "\\System\\System Up Time", 0, &counter );
249 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterA failed 0x%08x\n", ret);
250
251 ret = pPdhAddEnglishCounterA( query, NULL, 0, &counter );
252 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterA failed 0x%08x\n", ret);
253
254 ret = pPdhAddEnglishCounterA( query, "\\System\\System Up Time", 0, NULL );
255 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterA failed 0x%08x\n", ret);
256
257 ret = pPdhAddEnglishCounterA( query, "\\System\\System Down Time", 0, &counter );
258 ok(ret == PDH_CSTATUS_NO_COUNTER, "PdhAddEnglishCounterA failed 0x%08x\n", ret);
259 ok(!counter, "PdhAddEnglishCounterA failed %p\n", counter);
260
261 ret = pPdhAddEnglishCounterA( query, "\\System\\System Up Time", 0, &counter );
262 ok(ret == ERROR_SUCCESS, "PdhAddEnglishCounterA failed 0x%08x\n", ret);
263
265 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08x\n", ret);
266
268 ok(ret == ERROR_SUCCESS, "PdhRemoveCounter failed 0x%08x\n", ret);
269
271 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
272}
273
274static void test_PdhAddEnglishCounterW( void )
275{
279
280 ret = PdhOpenQueryW( NULL, 0, &query );
281 ok(ret == ERROR_SUCCESS, "PdhOpenQueryW failed 0x%08x\n", ret);
282
284 ok(ret == PDH_NO_DATA, "PdhCollectQueryData failed 0x%08x\n", ret);
285
286 ret = pPdhAddEnglishCounterW( NULL, system_uptime, 0, NULL );
287 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterW failed 0x%08x\n", ret);
288
289 ret = pPdhAddEnglishCounterW( NULL, system_uptime, 0, &counter );
290 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterW failed 0x%08x\n", ret);
291
292 ret = pPdhAddEnglishCounterW( query, NULL, 0, &counter );
293 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterW failed 0x%08x\n", ret);
294
295 ret = pPdhAddEnglishCounterW( query, system_uptime, 0, NULL );
296 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterW failed 0x%08x\n", ret);
297
298 ret = pPdhAddEnglishCounterW( query, nonexistent_counter, 0, &counter );
299 ok(ret == PDH_CSTATUS_NO_COUNTER, "PdhAddEnglishCounterW failed 0x%08x\n", ret);
300 ok(!counter, "PdhAddEnglishCounterA failed %p\n", counter);
301
302 ret = pPdhAddEnglishCounterW( query, system_uptime, 0, &counter );
303 ok(ret == ERROR_SUCCESS, "PdhAddEnglishCounterW failed 0x%08x\n", ret);
304
306 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08x\n", ret);
307
309 ok(ret == ERROR_SUCCESS, "PdhRemoveCounter failed 0x%08x\n", ret);
310
312 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
313}
314
316{
321
322 ret = PdhOpenQueryA( NULL, 0, &query );
323 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
324
326 ok(ret == PDH_NO_DATA, "PdhCollectQueryData failed 0x%08x\n", ret);
327
328 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
329 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08x\n", ret);
330
331 ret = pPdhCollectQueryDataWithTime( NULL, NULL );
332 ok(ret == PDH_INVALID_ARGUMENT, "PdhCollectQueryDataWithTime failed 0x%08x\n", ret);
333
334 ret = pPdhCollectQueryDataWithTime( query, NULL );
335 ok(ret == PDH_INVALID_ARGUMENT, "PdhCollectQueryDataWithTime failed 0x%08x\n", ret);
336
337 ret = pPdhCollectQueryDataWithTime( NULL, &time );
338 ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryDataWithTime failed 0x%08x\n", ret);
339
340 ret = pPdhCollectQueryDataWithTime( query, &time );
341 ok(ret == ERROR_SUCCESS, "PdhCollectQueryDataWithTime failed 0x%08x\n", ret);
342
344 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
345}
346
348{
353
354 ret = PdhOpenQueryA( NULL, 0, &query );
355 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
356
357 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
358 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08x\n", ret);
359
361 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
362
364 ok(ret == PDH_INVALID_HANDLE, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
365
367 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
368
370 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
371
373 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08x\n", ret);
374
376 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
377
379 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
380
382 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
383
385 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
386
388 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
389
391 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
392
394 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
395}
396
397static void test_PdhGetRawCounterValue( void )
398{
403
404 ret = PdhOpenQueryA( NULL, 0, &query );
405 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
406
407 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
408 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08x\n", ret);
409
411 ok(ret == PDH_INVALID_HANDLE, "PdhGetRawCounterValue failed 0x%08x\n", ret);
412
414 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetRawCounterValue failed 0x%08x\n", ret);
415
417 ok(ret == ERROR_SUCCESS, "PdhGetRawCounterValue failed 0x%08x\n", ret);
418 ok(value.CStatus == ERROR_SUCCESS, "expected ERROR_SUCCESS got %x\n", value.CStatus);
419
421 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08x\n", ret);
422
424 ok(ret == ERROR_SUCCESS, "PdhGetRawCounterValue failed 0x%08x\n", ret);
425 ok(value.CStatus == ERROR_SUCCESS, "expected ERROR_SUCCESS got %x\n", value.CStatus);
426
428 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
429}
430
432{
436
437 ret = PdhOpenQueryA( NULL, 0, &query );
438 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
439
440 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
441 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08x\n", ret);
442
444 ok(ret == PDH_INVALID_HANDLE, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
445
447 ok(ret == PDH_INVALID_HANDLE, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
448
450 ok(ret == PDH_INVALID_ARGUMENT, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
451
453 ok(ret == PDH_INVALID_ARGUMENT, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
454
456 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
457
459 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
460
462 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
463}
464
465static void test_PdhGetCounterTimeBase( void )
466{
471
472 ret = PdhOpenQueryA( NULL, 0, &query );
473 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
474
475 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
476 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08x\n", ret);
477
479 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterTimeBase failed 0x%08x\n", ret);
480
482 ok(ret == PDH_INVALID_HANDLE, "PdhGetCounterTimeBase failed 0x%08x\n", ret);
483
485 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterTimeBase failed 0x%08x\n", ret);
486
488 ok(ret == ERROR_SUCCESS, "PdhGetCounterTimeBase failed 0x%08x\n", ret);
489
491 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
492}
493
494static void test_PdhGetCounterInfoA( void )
495{
500 DWORD size;
501
502 ret = PdhOpenQueryA( NULL, 0, &query );
503 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
504
505 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
506 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08x\n", ret);
507
509 ok(ret == PDH_INVALID_HANDLE || ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoA failed 0x%08x\n", ret);
510
512 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoA failed 0x%08x\n", ret);
513
515 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoA failed 0x%08x\n", ret);
516
517 size = sizeof(info) - 1;
519 ok(ret == PDH_MORE_DATA || ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoA failed 0x%08x\n", ret);
520
521 size = sizeof(info);
523 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoA failed 0x%08x\n", ret);
524 ok(size == sizeof(info), "PdhGetCounterInfoA failed %d\n", size);
525
527 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoA failed 0x%08x\n", ret);
528 ok(info.lScale == 0, "lScale %d\n", info.lScale);
529
531 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
532
534 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoA failed 0x%08x\n", ret);
535 ok(info.lScale == 0, "lScale %d\n", info.lScale);
536
538 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
539
541 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoA failed 0x%08x\n", ret);
542 ok(info.lScale == -5, "lScale %d\n", info.lScale);
543
545 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
546}
547
548static void test_PdhGetCounterInfoW( void )
549{
554 DWORD size;
555
556 ret = PdhOpenQueryW( NULL, 0, &query );
557 ok(ret == ERROR_SUCCESS, "PdhOpenQueryW failed 0x%08x\n", ret);
558
560 ok(ret == ERROR_SUCCESS, "PdhAddCounterW failed 0x%08x\n", ret);
561
563 ok(ret == PDH_INVALID_HANDLE || ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoW failed 0x%08x\n", ret);
564
566 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoW failed 0x%08x\n", ret);
567
569 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoW failed 0x%08x\n", ret);
570
571 size = sizeof(info) - 1;
573 ok(ret == PDH_MORE_DATA || ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoW failed 0x%08x\n", ret);
574
575 size = sizeof(info);
577 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoW failed 0x%08x\n", ret);
578 ok(size == sizeof(info), "PdhGetCounterInfoW failed %d\n", size);
579
581 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoW failed 0x%08x\n", ret);
582 ok(info.lScale == 0, "lScale %d\n", info.lScale);
583
585 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
586
588 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoW failed 0x%08x\n", ret);
589 ok(info.lScale == 0, "lScale %d\n", info.lScale);
590
592 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
593
595 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoW failed 0x%08x\n", ret);
596 ok(info.lScale == -5, "lScale %d\n", info.lScale);
597
599 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
600}
601
603{
605 DWORD index;
606
608 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameA failed 0x%08x\n", ret);
609
611 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameA failed 0x%08x\n", ret);
612
613 ret = PdhLookupPerfIndexByNameA( NULL, "No Counter", &index );
614 ok(ret == PDH_STRING_NOT_FOUND, "PdhLookupPerfIndexByNameA failed 0x%08x\n", ret);
615
616 ret = PdhLookupPerfIndexByNameA( NULL, "% Processor Time", NULL );
617 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameA failed 0x%08x\n", ret);
618
619 ret = PdhLookupPerfIndexByNameA( NULL, "% Processor Time", &index );
620 ok(ret == ERROR_SUCCESS, "PdhLookupPerfIndexByNameA failed 0x%08x\n", ret);
621 ok(index == 6, "PdhLookupPerfIndexByNameA failed %d\n", index);
622
623 ret = PdhLookupPerfIndexByNameA( NULL, "System Up Time", &index );
624 ok(ret == ERROR_SUCCESS, "PdhLookupPerfIndexByNameA failed 0x%08x\n", ret);
625 ok(index == 674, "PdhLookupPerfIndexByNameA failed %d\n", index);
626}
627
629{
631 DWORD index;
632
633 static const WCHAR no_counter[] = {'N','o',' ','C','o','u','n','t','e','r',0};
634
636 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameW failed 0x%08x\n", ret);
637
639 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameW failed 0x%08x\n", ret);
640
641 ret = PdhLookupPerfIndexByNameW( NULL, no_counter, &index );
642 ok(ret == PDH_STRING_NOT_FOUND, "PdhLookupPerfIndexByNameW failed 0x%08x\n", ret);
643
645 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameW failed 0x%08x\n", ret);
646
648 ok(ret == ERROR_SUCCESS, "PdhLookupPerfIndexByNameW failed 0x%08x\n", ret);
649 ok(index == 6, "PdhLookupPerfIndexByNameW failed %d\n", index);
650
652 ok(ret == ERROR_SUCCESS, "PdhLookupPerfIndexByNameW failed 0x%08x\n", ret);
653 ok(index == 674, "PdhLookupPerfIndexByNameW failed %d\n", index);
654}
655
657{
659 char buffer[PDH_MAX_COUNTER_NAME] = "!!";
660 DWORD size;
661
663 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfNameByIndexA failed 0x%08x\n", ret);
664
665 size = 0;
667 ok(ret == PDH_MORE_DATA || ret == PDH_INSUFFICIENT_BUFFER, "PdhLookupPerfNameByIndexA failed 0x%08x\n", ret);
668
669 size = sizeof(buffer);
671 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexA failed 0x%08x\n", ret);
672 ok(!lstrcmpA( buffer, "% Processor Time" ),
673 "PdhLookupPerfNameByIndexA failed, got %s expected \'%% Processor Time\'\n", buffer);
674 ok(size == sizeof("% Processor Time"), "PdhLookupPerfNameByIndexA failed %d\n", size);
675
676 size = sizeof(buffer);
678 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexA failed 0x%08x\n", ret);
679 ok(!lstrcmpA( buffer, "Processor" ),
680 "PdhLookupPerfNameByIndexA failed, got %s expected \'Processor\'\n", buffer);
681 ok(size == sizeof("Processor"), "PdhLookupPerfNameByIndexA failed %d\n", size);
682
683 size = sizeof(buffer);
686 ret == PDH_MORE_DATA, /* win2k3 */
687 "PdhLookupPerfNameByIndexA failed 0x%08x\n", ret);
688
689 size = sizeof(buffer);
691 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexA failed 0x%08x\n", ret);
692 ok(!lstrcmpA( buffer, "System Up Time" ),
693 "PdhLookupPerfNameByIndexA failed, got %s expected \'System Up Time\'\n", buffer);
694 ok(size == sizeof("System Up Time"), "PdhLookupPerfNameByIndexA failed %d\n", size);
695}
696
698{
701 DWORD size;
702
704 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfNameByIndexW failed 0x%08x\n", ret);
705
706 size = 0;
708 ok(ret == PDH_MORE_DATA || ret == PDH_INSUFFICIENT_BUFFER, "PdhLookupPerfNameByIndexW failed 0x%08x\n", ret);
709
712 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexW failed 0x%08x\n", ret);
713 ok(size == ARRAY_SIZE(processor_time), "PdhLookupPerfNameByIndexW failed %d\n", size);
714
718 ret == PDH_MORE_DATA, /* win2k3 */
719 "PdhLookupPerfNameByIndexW failed 0x%08x\n", ret);
720
723 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexW failed 0x%08x\n", ret);
724 ok(size == ARRAY_SIZE(uptime), "PdhLookupPerfNameByIndexW failed %d\n", size);
725}
726
727static void test_PdhValidatePathA( void )
728{
730
732 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathA failed 0x%08x\n", ret);
733
734 ret = PdhValidatePathA( "" );
735 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathA failed 0x%08x\n", ret);
736
737 ret = PdhValidatePathA( "\\System" );
738 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathA failed 0x%08x\n", ret);
739
740 ret = PdhValidatePathA( "System Up Time" );
741 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathA failed 0x%08x\n", ret);
742
743 ret = PdhValidatePathA( "\\System\\Nonexistent Counter" );
744 ok(ret == PDH_CSTATUS_NO_COUNTER, "PdhValidatePathA failed 0x%08x\n", ret);
745
746 ret = PdhValidatePathA( "\\System\\System Up Time" );
747 ok(ret == ERROR_SUCCESS, "PdhValidatePathA failed 0x%08x\n", ret);
748}
749
750static void test_PdhValidatePathW( void )
751{
753
754 static const WCHAR empty[] = {0};
755 static const WCHAR system[] = {'\\','S','y','s','t','e','m',0};
756
758 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathW failed 0x%08x\n", ret);
759
761 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathW failed 0x%08x\n", ret);
762
764 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathW failed 0x%08x\n", ret);
765
767 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathW failed 0x%08x\n", ret);
768
770 ok(ret == PDH_CSTATUS_NO_COUNTER, "PdhValidatePathW failed 0x%08x\n", ret);
771
773 ok(ret == ERROR_SUCCESS, "PdhValidatePathW failed 0x%08x\n", ret);
774}
775
776static void test_PdhValidatePathExA( void )
777{
779
780 ret = pPdhValidatePathExA( NULL, NULL );
781 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathExA failed 0x%08x\n", ret);
782
783 ret = pPdhValidatePathExA( NULL, "" );
784 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathExA failed 0x%08x\n", ret);
785
786 ret = pPdhValidatePathExA( NULL, "\\System" );
787 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathExA failed 0x%08x\n", ret);
788
789 ret = pPdhValidatePathExA( NULL, "System Up Time" );
790 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathExA failed 0x%08x\n", ret);
791
792 ret = pPdhValidatePathExA( NULL, "\\System\\System Down Time" );
793 ok(ret == PDH_CSTATUS_NO_COUNTER, "PdhValidatePathExA failed 0x%08x\n", ret);
794
795 ret = pPdhValidatePathExA( NULL, "\\System\\System Up Time" );
796 ok(ret == ERROR_SUCCESS, "PdhValidatePathExA failed 0x%08x\n", ret);
797}
798
799static void test_PdhValidatePathExW( void )
800{
802
803 static const WCHAR empty[] = {0};
804 static const WCHAR system[] = {'\\','S','y','s','t','e','m',0};
805
806 ret = pPdhValidatePathExW( NULL, NULL );
807 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathExW failed 0x%08x\n", ret);
808
809 ret = pPdhValidatePathExW( NULL, empty );
810 ok(ret == PDH_INVALID_ARGUMENT, "PdhValidatePathExW failed 0x%08x\n", ret);
811
812 ret = pPdhValidatePathExW( NULL, system );
813 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathExW failed 0x%08x\n", ret);
814
815 ret = pPdhValidatePathExW( NULL, uptime );
816 ok(ret == PDH_CSTATUS_BAD_COUNTERNAME, "PdhValidatePathExW failed 0x%08x\n", ret);
817
818 ret = pPdhValidatePathExW( NULL, nonexistent_counter );
819 ok(ret == PDH_CSTATUS_NO_COUNTER, "PdhValidatePathExW failed 0x%08x\n", ret);
820
821 ret = pPdhValidatePathExW( NULL, system_uptime );
822 ok(ret == ERROR_SUCCESS, "PdhValidatePathExW failed 0x%08x\n", ret);
823}
824
826{
831 BOOL ret;
832 UINT i;
833
834 status = PdhOpenQueryA( NULL, 0, &query );
835 ok(status == ERROR_SUCCESS, "PdhOpenQuery failed 0x%08x\n", status);
836
837 event = CreateEventA( NULL, FALSE, FALSE, "winetest" );
838 ok(event != NULL, "CreateEvent failed\n");
839
840 status = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
841 ok(status == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08x\n", status);
842
844 ok(status == PDH_INVALID_HANDLE, "PdhCollectQueryDataEx failed 0x%08x\n", status);
845
847 ok(status == ERROR_SUCCESS, "PdhCollectQueryDataEx failed 0x%08x\n", status);
848
850 ok(status == ERROR_SUCCESS, "PdhCollectQueryDataEx failed 0x%08x\n", status);
851
853 ok(status == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08x\n", status);
854
855 for (i = 0; i < 3; i++)
856 {
858 {
860
862 ok(status == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08x\n", status);
863
864 trace( "uptime %s\n", wine_dbgstr_longlong(U(value).largeValue) );
865 }
866 }
867
868 ret = CloseHandle( event );
869 ok(ret, "CloseHandle failed\n");
870
872 ok(status == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", status);
873}
874
876{
879 char buffer[1024];
880 DWORD buflen;
881
883 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08x\n", ret);
884
885 buflen = 0;
886 ret = PdhMakeCounterPathA(NULL, NULL, &buflen, 0);
887 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08x\n", ret);
888
889 buflen = 0;
890 ret = PdhMakeCounterPathA(NULL, buffer, &buflen, 0);
891 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08x\n", ret);
892
893 buflen = sizeof(buffer);
894 memset(&e, 0, sizeof(e));
895 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
896 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08x\n", ret);
897
898 buffer[0] = 0;
899 buflen = sizeof(buffer);
900 e.szMachineName = (char *)"machine";
901 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
902 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08x\n", ret);
903 ok(!strcmp(buffer, ""), "expected \"machine\" got %s\n", buffer);
904
905 buffer[0] = 0;
906 buflen = sizeof(buffer);
907 e.szObjectName = (char *)"object";
908 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
909 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08x\n", ret);
910 ok(!strcmp(buffer, ""), "expected \"machine\" got %s\n", buffer);
911
912 buffer[0] = 0;
913 buflen = sizeof(buffer);
914 e.szInstanceName = (char *)"instance";
915 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
916 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08x\n", ret);
917 ok(!strcmp(buffer, ""), "expected \"machine\" got %s\n", buffer);
918
919 buffer[0] = 0;
920 buflen = sizeof(buffer);
921 e.szParentInstance = (char *)"parent";
922 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
923 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08x\n", ret);
924 ok(!strcmp(buffer, ""), "expected \"machine\" got %s\n", buffer);
925
926 buffer[0] = 0;
927 buflen = sizeof(buffer);
928 e.dwInstanceIndex = 1;
929 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
930 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08x\n", ret);
931 ok(!strcmp(buffer, ""), "expected \"machine\" got %s\n", buffer);
932
933 buffer[0] = 0;
934 buflen = sizeof(buffer);
935 e.szCounterName = (char *)"counter";
936 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
937 ok(ret == ERROR_SUCCESS, "PdhMakeCounterPathA failed 0x%08x\n", ret);
938 ok(!strcmp(buffer, "\\\\machine\\object(parent/instance#1)\\counter"),
939 "expected \"\\\\machine\\object(parent/instance#1)\\counter\" got %s\n", buffer);
940
941 buffer[0] = 0;
942 buflen = sizeof(buffer);
943 e.szParentInstance = NULL;
944 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
945 ok(ret == ERROR_SUCCESS, "PdhMakeCounterPathA failed 0x%08x\n", ret);
946 ok(!strcmp(buffer, "\\\\machine\\object(instance#1)\\counter"),
947 "expected \"\\\\machine\\object(instance#1)\\counter\" got %s\n", buffer);
948
949 buffer[0] = 0;
950 buflen = sizeof(buffer);
951 e.szInstanceName = NULL;
952 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
953 ok(ret == ERROR_SUCCESS, "PdhMakeCounterPathA failed 0x%08x\n", ret);
954 ok(!strcmp(buffer, "\\\\machine\\object\\counter"),
955 "expected \"\\\\machine\\object\\counter\" got %s\n", buffer);
956
957 buffer[0] = 0;
958 buflen = sizeof(buffer);
959 e.szMachineName = NULL;
960 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
961 ok(ret == ERROR_SUCCESS, "PdhMakeCounterPathA failed 0x%08x\n", ret);
962 ok(!strcmp(buffer, "\\object\\counter"),
963 "expected \"\\object\\counter\" got %s\n", buffer);
964
965 buffer[0] = 0;
966 buflen = sizeof(buffer);
967 e.szObjectName = NULL;
968 ret = PdhMakeCounterPathA(&e, buffer, &buflen, 0);
969 ok(ret == PDH_INVALID_ARGUMENT, "PdhMakeCounterPathA failed 0x%08x\n", ret);
970}
971
972static void test_PdhGetDllVersion(void)
973{
976
979 broken(ret == ERROR_SUCCESS), /* Vista+ */
980 "Expected PdhGetDllVersion to return PDH_INVALID_ARGUMENT, got %d\n", ret);
981
984 "Expected PdhGetDllVersion to return ERROR_SUCCESS, got %d\n", ret);
985
986 if (ret == ERROR_SUCCESS)
987 {
990 "Expected version number to be PDH_CVERSION_WIN50 or PDH_VERSION, got %u\n", version);
991 }
992}
993
995{
996 if (!is_lang_english())
997 {
998 skip("An English UI is needed for the pdh tests\n");
999 return;
1000 }
1002
1005
1008
1009 if (pPdhAddEnglishCounterA) test_PdhAddEnglishCounterA();
1010 if (pPdhAddEnglishCounterW) test_PdhAddEnglishCounterW();
1011 if (pPdhCollectQueryDataWithTime) test_PdhCollectQueryDataWithTime();
1012
1017
1020
1023
1026
1029
1030 if (pPdhValidatePathExA) test_PdhValidatePathExA();
1031 if (pPdhValidatePathExW) test_PdhValidatePathExW();
1032
1036}
#define broken(x)
Definition: _sntprintf.h:21
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
#define trace
Definition: atltest.h:70
#define ok(value,...)
Definition: atltest.h:57
#define skip(...)
Definition: atltest.h:64
#define START_TEST(x)
Definition: atltest.h:75
#define index(s, c)
Definition: various.h:29
#define ARRAY_SIZE(A)
Definition: main.h:33
#define U(x)
Definition: wordpad.c:45
#define ERROR_SUCCESS
Definition: deptool.c:10
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
static const WCHAR empty[]
Definition: main.c:47
#define CloseHandle
Definition: compat.h:739
#define GetProcAddress(x, y)
Definition: compat.h:753
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:49
static const WCHAR version[]
Definition: asmname.c:66
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:812
#define INFINITE
Definition: serial.h:102
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizeiptr size
Definition: glext.h:5919
struct _cl_event * event
Definition: glext.h:7739
GLuint buffer
Definition: glext.h:5915
GLuint index
Definition: glext.h:6031
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
#define e
Definition: ke_i.h:82
LANGID WINAPI GetUserDefaultLangID(void)
Definition: lang.c:744
USHORT LANGID
Definition: mui.h:9
int WINAPI lstrcmpA(LPCSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:18
__u16 time
Definition: mkdosfs.c:8
static HINSTANCE hkernel32
Definition: process.c:66
unsigned int UINT
Definition: ndis.h:50
static void test_PdhSetCounterScaleFactor(void)
Definition: pdh.c:431
static void test_PdhAddEnglishCounterA(void)
Definition: pdh.c:233
static void test_PdhCollectQueryDataWithTime(void)
Definition: pdh.c:315
static void test_PdhGetFormattedCounterValue(void)
Definition: pdh.c:347
static void test_PdhCollectQueryDataEx(void)
Definition: pdh.c:825
static void test_PdhOpenQueryW(void)
Definition: pdh.c:111
static void test_PdhValidatePathExA(void)
Definition: pdh.c:776
static HMODULE pdh
Definition: pdh.c:30
static void test_PdhLookupPerfIndexByNameA(void)
Definition: pdh.c:602
static const WCHAR uptime[]
Definition: pdh.c:76
static void test_PdhGetCounterInfoW(void)
Definition: pdh.c:548
static void test_PdhValidatePathA(void)
Definition: pdh.c:727
static const WCHAR system_uptime[]
Definition: pdh.c:79
static BOOL is_lang_english(void)
Definition: pdh.c:44
static void init_function_ptrs(void)
Definition: pdh.c:64
static DWORD_PTR
Definition: pdh.c:32
static void test_PdhOpenQueryA(void)
Definition: pdh.c:87
static void test_PdhValidatePathExW(void)
Definition: pdh.c:799
static void test_PdhGetRawCounterValue(void)
Definition: pdh.c:397
#define GETFUNCPTR(func)
Definition: pdh.c:38
static void test_PdhGetDllVersion(void)
Definition: pdh.c:972
static const WCHAR nonexistent_counter[]
Definition: pdh.c:81
static void test_PdhAddCounterA(void)
Definition: pdh.c:135
static const WCHAR processor_time[]
Definition: pdh.c:74
static void test_PdhAddCounterW(void)
Definition: pdh.c:184
static PDH_HCOUNTER *static LPCWSTR
Definition: pdh.c:33
static void test_PdhGetCounterInfoA(void)
Definition: pdh.c:494
static void test_PdhLookupPerfIndexByNameW(void)
Definition: pdh.c:628
static LPCSTR
Definition: pdh.c:32
static void test_PdhAddEnglishCounterW(void)
Definition: pdh.c:274
static const WCHAR percentage_processor_time[]
Definition: pdh.c:83
static void test_PdhLookupPerfNameByIndexW(void)
Definition: pdh.c:697
static void test_PdhValidatePathW(void)
Definition: pdh.c:750
static void test_PdhMakeCounterPathA(void)
Definition: pdh.c:875
static void test_PdhLookupPerfNameByIndexA(void)
Definition: pdh.c:656
static void test_PdhGetCounterTimeBase(void)
Definition: pdh.c:465
#define PDH_MAX_COUNTER_NAME
Definition: pdh.h:47
#define PDH_FMT_NOCAP100
Definition: pdh.h:54
HANDLE PDH_HLOG
Definition: pdh.h:38
#define PDH_FMT_1000
Definition: pdh.h:53
#define PDH_FMT_NOSCALE
Definition: pdh.h:52
LONG PDH_STATUS
Definition: pdh.h:35
#define PDH_VERSION
Definition: pdh.h:42
HANDLE PDH_HQUERY
Definition: pdh.h:36
#define PDH_CVERSION_WIN50
Definition: pdh.h:41
#define PDH_FMT_LARGE
Definition: pdh.h:51
PDH_STATUS WINAPI PdhCollectQueryDataEx(PDH_HQUERY handle, DWORD interval, HANDLE event)
Definition: pdh_main.c:520
PDH_STATUS WINAPI PdhValidatePathExW(PDH_HLOG source, LPCWSTR path)
Definition: pdh_main.c:1122
PDH_STATUS WINAPI PdhGetFormattedCounterValue(PDH_HCOUNTER handle, DWORD format, LPDWORD type, PPDH_FMT_COUNTERVALUE value)
Definition: pdh_main.c:772
PDH_STATUS WINAPI PdhLookupPerfIndexByNameA(LPCSTR machine, LPCSTR name, LPDWORD index)
Definition: pdh_main.c:838
PDH_STATUS WINAPI PdhRemoveCounter(PDH_HCOUNTER handle)
Definition: pdh_main.c:1001
PDH_STATUS WINAPI PdhGetCounterInfoA(PDH_HCOUNTER handle, BOOLEAN text, LPDWORD size, PPDH_COUNTER_INFO_A info)
Definition: pdh_main.c:651
PDH_STATUS WINAPI PdhAddEnglishCounterW(PDH_HQUERY query, LPCWSTR path, DWORD_PTR userdata, PDH_HCOUNTER *counter)
Definition: pdh_main.c:326
PDH_STATUS WINAPI PdhAddCounterA(PDH_HQUERY query, LPCSTR path, DWORD_PTR userdata, PDH_HCOUNTER *counter)
Definition: pdh_main.c:242
PDH_STATUS WINAPI PdhSetCounterScaleFactor(PDH_HCOUNTER handle, LONG factor)
Definition: pdh_main.c:1024
PDH_STATUS WINAPI PdhGetCounterInfoW(PDH_HCOUNTER handle, BOOLEAN text, LPDWORD size, PPDH_COUNTER_INFO_W info)
Definition: pdh_main.c:693
PDH_STATUS WINAPI PdhCollectQueryDataWithTime(PDH_HQUERY handle, LONGLONG *timestamp)
Definition: pdh_main.c:579
PDH_STATUS WINAPI PdhValidatePathA(LPCSTR path)
Definition: pdh_main.c:1051
PDH_STATUS WINAPI PdhOpenQueryA(LPCSTR source, DWORD_PTR userdata, PDH_HQUERY *query)
Definition: pdh_main.c:957
PDH_STATUS WINAPI PdhMakeCounterPathA(PDH_COUNTER_PATH_ELEMENTS_A *e, LPSTR buffer, LPDWORD buflen, DWORD flags)
Definition: pdh_main.c:1137
PDH_STATUS WINAPI PdhGetDllVersion(LPDWORD version)
Definition: pdh_main.c:759
PDH_STATUS WINAPI PdhLookupPerfNameByIndexA(LPCSTR machine, DWORD index, LPSTR buffer, LPDWORD size)
Definition: pdh_main.c:890
PDH_STATUS WINAPI PdhValidatePathExA(PDH_HLOG source, LPCSTR path)
Definition: pdh_main.c:1107
PDH_STATUS WINAPI PdhLookupPerfNameByIndexW(LPCWSTR machine, DWORD index, LPWSTR buffer, LPDWORD size)
Definition: pdh_main.c:918
PDH_STATUS WINAPI PdhLookupPerfIndexByNameW(LPCWSTR machine, LPCWSTR name, LPDWORD index)
Definition: pdh_main.c:863
PDH_STATUS WINAPI PdhGetRawCounterValue(PDH_HCOUNTER handle, LPDWORD type, PPDH_RAW_COUNTER value)
Definition: pdh_main.c:806
PDH_STATUS WINAPI PdhGetCounterTimeBase(PDH_HCOUNTER handle, LONGLONG *base)
Definition: pdh_main.c:735
PDH_STATUS WINAPI PdhAddCounterW(PDH_HQUERY hquery, LPCWSTR path, DWORD_PTR userdata, PDH_HCOUNTER *hcounter)
Definition: pdh_main.c:264
PDH_STATUS WINAPI PdhOpenQueryW(LPCWSTR source, DWORD_PTR userdata, PDH_HQUERY *handle)
Definition: pdh_main.c:975
PDH_STATUS WINAPI PdhCollectQueryData(PDH_HQUERY handle)
Definition: pdh_main.c:464
PDH_STATUS WINAPI PdhAddEnglishCounterA(PDH_HQUERY query, LPCSTR path, DWORD_PTR userdata, PDH_HCOUNTER *counter)
Definition: pdh_main.c:314
PDH_STATUS WINAPI PdhValidatePathW(LPCWSTR path)
Definition: pdh_main.c:1077
PDH_STATUS WINAPI PdhCloseQuery(PDH_HQUERY handle)
Definition: pdh_main.c:397
#define PDH_INSUFFICIENT_BUFFER
Definition: pdhmsg.h:51
#define PDH_INVALID_HANDLE
Definition: pdhmsg.h:45
#define PDH_STRING_NOT_FOUND
Definition: pdhmsg.h:69
#define PDH_NO_DATA
Definition: pdhmsg.h:31
#define PDH_MORE_DATA
Definition: pdhmsg.h:28
#define PDH_INVALID_ARGUMENT
Definition: pdhmsg.h:46
#define PDH_CSTATUS_BAD_COUNTERNAME
Definition: pdhmsg.h:49
#define PDH_INVALID_PATH
Definition: pdhmsg.h:53
#define PDH_CSTATUS_NO_COUNTER
Definition: pdhmsg.h:42
int __cdecl system(_In_opt_z_ const char *_Command)
#define LANG_ENGLISH
Definition: nls.h:52
#define PRIMARYLANGID(l)
Definition: nls.h:16
#define memset(x, y, z)
Definition: compat.h:39
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:637
int64_t LONGLONG
Definition: typedefs.h:68
Definition: pdh_main.c:94
int ret
#define WAIT_OBJECT_0
Definition: winbase.h:406
#define WINAPI
Definition: msvc.h:6
__wchar_t WCHAR
Definition: xmlstorage.h:180