2 * Tests for pdh.dll (Performance Data Helper)
4 * Copyright 2007 Hans Leidekker
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.
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.
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
28 #include "wine/test.h"
30 static const WCHAR processor_time[] =
31 {'%',' ','P','r','o','c','e','s','s','o','r',' ','T','i','m','e',0};
32 static const WCHAR uptime[] =
33 {'S','y','s','t','e','m',' ','U','p',' ','T','i','m','e',0};
35 static const WCHAR system_uptime[] =
36 {'\\','S','y','s','t','e','m','\\','S','y','s','t','e','m',' ','U','p',' ','T','i','m','e',0};
37 static const WCHAR system_downtime[] = /* does not exist */
38 {'\\','S','y','s','t','e','m','\\','S','y','s','t','e','m',' ','D','o','w','n',' ','T','i','m','e',0};
39 static const WCHAR percentage_processor_time[] =
40 {'\\','P','r','o','c','e','s','s','o','r','(','_','T','o','t','a','l',')',
41 '\\','%',' ','P','r','o','c','e','s','s','o','r',' ','T','i','m','e',0};
43 static void test_PdhOpenQueryA( void )
48 ret = PdhOpenQueryA( NULL, 0, NULL );
49 ok(ret == PDH_INVALID_ARGUMENT, "PdhOpenQueryA failed 0x%08x\n", ret);
51 ret = PdhOpenQueryA( NULL, 0, &query );
52 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
54 ret = PdhCloseQuery( NULL );
55 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08x\n", ret);
57 ret = PdhCloseQuery( &query );
58 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08x\n", ret);
60 ret = PdhCloseQuery( query );
61 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
63 ret = PdhCloseQuery( query );
64 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08x\n", ret);
67 static void test_PdhOpenQueryW( void )
72 ret = PdhOpenQueryW( NULL, 0, NULL );
73 ok(ret == PDH_INVALID_ARGUMENT, "PdhOpenQueryW failed 0x%08x\n", ret);
75 ret = PdhOpenQueryW( NULL, 0, &query );
76 ok(ret == ERROR_SUCCESS, "PdhOpenQueryW failed 0x%08x\n", ret);
78 ret = PdhCloseQuery( NULL );
79 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08x\n", ret);
81 ret = PdhCloseQuery( &query );
82 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08x\n", ret);
84 ret = PdhCloseQuery( query );
85 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
87 ret = PdhCloseQuery( query );
88 ok(ret == PDH_INVALID_HANDLE, "PdhCloseQuery failed 0x%08x\n", ret);
91 static void test_PdhAddCounterA( void )
97 ret = PdhOpenQueryA( NULL, 0, &query );
98 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
100 ret = PdhAddCounterA( NULL, "\\System\\System Up Time", 0, NULL );
101 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterA failed 0x%08x\n", ret);
103 ret = PdhAddCounterA( NULL, "\\System\\System Up Time", 0, &counter );
104 ok(ret == PDH_INVALID_HANDLE, "PdhAddCounterA failed 0x%08x\n", ret);
106 ret = PdhAddCounterA( query, NULL, 0, &counter );
107 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterA failed 0x%08x\n", ret);
109 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, NULL );
110 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterA failed 0x%08x\n", ret);
112 ret = PdhAddCounterA( query, "\\System\\System Down Time", 0, &counter );
113 ok(ret == PDH_CSTATUS_NO_COUNTER, "PdhAddCounterA failed 0x%08x\n", ret);
114 ok(!counter, "PdhAddCounterA failed %p\n", counter);
116 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
117 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08x\n", ret);
119 ret = PdhCollectQueryData( NULL );
120 ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryData failed 0x%08x\n", ret);
122 ret = PdhCollectQueryData( counter );
123 ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryData failed 0x%08x\n", ret);
125 ret = PdhCollectQueryData( query );
126 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08x\n", ret);
128 ret = PdhRemoveCounter( NULL );
129 ok(ret == PDH_INVALID_HANDLE, "PdhRemoveCounter failed 0x%08x\n", ret);
131 ret = PdhRemoveCounter( counter );
132 ok(ret == ERROR_SUCCESS, "PdhRemoveCounter failed 0x%08x\n", ret);
134 ret = PdhCloseQuery( query );
135 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
138 static void test_PdhAddCounterW( void )
142 PDH_HCOUNTER counter;
144 ret = PdhOpenQueryW( NULL, 0, &query );
145 ok(ret == ERROR_SUCCESS, "PdhOpenQueryW failed 0x%08x\n", ret);
147 ret = PdhAddCounterW( NULL, percentage_processor_time, 0, NULL );
148 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterW failed 0x%08x\n", ret);
150 ret = PdhAddCounterW( NULL, percentage_processor_time, 0, &counter );
151 ok(ret == PDH_INVALID_HANDLE, "PdhAddCounterW failed 0x%08x\n", ret);
153 ret = PdhAddCounterW( query, NULL, 0, &counter );
154 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterW failed 0x%08x\n", ret);
156 ret = PdhAddCounterW( query, percentage_processor_time, 0, NULL );
157 ok(ret == PDH_INVALID_ARGUMENT, "PdhAddCounterW failed 0x%08x\n", ret);
159 ret = PdhAddCounterW( query, system_downtime, 0, &counter );
160 ok(ret == PDH_CSTATUS_NO_COUNTER, "PdhAddCounterW failed 0x%08x\n", ret);
161 ok(!counter, "PdhAddCounterW failed %p\n", counter);
163 ret = PdhAddCounterW( query, percentage_processor_time, 0, &counter );
164 ok(ret == ERROR_SUCCESS, "PdhAddCounterW failed 0x%08x\n", ret);
166 ret = PdhCollectQueryData( NULL );
167 ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryData failed 0x%08x\n", ret);
169 ret = PdhCollectQueryData( counter );
170 ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryData failed 0x%08x\n", ret);
172 ret = PdhCollectQueryData( query );
173 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08x\n", ret);
175 ret = PdhRemoveCounter( NULL );
176 ok(ret == PDH_INVALID_HANDLE, "PdhRemoveCounter failed 0x%08x\n", ret);
178 ret = PdhRemoveCounter( counter );
179 ok(ret == ERROR_SUCCESS, "PdhRemoveCounter failed 0x%08x\n", ret);
181 ret = PdhCloseQuery( query );
182 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
185 static void test_PdhGetFormattedCounterValue( void )
189 PDH_HCOUNTER counter;
190 PDH_FMT_COUNTERVALUE value;
192 ret = PdhOpenQueryA( NULL, 0, &query );
193 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
195 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
196 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08x\n", ret);
198 ret = PdhGetFormattedCounterValue( NULL, PDH_FMT_LARGE, NULL, NULL );
199 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
201 ret = PdhGetFormattedCounterValue( NULL, PDH_FMT_LARGE, NULL, &value );
202 ok(ret == PDH_INVALID_HANDLE, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
204 ret = PdhGetFormattedCounterValue( counter, PDH_FMT_LARGE, NULL, NULL );
205 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
207 ret = PdhGetFormattedCounterValue( counter, PDH_FMT_LARGE, NULL, &value );
208 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
210 ret = PdhCollectQueryData( query );
211 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08x\n", ret);
213 ret = PdhGetFormattedCounterValue( counter, PDH_FMT_LARGE, NULL, &value );
214 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
216 ret = PdhGetFormattedCounterValue( counter, PDH_FMT_LARGE | PDH_FMT_NOSCALE, NULL, &value );
217 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
219 ret = PdhGetFormattedCounterValue( counter, PDH_FMT_LARGE | PDH_FMT_NOCAP100, NULL, &value );
220 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
222 ret = PdhGetFormattedCounterValue( counter, PDH_FMT_LARGE | PDH_FMT_1000, NULL, &value );
223 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
225 ret = PdhSetCounterScaleFactor( counter, 2 );
226 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
228 ret = PdhGetFormattedCounterValue( counter, PDH_FMT_LARGE, NULL, &value );
229 ok(ret == ERROR_SUCCESS, "PdhGetFormattedCounterValue failed 0x%08x\n", ret);
231 ret = PdhCloseQuery( query );
232 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
235 static void test_PdhGetRawCounterValue( void )
239 PDH_HCOUNTER counter;
240 PDH_RAW_COUNTER value;
242 ret = PdhOpenQueryA( NULL, 0, &query );
243 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
245 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
246 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08x\n", ret);
248 ret = PdhGetRawCounterValue( NULL, NULL, &value );
249 ok(ret == PDH_INVALID_HANDLE, "PdhGetRawCounterValue failed 0x%08x\n", ret);
251 ret = PdhGetRawCounterValue( counter, NULL, NULL );
252 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetRawCounterValue failed 0x%08x\n", ret);
254 ret = PdhGetRawCounterValue( counter, NULL, &value );
255 ok(ret == ERROR_SUCCESS, "PdhGetRawCounterValue failed 0x%08x\n", ret);
256 ok(value.CStatus == ERROR_SUCCESS, "expected ERROR_SUCCESS got %x", value.CStatus);
258 ret = PdhCollectQueryData( query );
259 ok(ret == ERROR_SUCCESS, "PdhCollectQueryData failed 0x%08x\n", ret);
261 ret = PdhGetRawCounterValue( counter, NULL, &value );
262 ok(ret == ERROR_SUCCESS, "PdhGetRawCounterValue failed 0x%08x\n", ret);
263 ok(value.CStatus == ERROR_SUCCESS, "expected ERROR_SUCCESS got %x", value.CStatus);
265 ret = PdhCloseQuery( query );
266 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
269 static void test_PdhSetCounterScaleFactor( void )
273 PDH_HCOUNTER counter;
275 ret = PdhOpenQueryA( NULL, 0, &query );
276 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
278 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
279 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08x\n", ret);
281 ret = PdhSetCounterScaleFactor( NULL, 8 );
282 ok(ret == PDH_INVALID_HANDLE, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
284 ret = PdhSetCounterScaleFactor( NULL, 1 );
285 ok(ret == PDH_INVALID_HANDLE, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
287 ret = PdhSetCounterScaleFactor( counter, 8 );
288 ok(ret == PDH_INVALID_ARGUMENT, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
290 ret = PdhSetCounterScaleFactor( counter, -8 );
291 ok(ret == PDH_INVALID_ARGUMENT, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
293 ret = PdhSetCounterScaleFactor( counter, 7 );
294 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
296 ret = PdhSetCounterScaleFactor( counter, 0 );
297 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
299 ret = PdhCloseQuery( query );
300 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
303 static void test_PdhGetCounterTimeBase( void )
307 PDH_HCOUNTER counter;
310 ret = PdhOpenQueryA( NULL, 0, &query );
311 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
313 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
314 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08x\n", ret);
316 ret = PdhGetCounterTimeBase( NULL, NULL );
317 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterTimeBase failed 0x%08x\n", ret);
319 ret = PdhGetCounterTimeBase( NULL, &base );
320 ok(ret == PDH_INVALID_HANDLE, "PdhGetCounterTimeBase failed 0x%08x\n", ret);
322 ret = PdhGetCounterTimeBase( counter, NULL );
323 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterTimeBase failed 0x%08x\n", ret);
325 ret = PdhGetCounterTimeBase( counter, &base );
326 ok(ret == ERROR_SUCCESS, "PdhGetCounterTimeBase failed 0x%08x\n", ret);
328 ret = PdhCloseQuery( query );
329 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
332 static void test_PdhGetCounterInfoA( void )
336 PDH_HCOUNTER counter;
337 PDH_COUNTER_INFO_A info;
340 ret = PdhOpenQueryA( NULL, 0, &query );
341 ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
343 ret = PdhAddCounterA( query, "\\System\\System Up Time", 0, &counter );
344 ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08x\n", ret);
346 ret = PdhGetCounterInfoA( NULL, 0, NULL, NULL );
347 ok(ret == PDH_INVALID_HANDLE, "PdhGetCounterInfoA failed 0x%08x\n", ret);
349 ret = PdhGetCounterInfoA( counter, 0, NULL, NULL );
350 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoA failed 0x%08x\n", ret);
352 ret = PdhGetCounterInfoA( counter, 0, NULL, &info );
353 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoA failed 0x%08x\n", ret);
355 size = sizeof(info) - 1;
356 ret = PdhGetCounterInfoA( counter, 0, &size, NULL );
357 ok(ret == PDH_MORE_DATA, "PdhGetCounterInfoA failed 0x%08x\n", ret);
360 ret = PdhGetCounterInfoA( counter, 0, &size, &info );
361 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoA failed 0x%08x\n", ret);
362 ok(size == sizeof(info), "PdhGetCounterInfoA failed %d\n", size);
364 ret = PdhGetCounterInfoA( counter, 0, &size, &info );
365 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoA failed 0x%08x\n", ret);
366 ok(info.lScale == 0, "lScale %d\n", info.lScale);
368 ret = PdhSetCounterScaleFactor( counter, 0 );
369 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
371 ret = PdhGetCounterInfoA( counter, 0, &size, &info );
372 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoA failed 0x%08x\n", ret);
373 ok(info.lScale == 0, "lScale %d\n", info.lScale);
375 ret = PdhSetCounterScaleFactor( counter, -5 );
376 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
378 ret = PdhGetCounterInfoA( counter, 0, &size, &info );
379 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoA failed 0x%08x\n", ret);
380 ok(info.lScale == -5, "lScale %d\n", info.lScale);
382 ret = PdhCloseQuery( query );
383 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
386 static void test_PdhGetCounterInfoW( void )
390 PDH_HCOUNTER counter;
391 PDH_COUNTER_INFO_W info;
394 ret = PdhOpenQueryW( NULL, 0, &query );
395 ok(ret == ERROR_SUCCESS, "PdhOpenQueryW failed 0x%08x\n", ret);
397 ret = PdhAddCounterW( query, percentage_processor_time, 0, &counter );
398 ok(ret == ERROR_SUCCESS, "PdhAddCounterW failed 0x%08x\n", ret);
400 ret = PdhGetCounterInfoW( NULL, 0, NULL, NULL );
401 ok(ret == PDH_INVALID_HANDLE, "PdhGetCounterInfoW failed 0x%08x\n", ret);
403 ret = PdhGetCounterInfoW( counter, 0, NULL, NULL );
404 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoW failed 0x%08x\n", ret);
406 ret = PdhGetCounterInfoW( counter, 0, NULL, &info );
407 ok(ret == PDH_INVALID_ARGUMENT, "PdhGetCounterInfoW failed 0x%08x\n", ret);
409 size = sizeof(info) - 1;
410 ret = PdhGetCounterInfoW( counter, 0, &size, NULL );
411 ok(ret == PDH_MORE_DATA, "PdhGetCounterInfoW failed 0x%08x\n", ret);
414 ret = PdhGetCounterInfoW( counter, 0, &size, &info );
415 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoW failed 0x%08x\n", ret);
416 ok(size == sizeof(info), "PdhGetCounterInfoW failed %d\n", size);
418 ret = PdhGetCounterInfoW( counter, 0, &size, &info );
419 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoW failed 0x%08x\n", ret);
420 ok(info.lScale == 0, "lScale %d\n", info.lScale);
422 ret = PdhSetCounterScaleFactor( counter, 0 );
423 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
425 ret = PdhGetCounterInfoW( counter, 0, &size, &info );
426 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoW failed 0x%08x\n", ret);
427 ok(info.lScale == 0, "lScale %d\n", info.lScale);
429 ret = PdhSetCounterScaleFactor( counter, -5 );
430 ok(ret == ERROR_SUCCESS, "PdhSetCounterScaleFactor failed 0x%08x\n", ret);
432 ret = PdhGetCounterInfoW( counter, 0, &size, &info );
433 ok(ret == ERROR_SUCCESS, "PdhGetCounterInfoW failed 0x%08x\n", ret);
434 ok(info.lScale == -5, "lScale %d\n", info.lScale);
436 ret = PdhCloseQuery( query );
437 ok(ret == ERROR_SUCCESS, "PdhCloseQuery failed 0x%08x\n", ret);
440 static void test_PdhLookupPerfIndexByNameA( void )
445 ret = PdhLookupPerfIndexByNameA( NULL, NULL, NULL );
446 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameA failed 0x%08x\n", ret);
448 ret = PdhLookupPerfIndexByNameA( NULL, NULL, &index );
449 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameA failed 0x%08x\n", ret);
451 ret = PdhLookupPerfIndexByNameA( NULL, "No Counter", &index );
452 ok(ret == PDH_STRING_NOT_FOUND, "PdhLookupPerfIndexByNameA failed 0x%08x\n", ret);
454 ret = PdhLookupPerfIndexByNameA( NULL, "% Processor Time", NULL );
455 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameA failed 0x%08x\n", ret);
457 ret = PdhLookupPerfIndexByNameA( NULL, "% Processor Time", &index );
458 ok(ret == ERROR_SUCCESS, "PdhLookupPerfIndexByNameA failed 0x%08x\n", ret);
459 ok(index == 6, "PdhLookupPerfIndexByNameA failed %d\n", index);
461 ret = PdhLookupPerfIndexByNameA( NULL, "System Up Time", &index );
462 ok(ret == ERROR_SUCCESS, "PdhLookupPerfIndexByNameA failed 0x%08x\n", ret);
463 ok(index == 674, "PdhLookupPerfIndexByNameA failed %d\n", index);
466 static void test_PdhLookupPerfIndexByNameW( void )
471 static const WCHAR no_counter[] = {'N','o',' ','C','o','u','n','t','e','r',0};
473 ret = PdhLookupPerfIndexByNameW( NULL, NULL, NULL );
474 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameW failed 0x%08x\n", ret);
476 ret = PdhLookupPerfIndexByNameW( NULL, NULL, &index );
477 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameW failed 0x%08x\n", ret);
479 ret = PdhLookupPerfIndexByNameW( NULL, no_counter, &index );
480 ok(ret == PDH_STRING_NOT_FOUND, "PdhLookupPerfIndexByNameW failed 0x%08x\n", ret);
482 ret = PdhLookupPerfIndexByNameW( NULL, processor_time, NULL );
483 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfIndexByNameW failed 0x%08x\n", ret);
485 ret = PdhLookupPerfIndexByNameW( NULL, processor_time, &index );
486 ok(ret == ERROR_SUCCESS, "PdhLookupPerfIndexByNameW failed 0x%08x\n", ret);
487 ok(index == 6, "PdhLookupPerfIndexByNameW failed %d\n", index);
489 ret = PdhLookupPerfIndexByNameW( NULL, uptime, &index );
490 ok(ret == ERROR_SUCCESS, "PdhLookupPerfIndexByNameW failed 0x%08x\n", ret);
491 ok(index == 674, "PdhLookupPerfIndexByNameW failed %d\n", index);
494 static void test_PdhLookupPerfNameByIndexA( void )
497 char buffer[PDH_MAX_COUNTER_NAME] = "!!";
500 ret = PdhLookupPerfNameByIndexA( NULL, 0, NULL, NULL );
501 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfNameByIndexA failed 0x%08x\n", ret);
504 ret = PdhLookupPerfNameByIndexA( NULL, 0, NULL, &size );
505 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexA failed 0x%08x\n", ret);
506 ok(size == 1, "PdhLookupPerfNameByIndexA failed %d\n", size);
508 size = sizeof(buffer);
509 ret = PdhLookupPerfNameByIndexA( NULL, 0, buffer, &size );
510 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexA failed 0x%08x\n", ret);
511 ok(!strcmp(buffer, "!!"), "PdhLookupPerfNameByIndexA failed %s\n", buffer);
514 ret = PdhLookupPerfNameByIndexA( NULL, 6, buffer, &size );
515 ok(ret == PDH_MORE_DATA, "PdhLookupPerfNameByIndexA failed 0x%08x\n", ret);
516 ok(size == sizeof("% Processor Time"), "PdhLookupPerfNameByIndexA failed %d\n", size);
518 size = sizeof(buffer);
519 ret = PdhLookupPerfNameByIndexA( NULL, 6, buffer, &size );
520 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexA failed 0x%08x\n", ret);
521 ok(!lstrcmpA( buffer, "% Processor Time" ),
522 "PdhLookupPerfNameByIndexA failed, got %s expected \'%% Processor Time\'\n", buffer);
523 ok(size == sizeof("% Processor Time"), "PdhLookupPerfNameByIndexA failed %d\n", size);
526 ret = PdhLookupPerfNameByIndexA( NULL, 674, NULL, &size );
527 ok(ret == PDH_MORE_DATA, "PdhLookupPerfNameByIndexA failed 0x%08x\n", ret);
528 ok(size == sizeof("System Up Time"), "PdhLookupPerfNameByIndexA failed %d\n", size);
530 size = sizeof(buffer);
531 ret = PdhLookupPerfNameByIndexA( NULL, 674, buffer, &size );
532 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexA failed 0x%08x\n", ret);
533 ok(!lstrcmpA( buffer, "System Up Time" ),
534 "PdhLookupPerfNameByIndexA failed, got %s expected \'System Up Time\'\n", buffer);
535 ok(size == sizeof("System Up Time"), "PdhLookupPerfNameByIndexA failed %d\n", size);
538 static void test_PdhLookupPerfNameByIndexW( void )
541 WCHAR buffer[PDH_MAX_COUNTER_NAME];
544 ret = PdhLookupPerfNameByIndexW( NULL, 0, NULL, NULL );
545 ok(ret == PDH_INVALID_ARGUMENT, "PdhLookupPerfNameByIndexW failed 0x%08x\n", ret);
548 ret = PdhLookupPerfNameByIndexW( NULL, 0, NULL, &size );
549 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexW failed 0x%08x\n", ret);
550 ok(size == 1, "PdhLookupPerfNameByIndexW failed %d\n", size);
552 size = sizeof(buffer) / sizeof(WCHAR);
553 ret = PdhLookupPerfNameByIndexW( NULL, 0, buffer, &size );
554 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexW failed 0x%08x\n", ret);
557 ret = PdhLookupPerfNameByIndexW( NULL, 6, buffer, &size );
558 ok(ret == PDH_MORE_DATA, "PdhLookupPerfNameByIndexW failed 0x%08x\n", ret);
559 ok(size == sizeof(processor_time) / sizeof(WCHAR), "PdhLookupPerfNameByIndexW failed %d\n", size);
561 size = sizeof(buffer) / sizeof(WCHAR);
562 ret = PdhLookupPerfNameByIndexW( NULL, 6, buffer, &size );
563 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexW failed 0x%08x\n", ret);
564 ok(size == sizeof(processor_time) / sizeof(WCHAR), "PdhLookupPerfNameByIndexW failed %d\n", size);
567 ret = PdhLookupPerfNameByIndexW( NULL, 674, NULL, &size );
568 ok(ret == PDH_MORE_DATA, "PdhLookupPerfNameByIndexW failed 0x%08x\n", ret);
569 ok(size == sizeof(uptime) / sizeof(WCHAR), "PdhLookupPerfNameByIndexW failed %d\n", size);
571 size = sizeof(buffer) / sizeof(WCHAR);
572 ret = PdhLookupPerfNameByIndexW( NULL, 674, buffer, &size );
573 ok(ret == ERROR_SUCCESS, "PdhLookupPerfNameByIndexW failed 0x%08x\n", ret);
574 ok(size == sizeof(uptime) / sizeof(WCHAR), "PdhLookupPerfNameByIndexW failed %d\n", size);
579 test_PdhOpenQueryA();
580 test_PdhOpenQueryW();
582 test_PdhAddCounterA();
583 test_PdhAddCounterW();
585 test_PdhGetFormattedCounterValue();
586 test_PdhGetRawCounterValue();
587 test_PdhSetCounterScaleFactor();
588 test_PdhGetCounterTimeBase();
590 test_PdhGetCounterInfoA();
591 test_PdhGetCounterInfoW();
593 test_PdhLookupPerfIndexByNameA();
594 test_PdhLookupPerfIndexByNameW();
596 test_PdhLookupPerfNameByIndexA();
597 test_PdhLookupPerfNameByIndexW();