-- v2: ntdll/tests: Use the public PROCESS_BASIC_INFORMATION definition. kernel32/tests: Use the public PROCESS_BASIC_INFORMATION definition.
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/kernel32/tests/loader.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-)
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c index 5eef938ca1f..70470a65b7f 100644 --- a/dlls/kernel32/tests/loader.c +++ b/dlls/kernel32/tests/loader.c @@ -36,16 +36,6 @@
#define ALIGN_SIZE(size, alignment) (((size) + ((ULONG_PTR)(alignment) - 1)) & ~(((ULONG_PTR)(alignment) - 1)))
-struct PROCESS_BASIC_INFORMATION_PRIVATE -{ - NTSTATUS ExitStatus; - PPEB PebBaseAddress; - DWORD_PTR AffinityMask; - DWORD_PTR BasePriority; - ULONG_PTR UniqueProcessId; - ULONG_PTR InheritedFromUniqueProcessId; -}; - static LONG *child_failures; static WORD cb_count, cb_count_sys; static DWORD page_size; @@ -3409,7 +3399,7 @@ static void child_process(const char *dll_name, DWORD target_offset) DWORD ret, dummy, i, code, expected_code; HANDLE file, thread, process; HMODULE hmod; - struct PROCESS_BASIC_INFORMATION_PRIVATE pbi; + PROCESS_BASIC_INFORMATION pbi; DWORD_PTR affinity; void *cookie;
@@ -3748,7 +3738,7 @@ static void test_ExitProcess(void) PROCESS_INFORMATION pi; STARTUPINFOA si = { sizeof(si) }; CONTEXT ctx; - struct PROCESS_BASIC_INFORMATION_PRIVATE pbi; + PROCESS_BASIC_INFORMATION pbi; MEMORY_BASIC_INFORMATION mbi; DWORD_PTR affinity; PROCESS_PRIORITY_CLASS ppc;
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/ntdll/tests/info.c | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-)
diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c index c95da44b8cf..071aa2b026e 100644 --- a/dlls/ntdll/tests/info.c +++ b/dlls/ntdll/tests/info.c @@ -31,16 +31,6 @@ #include "psapi.h" #include "wine/test.h"
-struct PROCESS_BASIC_INFORMATION_PRIVATE -{ - NTSTATUS ExitStatus; - PPEB PebBaseAddress; - DWORD_PTR AffinityMask; - DWORD_PTR BasePriority; - ULONG_PTR UniqueProcessId; - ULONG_PTR InheritedFromUniqueProcessId; -}; - static NTSTATUS (WINAPI * pNtQuerySystemInformation)(SYSTEM_INFORMATION_CLASS, PVOID, ULONG, PULONG); static NTSTATUS (WINAPI * pNtQueryInformationProcess)(HANDLE, PROCESSINFOCLASS, PVOID, ULONG, PULONG); static NTSTATUS (WINAPI * pNtSetSystemInformation)(SYSTEM_INFORMATION_CLASS, PVOID, ULONG); @@ -1827,17 +1817,7 @@ static void test_query_process_basic(void) { NTSTATUS status; ULONG ReturnLength; - - typedef struct _PROCESS_BASIC_INFORMATION_PRIVATE { - DWORD_PTR ExitStatus; - PPEB PebBaseAddress; - DWORD_PTR AffinityMask; - DWORD_PTR BasePriority; - ULONG_PTR UniqueProcessId; - ULONG_PTR InheritedFromUniqueProcessId; - } PROCESS_BASIC_INFORMATION_PRIVATE; - - PROCESS_BASIC_INFORMATION_PRIVATE pbi; + PROCESS_BASIC_INFORMATION pbi;
/* This test also covers some basic parameter testing that should be the same for * every information class @@ -3283,7 +3263,7 @@ static void test_priority(void) ULONG nt_thread_priority; THREAD_BASIC_INFORMATION tbi; DECLSPEC_ALIGN(8) PROCESS_PRIORITY_CLASS ppc; /* needs align, or STATUS_DATATYPE_MISALIGNMENT is returned */ - struct PROCESS_BASIC_INFORMATION_PRIVATE pbi; + PROCESS_BASIC_INFORMATION pbi; BOOL ret;
/* Change process priority class to HIGH_PRIORITY_CLASS and test */ @@ -3332,7 +3312,14 @@ static void test_priority(void) ok( status == STATUS_SUCCESS, "NtQueryInformationThread failed after setting priority: %08lx\n", status ); ok( thread_base_priority == tbi.BasePriority, "After setting, API priority (%d) does not match NT BasePriority (%ld)\n", thread_base_priority, tbi.BasePriority ); + memset( &pbi, 0xcd, sizeof(pbi) ); status = pNtQueryInformationProcess( GetCurrentProcess(), ProcessBasicInformation, &pbi, sizeof(pbi), NULL ); + ok( status == STATUS_SUCCESS, "NtQueryInformationProcess failed after setting priority: %08lx\n", status ); + if (is_wow64) + { + todo_wine ok( pbi.BasePriority == 0xcdcdcdcd, "got %#lx\n", pbi.BasePriority ); + pbi.BasePriority = tbi.Priority - THREAD_PRIORITY_HIGHEST; + } expected_nt_priority = pbi.BasePriority + THREAD_PRIORITY_HIGHEST; ok( expected_nt_priority == tbi.Priority, "After setting, effective NT priority (%ld) does not match expected priority %d.\n", tbi.Priority, expected_nt_priority ); @@ -3372,7 +3359,14 @@ static void test_priority(void) * value (6) + THREAD_PRIORITY_LOWEST (-2) = 4. */ status = pNtQueryInformationThread( GetCurrentThread(), ThreadBasicInformation, &tbi, sizeof(tbi), NULL ); ok( status == STATUS_SUCCESS, "NtQueryInformationThread failed after setting priority: %08lx\n", status ); + memset( &pbi, 0xcd, sizeof(pbi) ); status = pNtQueryInformationProcess( GetCurrentProcess(), ProcessBasicInformation, &pbi, sizeof(pbi), NULL ); + ok( status == STATUS_SUCCESS, "NtQueryInformationProcess failed after setting priority: %08lx\n", status ); + if (is_wow64) + { + todo_wine ok( pbi.BasePriority == 0xcdcdcdcd, "got %#lx\n", pbi.BasePriority ); + pbi.BasePriority = tbi.Priority - THREAD_PRIORITY_LOWEST; + } expected_nt_priority = pbi.BasePriority + THREAD_PRIORITY_LOWEST; ok( expected_nt_priority == tbi.Priority, "After setting, effective NT priority (%ld) does not match expected priority %d.\n", tbi.Priority, expected_nt_priority );
On Wed Apr 9 09:17:30 2025 +0000, Rémi Bernon wrote:
changed this line in [version 2 of the diff](/wine/wine/-/merge_requests/7713/diffs?diff_id=169546&start_sha=5e9d48110efa5adc90df38978cacf7face66da18#87de5f6778ef08edd82f77409040dfa8a904f993_2652_2644)
I dropped the PROCESS_BASIC_INFORMATION64 removal, although I don't think it's useful to have in the public headers/ntdll implementation.