[PATCH 2/2] advapi32/tests: add test prototype for RegQueryValueEx HKEY_PERFORMANCE_DATA
Vitaly Lipatov
lav at etersoft.ru
Wed Mar 22 06:03:46 CDT 2017
Tested on Windows 10 and ALT Linux p8
Signed-off-by: Vitaly Lipatov <lav at etersoft.ru>
---
dlls/advapi32/tests/registry.c | 50 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c
index 82f5015..9483beb 100644
--- a/dlls/advapi32/tests/registry.c
+++ b/dlls/advapi32/tests/registry.c
@@ -27,6 +27,7 @@
#include "winbase.h"
#include "winternl.h"
#include "winreg.h"
+#include "winperf.h"
#include "winsvc.h"
#include "winerror.h"
#include "aclapi.h"
@@ -3479,6 +3480,54 @@ static void test_RegNotifyChangeKeyValue(void)
CloseHandle(event);
}
+static void test_RegQueryValueExPerformanceData(void)
+{
+ DWORD cbData, len;
+ BYTE *value;
+ DWORD dwret;
+ LONG limit = 10;
+ PERF_DATA_BLOCK *pdb;
+
+ /* Test with data == NULL */
+ dwret = RegQueryValueExA( HKEY_PERFORMANCE_DATA, "Global", NULL, NULL, NULL, &cbData );
+ todo_wine ok( dwret == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %d\n", dwret );
+
+ /* Test ERROR_MORE_DATA, start with small buffer */
+ len = 10;
+ value = HeapAlloc(GetProcessHeap(), 0, len);
+ cbData = len;
+ dwret = RegQueryValueExA( HKEY_PERFORMANCE_DATA, "Global", NULL, NULL, value, &cbData );
+ todo_wine ok( dwret == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %d\n", dwret );
+ while( dwret == ERROR_MORE_DATA && limit)
+ {
+ len = len * 10;
+ value = HeapReAlloc( GetProcessHeap(), 0, value, len );
+ cbData = len;
+ dwret = RegQueryValueExA( HKEY_PERFORMANCE_DATA, "Global", NULL, NULL, value, &cbData );
+ limit--;
+ }
+ ok(limit > 0, "too many times ERROR_MORE_DATA returned\n");
+
+ todo_wine ok(dwret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", dwret);
+
+ /* Check returned data */
+ if (dwret == ERROR_SUCCESS)
+ {
+ todo_wine ok(len >= sizeof(PERF_DATA_BLOCK), "expected size buffer at least %d, got %d\n", sizeof(PERF_DATA_BLOCK), len);
+ if (len >= sizeof(PERF_DATA_BLOCK)) {
+ pdb = (PERF_DATA_BLOCK*) value;
+ ok(pdb->Signature[0] == 'P', "expected Signature[0] = 'P', got 0x%x\n", pdb->Signature[0]);
+ ok(pdb->Signature[1] == 'E', "expected Signature[1] = 'E', got 0x%x\n", pdb->Signature[1]);
+ ok(pdb->Signature[2] == 'R', "expected Signature[2] = 'R', got 0x%x\n", pdb->Signature[2]);
+ ok(pdb->Signature[3] == 'F', "expected Signature[3] = 'F', got 0x%x\n", pdb->Signature[3]);
+ /* TODO: check other field */
+ }
+ }
+
+ HeapFree(GetProcessHeap(), 0, value);
+}
+
+
START_TEST(registry)
{
/* Load pointers for functions that are not available in all Windows versions */
@@ -3514,6 +3563,7 @@ START_TEST(registry)
test_delete_key_value();
test_RegOpenCurrentUser();
test_RegNotifyChangeKeyValue();
+ test_RegQueryValueExPerformanceData();
/* cleanup */
delete_key( hkey_main );
--
2.10.2
More information about the wine-patches
mailing list