[NTOS:PS] Fix an issue with PROCESS_DEVICEMAP_INFORMATION size on 64 bit builds
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Sat, 10 Feb 2018 22:57:27 +0000 (23:57 +0100)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Fri, 17 Aug 2018 20:08:37 +0000 (22:08 +0200)
commit094a90ad4e7f14b67cc5e532347e738b95189cec
treea18b7dd2e50d033e97b2f2fc4988a7fbb39abb34
parent36174f926bc40b2b2f7d61db8d9187e2a20d9886
[NTOS:PS] Fix an issue with PROCESS_DEVICEMAP_INFORMATION  size on 64 bit builds

The PROCESS_DEVICEMAP_INFORMATION  union has 2 fields, one is a handle, the other one is a structure of 36 bytes (independent of architecture). The handle forces 64 bit alignment on 64 bit builds, making the structure 4 bytes bigger than on 32 bit builds. The site is checked in NtQueryInformationProcess (case ProcessDeviceMap). The expected size on x64 is the size of the Query structure without alignment. autocheck correctly passes the site of the Query union member, while smss passes the full size of PROCESS_DEVICEMAP_INFORMATION. Packing the structure is not an option, since it is defined in public headers without packing. Using the original headers sizeof(PROCESS_DEVICEMAP_INFORMATION) is 0x28, sizeof(PROCESS_DEVICEMAP_INFORMATION::Query) is 0x24.
base/system/smss/pagefile.c
dll/win32/kernel32/client/file/disk.c
ntoskrnl/ps/query.c