From 7464134919dd9e9408827af52e5f84d56d8e39e8 Mon Sep 17 00:00:00 2001 From: Paul Vriens Date: Tue, 10 May 2005 13:16:36 +0000 Subject: [PATCH] Added SystemHandleInformation tests. Removed HeapAlloc in test_basic. Renamed test_basic to test_query_basic. --- dlls/ntdll/tests/info.c | 59 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 47 insertions(+), 12 deletions(-) diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c index aed6c6ece09..13f1ffd2adf 100644 --- a/dlls/ntdll/tests/info.c +++ b/dlls/ntdll/tests/info.c @@ -46,12 +46,11 @@ static BOOL InitFunctionPtrs(void) return TRUE; } -static void test_basic() +static void test_query_basic() { DWORD status; ULONG ReturnLength; - - SYSTEM_BASIC_INFORMATION* sbi = HeapAlloc(GetProcessHeap(), 0, sizeof(*sbi)); + SYSTEM_BASIC_INFORMATION sbi; /* This test also covers some basic parameter testing that should be the same for * every information class @@ -69,35 +68,71 @@ static void test_basic() /* Use an existing class, correct length but no SystemInformation buffer */ trace("Check no SystemInformation buffer\n"); - status = pNtQuerySystemInformation(SystemBasicInformation, NULL, sizeof(*sbi), NULL); + status = pNtQuerySystemInformation(SystemBasicInformation, NULL, sizeof(sbi), NULL); ok( status == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got %08lx\n", status); /* Use a existing class, correct length, a pointer to a buffer but no ReturnLength pointer */ trace("Check no ReturnLength pointer\n"); - status = pNtQuerySystemInformation(SystemBasicInformation, sbi, sizeof(*sbi), NULL); + status = pNtQuerySystemInformation(SystemBasicInformation, &sbi, sizeof(sbi), NULL); ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08lx\n", status); /* Finally some correct calls */ trace("Check with correct parameters\n"); - status = pNtQuerySystemInformation(SystemBasicInformation, sbi, sizeof(*sbi), &ReturnLength); + status = pNtQuerySystemInformation(SystemBasicInformation, &sbi, sizeof(sbi), &ReturnLength); + ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08lx\n", status); + ok( sizeof(sbi) == ReturnLength, "Inconsistent length (%08x) <-> (%ld)\n", sizeof(sbi), ReturnLength); + + /* Check if we have some return values */ + trace("Number of Processors : %d\n", sbi.NumberOfProcessors); + ok( sbi.NumberOfProcessors > 0, "Expected more than 0 processors, got %d\n", sbi.NumberOfProcessors); +} + +static void test_query_handle() +{ + DWORD status; + ULONG ReturnLength; + ULONG SystemInformationLength = sizeof(SYSTEM_HANDLE_INFORMATION); + SYSTEM_HANDLE_INFORMATION* shi = HeapAlloc(GetProcessHeap(), 0, SystemInformationLength); + + /* Request the needed length : a SystemInformationLength greater than one struct sets ReturnLength */ + status = pNtQuerySystemInformation(SystemHandleInformation, shi, SystemInformationLength, &ReturnLength); + + /* The following check assumes more than one handle on any given system */ + todo_wine + { + ok( status == STATUS_INFO_LENGTH_MISMATCH, "Expected STATUS_INFO_LENGTH_MISMATCH, got %08lx\n", status); + } + ok( ReturnLength > 0, "Expected ReturnLength to be > 0, it was %ld\n", ReturnLength); + + SystemInformationLength = ReturnLength; + shi = HeapReAlloc(GetProcessHeap(), 0, shi , SystemInformationLength); + status = pNtQuerySystemInformation(SystemHandleInformation, shi, SystemInformationLength, &ReturnLength); ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08lx\n", status); - ok( sizeof(*sbi) == ReturnLength, "Inconsistent length (%08x) <-> (%ld)\n", sizeof(*sbi), ReturnLength); /* Check if we have some return values */ - trace("Number of Processors : %d\n", sbi->NumberOfProcessors); - ok( sbi->NumberOfProcessors > 0, "Expected more than 0 processors, got %d\n", sbi->NumberOfProcessors); + trace("Number of Handles : %ld\n", shi->Count); + todo_wine + { + /* our implementation is a stub for now */ + ok( shi->Count > 1, "Expected more than 1 handles, got (%ld)\n", shi->Count); + } - HeapFree(GetProcessHeap(), 0, sbi); + HeapFree( GetProcessHeap(), 0, shi); } + START_TEST(info) { if(!InitFunctionPtrs()) return; /* 0 SystemBasicInformation */ - trace("Starting test_basic()\n"); - test_basic(); + trace("Starting test_query_basic()\n"); + test_query_basic(); + + /* 0x10 SystemHandleInformation */ + trace("Starting test_query_handle()\n"); + test_query_handle(); FreeLibrary(hntdll); } -- 2.11.4.GIT