* PROJECT: ReactOS runtime library (RTL)
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: Implementation of RtlWow64GetProcessMachines
* COPYRIGHT: Copyright 2026 Timo Kreuzer <timo.kreuzer@reactos.org>
*/
#include <rtl.h>
#define NDEBUG
#include <debug.h>
NTSTATUS
NTAPI
RtlWow64GetProcessMachines(
_In_ HANDLE ProcessHandle,
_Out_ PUSHORT ProcessMachine,
_Out_opt_ PUSHORT NativeMachine)
{
NTSTATUS Status;
ULONG_PTR Wow64Info;
if (ProcessHandle == NtCurrentProcess())
{
*ProcessMachine = IMAGE_FILE_MACHINE_NATIVE;
}
else if (SharedUserData->ImageNumberLow == IMAGE_FILE_MACHINE_AMD64)
{
Status = NtQueryInformationProcess(ProcessHandle,
ProcessWow64Information,
&Wow64Info,
sizeof(Wow64Info),
NULL);
if (!NT_SUCCESS(Status))
{
return Status;
}
*ProcessMachine = Wow64Info ? IMAGE_FILE_MACHINE_I386 : IMAGE_FILE_MACHINE_AMD64;
}
else
{
*ProcessMachine = IMAGE_FILE_MACHINE_NATIVE;
}
if (NativeMachine != NULL)
{
*NativeMachine = SharedUserData->ImageNumberLow;
}
return STATUS_SUCCESS;
}