[PATCH] ntdll/tests: Accept larger SYSTEM_CACHE_INFORMATION on win8

Detlef Riekenberg wine.dev at web.de
Mon Dec 10 04:49:49 CST 2012


No updated information for the changed SYSTEM_CACHE_INFORMATION
found, so i hardcoded the new size.

--
By by ... Detlef
---
 dlls/ntdll/tests/info.c |   25 +++++++++++++++++++------
 1 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c
index 47e5587..21c2729 100644
--- a/dlls/ntdll/tests/info.c
+++ b/dlls/ntdll/tests/info.c
@@ -505,18 +505,31 @@ static void test_query_cache(void)
 {
     NTSTATUS status;
     ULONG ReturnLength;
-    SYSTEM_CACHE_INFORMATION sci;
+    ULONG expected;
+    BYTE buffer[128];
+    SYSTEM_CACHE_INFORMATION *sci = (SYSTEM_CACHE_INFORMATION *) buffer;
 
-    status = pNtQuerySystemInformation(SystemCacheInformation, &sci, 0, &ReturnLength);
+    status = pNtQuerySystemInformation(SystemCacheInformation, sci, 0, &ReturnLength);
     ok( status == STATUS_INFO_LENGTH_MISMATCH, "Expected STATUS_INFO_LENGTH_MISMATCH, got %08x\n", status);
+    /* win32: 36 / win64 upto win7: 12 / win64 on win8: 64 */
+    ok( ReturnLength == sizeof(SYSTEM_CACHE_INFORMATION) ||
+        ((sizeof(void *) == 8) && (ReturnLength == 64)),
+        "Inconsistent length %d\n", ReturnLength);
+
+    expected = min(ReturnLength, sizeof(buffer));
 
-    status = pNtQuerySystemInformation(SystemCacheInformation, &sci, sizeof(sci), &ReturnLength);
+    status = pNtQuerySystemInformation(SystemCacheInformation, sci, expected, &ReturnLength);
     ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status);
-    ok( sizeof(sci) == ReturnLength, "Inconsistent length %d\n", ReturnLength);
+    ok( ReturnLength == expected, "Inconsistent length %d\n", ReturnLength);
 
-    status = pNtQuerySystemInformation(SystemCacheInformation, &sci, sizeof(sci) + 2, &ReturnLength);
+    /* a larger buffer is allowed */
+    status = pNtQuerySystemInformation(SystemCacheInformation, sci, expected + 2, &ReturnLength);
     ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status);
-    ok( sizeof(sci) == ReturnLength, "Inconsistent length %d\n", ReturnLength);
+    ok( ReturnLength == expected, "Inconsistent length %d\n", ReturnLength);
+
+    status = pNtQuerySystemInformation(SystemCacheInformation, sci, sizeof(buffer), &ReturnLength);
+    ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status);
+    ok( ReturnLength == expected, "Inconsistent length %d\n", ReturnLength);
 }
 
 static void test_query_interrupt(void)
-- 
1.7.5.4




More information about the wine-patches mailing list