Added SystemHandleInformation tests.
Removed HeapAlloc in test_basic. Renamed test_basic to test_query_basic.
This commit is contained in:
parent
d5f92eb50c
commit
7464134919
|
@ -46,12 +46,11 @@ static BOOL InitFunctionPtrs(void)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_basic()
|
static void test_query_basic()
|
||||||
{
|
{
|
||||||
DWORD status;
|
DWORD status;
|
||||||
ULONG ReturnLength;
|
ULONG ReturnLength;
|
||||||
|
SYSTEM_BASIC_INFORMATION sbi;
|
||||||
SYSTEM_BASIC_INFORMATION* sbi = HeapAlloc(GetProcessHeap(), 0, sizeof(*sbi));
|
|
||||||
|
|
||||||
/* This test also covers some basic parameter testing that should be the same for
|
/* This test also covers some basic parameter testing that should be the same for
|
||||||
* every information class
|
* every information class
|
||||||
|
@ -69,35 +68,71 @@ static void test_basic()
|
||||||
|
|
||||||
/* Use an existing class, correct length but no SystemInformation buffer */
|
/* Use an existing class, correct length but no SystemInformation buffer */
|
||||||
trace("Check no SystemInformation buffer\n");
|
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);
|
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 */
|
/* Use a existing class, correct length, a pointer to a buffer but no ReturnLength pointer */
|
||||||
trace("Check no ReturnLength pointer\n");
|
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);
|
ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08lx\n", status);
|
||||||
|
|
||||||
/* Finally some correct calls */
|
/* Finally some correct calls */
|
||||||
trace("Check with correct parameters\n");
|
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( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08lx\n", status);
|
||||||
ok( sizeof(*sbi) == ReturnLength, "Inconsistent length (%08x) <-> (%ld)\n", sizeof(*sbi), ReturnLength);
|
ok( sizeof(sbi) == ReturnLength, "Inconsistent length (%08x) <-> (%ld)\n", sizeof(sbi), ReturnLength);
|
||||||
|
|
||||||
/* Check if we have some return values */
|
/* Check if we have some return values */
|
||||||
trace("Number of Processors : %d\n", sbi->NumberOfProcessors);
|
trace("Number of Processors : %d\n", sbi.NumberOfProcessors);
|
||||||
ok( sbi->NumberOfProcessors > 0, "Expected more than 0 processors, got %d\n", sbi->NumberOfProcessors);
|
ok( sbi.NumberOfProcessors > 0, "Expected more than 0 processors, got %d\n", sbi.NumberOfProcessors);
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, sbi);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
/* Check if we have some return values */
|
||||||
|
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, shi);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
START_TEST(info)
|
START_TEST(info)
|
||||||
{
|
{
|
||||||
if(!InitFunctionPtrs())
|
if(!InitFunctionPtrs())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* 0 SystemBasicInformation */
|
/* 0 SystemBasicInformation */
|
||||||
trace("Starting test_basic()\n");
|
trace("Starting test_query_basic()\n");
|
||||||
test_basic();
|
test_query_basic();
|
||||||
|
|
||||||
|
/* 0x10 SystemHandleInformation */
|
||||||
|
trace("Starting test_query_handle()\n");
|
||||||
|
test_query_handle();
|
||||||
|
|
||||||
FreeLibrary(hntdll);
|
FreeLibrary(hntdll);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue