[SDK][NDK][PSTYPES] Align the PROCESS_PRIORITY_CLASS structure during compile time...
authorBișoc George <fraizeraust99@gmail.com>
Sat, 28 Mar 2020 18:17:10 +0000 (19:17 +0100)
committerGitHub <noreply@github.com>
Sat, 28 Mar 2020 18:17:10 +0000 (19:17 +0100)
commit7481bda679eccdf1eba3666e500074dcb966e748
tree17c734dc63f408328b673e514e686055d0f4e008
parent2d36be496309bf8551f120c674f73f987f88e5c3
[SDK][NDK][PSTYPES] Align the PROCESS_PRIORITY_CLASS structure during compile time (#2478)

CORE-16757

After doing investigations on the priority class structure alignment, it's been revealed that in Windows XP and Server 2003 this PROCESS_PRIORITY_CLASS structure is aligned as a 4-bytes of size hence NtQueryInformationProcess() probes the alignment of user mode arguments buffer output and buffer length with requirement of a ULONG.

As PROCESS_PRIORITY_CLASS was initially aligned as a 1-byte size because both BOOLEAN and UCHAR are just unsigned characters, the compiler may not align such structure and gracefully let the default alignment of such structure as is, 1-byte because an unsigned char has a size of 1 byte. Setting an align attribute to this structure fixes the problem of a potential datatype misalignment which caused GetPriorityClass() to not retrieve the process' priority class properly.
sdk/include/ndk/pstypes.h