[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