ReactOS 0.4.17-dev-966-gf06eace
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);
37static double (WINAPI *pPdhVbGetDoubleCounterValue)(PDH_HCOUNTER, PDH_STATUS *);
38
39#define GETFUNCPTR(func) p##func = (void *)GetProcAddress( pdh, #func );
40
41
42/* Returns true if the user interface is in English. Note that this does not
43 * presume of the formatting of dates, numbers, etc.
44 */
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}
64
65static void init_function_ptrs( void )
66{
67 pdh = GetModuleHandleA( "pdh" );
74}
75
76static const WCHAR processor_time[] = L"% Processor Time";
77static const WCHAR uptime[] = L"System Up Time";
78
79static const WCHAR system_uptime[] = L"\\System\\System Up Time";
80static const WCHAR nonexistent_counter[] = L"\\System\\System Down Time";
81static const WCHAR percentage_processor_time[] = L"\\Processor(_Total)\\% Processor Time";
82
83static void test_PdhOpenQueryA( void )
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}
106
107static void test_PdhOpenQueryW( void )
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}
130
131static void test_PdhAddCounterA( void )
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}
179
180static void test_PdhAddCounterW( void )
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}
228
229static void test_PdhAddEnglishCounterA( void )
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}
270
271static void test_PdhAddEnglishCounterW( void )
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}
312
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}
344
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}
394
395static void test_PdhGetRawCounterValue( void )
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}
428
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}
468
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}
502
503static void test_PdhGetCounterTimeBase( void )
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}
531
532static void test_PdhGetCounterInfoA( void )
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}
585
586static void test_PdhGetCounterInfoW( void )
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}
639
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}
665
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}
691
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}
725
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}
755
756static void test_PdhValidatePathA( void )
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}
778
779static void test_PdhValidatePathW( void )
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}
801
802static void test_PdhValidatePathExA( void )
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}
824
825static void test_PdhValidatePathExW( void )
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}
847
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}
897
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}
996
997static void test_PdhGetDllVersion(void)
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}
1018
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 trace
Definition: atltest.h:70
#define ok(value,...)
Definition: atltest.h:57
#define skip(...)
Definition: atltest.h:64
#define broken(x)
Definition: atltest.h:178
#define START_TEST(x)
Definition: atltest.h:75
#define index(s, c)
Definition: various.h:29
#define ARRAY_SIZE(A)
Definition: main.h:20
#define ERROR_SUCCESS
Definition: deptool.c:10
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
#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
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
Definition: locale.c:4104
LANGID WINAPI GetUserDefaultLangID(void)
Definition: locale.c:1182
_ACRTIMP int __cdecl strcmp(const char *, const char *)
Definition: string.c:3324
return ret
Definition: mutex.c:147
#define L(x)
Definition: resources.c:13
#define INFINITE
Definition: serial.h:102
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint buffer
Definition: glext.h:5915
GLsizeiptr size
Definition: glext.h:5919
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
unsigned int UINT
Definition: sysinfo.c:13
#define e
Definition: ke_i.h:82
USHORT LANGID
Definition: mui.h:9
__u16 time
Definition: mkdosfs.c:8
static HINSTANCE hkernel32
Definition: process.c:68
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
Definition: string.c:91
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 HMODULE pdh
Definition: pdh.c:30
static void test_PdhLookupPerfIndexByNameA(void)
Definition: pdh.c:640
static const WCHAR uptime[]
Definition: pdh.c:77
static void test_PdhGetCounterInfoW(void)
Definition: pdh.c:586
static void test_PdhValidatePathA(void)
Definition: pdh.c:756
static const WCHAR system_uptime[]
Definition: pdh.c:79
static BOOL is_lang_english(void)
Definition: pdh.c:45
static void init_function_ptrs(void)
Definition: pdh.c:65
static DWORD_PTR
Definition: pdh.c:32
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
#define GETFUNCPTR(func)
Definition: pdh.c:39
static void test_PdhGetDllVersion(void)
Definition: pdh.c:997
static const WCHAR nonexistent_counter[]
Definition: pdh.c:80
static void test_PdhAddCounterA(void)
Definition: pdh.c:131
static void test_PdhVbGetDoubleCounterValue(void)
Definition: pdh.c:429
static const WCHAR processor_time[]
Definition: pdh.c:76
static void test_PdhAddCounterW(void)
Definition: pdh.c:180
static PDH_HCOUNTER *static LPCWSTR
Definition: pdh.c:33
static void test_PdhGetCounterInfoA(void)
Definition: pdh.c:532
static void test_PdhLookupPerfIndexByNameW(void)
Definition: pdh.c:666
static LPCSTR
Definition: pdh.c:32
static void test_PdhAddEnglishCounterW(void)
Definition: pdh.c:271
static const WCHAR percentage_processor_time[]
Definition: pdh.c:81
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
#define PDH_MAX_COUNTER_NAME
Definition: pdh.h:47
HANDLE PDH_HCOUNTER
Definition: pdh.h:37
#define PDH_FMT_DOUBLE
Definition: pdh.h:50
#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:485
PDH_STATUS WINAPI PdhValidatePathExW(PDH_HLOG source, LPCWSTR path)
Definition: pdh_main.c:1104
PDH_STATUS WINAPI PdhGetFormattedCounterValue(PDH_HCOUNTER handle, DWORD format, LPDWORD type, PPDH_FMT_COUNTERVALUE value)
Definition: pdh_main.c:737
PDH_STATUS WINAPI PdhLookupPerfIndexByNameA(LPCSTR machine, LPCSTR name, LPDWORD index)
Definition: pdh_main.c:803
PDH_STATUS WINAPI PdhRemoveCounter(PDH_HCOUNTER handle)
Definition: pdh_main.c:966
PDH_STATUS WINAPI PdhGetCounterInfoA(PDH_HCOUNTER handle, BOOLEAN text, LPDWORD size, PPDH_COUNTER_INFO_A info)
Definition: pdh_main.c:616
PDH_STATUS WINAPI PdhAddEnglishCounterW(PDH_HQUERY query, LPCWSTR path, DWORD_PTR userdata, PDH_HCOUNTER *counter)
Definition: pdh_main.c:290
PDH_STATUS WINAPI PdhAddCounterA(PDH_HQUERY query, LPCSTR path, DWORD_PTR userdata, PDH_HCOUNTER *counter)
Definition: pdh_main.c:205
PDH_STATUS WINAPI PdhSetCounterScaleFactor(PDH_HCOUNTER handle, LONG factor)
Definition: pdh_main.c:989
PDH_STATUS WINAPI PdhGetCounterInfoW(PDH_HCOUNTER handle, BOOLEAN text, LPDWORD size, PPDH_COUNTER_INFO_W info)
Definition: pdh_main.c:658
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 PdhValidatePathA(LPCSTR path)
Definition: pdh_main.c:1016
PDH_STATUS WINAPI PdhOpenQueryA(LPCSTR source, DWORD_PTR userdata, PDH_HQUERY *query)
Definition: pdh_main.c:922
PDH_STATUS WINAPI PdhMakeCounterPathA(PDH_COUNTER_PATH_ELEMENTS_A *e, LPSTR buffer, LPDWORD buflen, DWORD flags)
Definition: pdh_main.c:1119
PDH_STATUS WINAPI PdhGetDllVersion(LPDWORD version)
Definition: pdh_main.c:724
PDH_STATUS WINAPI PdhLookupPerfNameByIndexA(LPCSTR machine, DWORD index, LPSTR buffer, LPDWORD size)
Definition: pdh_main.c:855
PDH_STATUS WINAPI PdhValidatePathExA(PDH_HLOG source, LPCSTR path)
Definition: pdh_main.c:1089
PDH_STATUS WINAPI PdhLookupPerfNameByIndexW(LPCWSTR machine, DWORD index, LPWSTR buffer, LPDWORD size)
Definition: pdh_main.c:883
PDH_STATUS WINAPI PdhLookupPerfIndexByNameW(LPCWSTR machine, LPCWSTR name, LPDWORD index)
Definition: pdh_main.c:828
PDH_STATUS WINAPI PdhGetRawCounterValue(PDH_HCOUNTER handle, LPDWORD type, PPDH_RAW_COUNTER value)
Definition: pdh_main.c:771
PDH_STATUS WINAPI PdhGetCounterTimeBase(PDH_HCOUNTER handle, LONGLONG *base)
Definition: pdh_main.c:700
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
PDH_STATUS WINAPI PdhCollectQueryData(PDH_HQUERY handle)
Definition: pdh_main.c:429
PDH_STATUS WINAPI PdhAddEnglishCounterA(PDH_HQUERY query, LPCSTR path, DWORD_PTR userdata, PDH_HCOUNTER *counter)
Definition: pdh_main.c:277
PDH_STATUS WINAPI PdhValidatePathW(LPCWSTR path)
Definition: pdh_main.c:1042
PDH_STATUS WINAPI PdhCloseQuery(PDH_HQUERY handle)
Definition: pdh_main.c:362
#define PDH_INSUFFICIENT_BUFFER
Definition: pdhmsg.h:51
#define PDH_INVALID_HANDLE
Definition: pdhmsg.h:45
#define PDH_FUNCTION_NOT_FOUND
Definition: pdhmsg.h:47
#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
short WCHAR
Definition: pedump.c:58
#define LANG_ENGLISH
Definition: nls.h:52
#define PRIMARYLANGID(l)
Definition: nls.h:16
#define memset(x, y, z)
Definition: compat.h:39
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
int64_t LONGLONG
Definition: typedefs.h:68
Definition: pdh_main.c:64
#define WAIT_OBJECT_0
Definition: winbase.h:383
#define WINAPI
Definition: msvc.h:6