Module: wine Branch: master Commit: cf8b16bc9ec8b427ed330869060532681cdf5329 URL: http://source.winehq.org/git/wine.git/?a=commit;h=cf8b16bc9ec8b427ed33086906...
Author: Hans Leidekker hans@it.vu.nl Date: Sat Sep 29 21:07:01 2007 +0200
pdh: Fix parameter handling in PdhAddEnglishCounter{A, W} and PdhCollectQueryDataWithTime.
---
dlls/pdh/pdh_main.c | 20 ++++++++++++++------ dlls/pdh/tests/pdh.c | 17 +++++++++++++---- 2 files changed, 27 insertions(+), 10 deletions(-)
diff --git a/dlls/pdh/pdh_main.c b/dlls/pdh/pdh_main.c index a97ee9b..c5117bf 100644 --- a/dlls/pdh/pdh_main.c +++ b/dlls/pdh/pdh_main.c @@ -304,6 +304,9 @@ PDH_STATUS WINAPI PdhAddCounterW( PDH_HQUERY hquery, LPCWSTR path, PDH_STATUS WINAPI PdhAddEnglishCounterA( PDH_HQUERY query, LPCSTR path, DWORD_PTR userdata, PDH_HCOUNTER *counter ) { + TRACE("%p %s %lx %p\n", query, debugstr_a(path), userdata, counter); + + if (!query) return PDH_INVALID_ARGUMENT; return PdhAddCounterA( query, path, userdata, counter ); }
@@ -313,6 +316,9 @@ PDH_STATUS WINAPI PdhAddEnglishCounterA( PDH_HQUERY query, LPCSTR path, PDH_STATUS WINAPI PdhAddEnglishCounterW( PDH_HQUERY query, LPCWSTR path, DWORD_PTR userdata, PDH_HCOUNTER *counter ) { + TRACE("%p %s %lx %p\n", query, debugstr_w(path), userdata, counter); + + if (!query) return PDH_INVALID_ARGUMENT; return PdhAddCounterW( query, path, userdata, counter ); }
@@ -543,9 +549,13 @@ PDH_STATUS WINAPI PdhCollectQueryDataEx( PDH_HQUERY handle, DWORD interval, HAND PDH_STATUS WINAPI PdhCollectQueryDataWithTime( PDH_HQUERY handle, LONGLONG *timestamp ) { struct query *query = handle; + struct counter *counter; + struct list *item;
TRACE("%p %p\n", handle, timestamp);
+ if (!timestamp) return PDH_INVALID_ARGUMENT; + EnterCriticalSection( &pdh_handle_cs ); if (!query || query->magic != PDH_MAGIC_QUERY) { @@ -560,13 +570,11 @@ PDH_STATUS WINAPI PdhCollectQueryDataWithTime( PDH_HQUERY handle, LONGLONG *time
collect_query_data( query );
- if (timestamp) - { - struct list *item = list_head( &query->counters ); - struct counter *counter = LIST_ENTRY( item, struct counter, entry ); + item = list_head( &query->counters ); + counter = LIST_ENTRY( item, struct counter, entry ); + + *timestamp = ((LONGLONG)counter->stamp.dwHighDateTime << 32) | counter->stamp.dwLowDateTime;
- *timestamp = ((LONGLONG)counter->stamp.dwHighDateTime << 32) | counter->stamp.dwLowDateTime; - } LeaveCriticalSection( &pdh_handle_cs ); return ERROR_SUCCESS; } diff --git a/dlls/pdh/tests/pdh.c b/dlls/pdh/tests/pdh.c index 2853f8b..0cfdff3 100644 --- a/dlls/pdh/tests/pdh.c +++ b/dlls/pdh/tests/pdh.c @@ -211,11 +211,14 @@ static void test_PdhAddEnglishCounterA( void ) ret = PdhOpenQueryA( NULL, 0, &query ); ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
+ ret = PdhCollectQueryData( query ); + ok(ret == PDH_NO_DATA, "PdhCollectQueryData failed 0x%08x\n", ret); + ret = pPdhAddEnglishCounterA( NULL, "\System\System Up Time", 0, NULL ); ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterA failed 0x%08x\n", ret);
ret = pPdhAddEnglishCounterA( NULL, "\System\System Up Time", 0, &counter ); - ok(ret == PDH_INVALID_HANDLE, "PdhAddEnglishCounterA failed 0x%08x\n", ret); + ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterA failed 0x%08x\n", ret);
ret = pPdhAddEnglishCounterA( query, NULL, 0, &counter ); ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterA failed 0x%08x\n", ret); @@ -249,11 +252,14 @@ static void test_PdhAddEnglishCounterW( void ) ret = PdhOpenQueryW( NULL, 0, &query ); ok(ret == ERROR_SUCCESS, "PdhOpenQueryW failed 0x%08x\n", ret);
+ ret = PdhCollectQueryData( query ); + ok(ret == PDH_NO_DATA, "PdhCollectQueryData failed 0x%08x\n", ret); + ret = pPdhAddEnglishCounterW( NULL, system_uptime, 0, NULL ); ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterW failed 0x%08x\n", ret);
ret = pPdhAddEnglishCounterW( NULL, system_uptime, 0, &counter ); - ok(ret == PDH_INVALID_HANDLE, "PdhAddEnglishCounterW failed 0x%08x\n", ret); + ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterW failed 0x%08x\n", ret);
ret = pPdhAddEnglishCounterW( query, NULL, 0, &counter ); ok(ret == PDH_INVALID_ARGUMENT, "PdhAddEnglishCounterW failed 0x%08x\n", ret); @@ -288,14 +294,17 @@ static void test_PdhCollectQueryDataWithTime( void ) ret = PdhOpenQueryA( NULL, 0, &query ); ok(ret == ERROR_SUCCESS, "PdhOpenQueryA failed 0x%08x\n", ret);
+ ret = PdhCollectQueryData( query ); + ok(ret == PDH_NO_DATA, "PdhCollectQueryData failed 0x%08x\n", ret); + ret = PdhAddCounterA( query, "\System\System Up Time", 0, &counter ); ok(ret == ERROR_SUCCESS, "PdhAddCounterA failed 0x%08x\n", ret);
ret = pPdhCollectQueryDataWithTime( NULL, NULL ); - ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryDataWithTime failed 0x%08x\n", ret); + ok(ret == PDH_INVALID_ARGUMENT, "PdhCollectQueryDataWithTime failed 0x%08x\n", ret);
ret = pPdhCollectQueryDataWithTime( query, NULL ); - ok(ret == ERROR_SUCCESS, "PdhCollectQueryDataWithTime failed 0x%08x\n", ret); + ok(ret == PDH_INVALID_ARGUMENT, "PdhCollectQueryDataWithTime failed 0x%08x\n", ret);
ret = pPdhCollectQueryDataWithTime( NULL, &time ); ok(ret == PDH_INVALID_HANDLE, "PdhCollectQueryDataWithTime failed 0x%08x\n", ret);