From 0e257f25c20bf4d8fd2708b2cd904be51f1b67cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Tue, 30 Jun 2026 00:36:41 +0800 Subject: [PATCH] Platform (Windows): one less syscall --- src/common/impl/FFPlatform_windows.c | 71 +++++++++++++++------------- 1 file changed, 38 insertions(+), 33 deletions(-) diff --git a/src/common/impl/FFPlatform_windows.c b/src/common/impl/FFPlatform_windows.c index 083d20aa0..4f96d168e 100644 --- a/src/common/impl/FFPlatform_windows.c +++ b/src/common/impl/FFPlatform_windows.c @@ -236,16 +236,17 @@ static void getSystemPageSize(FFPlatformSysinfo* info) { } static void getSystemArchitecture(FFPlatformSysinfo* info) { - SYSTEM_PROCESSOR_INFORMATION spi; - if (NT_SUCCESS(NtQuerySystemInformation(SystemProcessorInformation, &spi, sizeof(spi), NULL))) { - switch (spi.ProcessorArchitecture) { - case PROCESSOR_ARCHITECTURE_AMD64: - ffStrbufSetStatic(&info->architecture, "x86_64"); - break; - case PROCESSOR_ARCHITECTURE_IA64: - ffStrbufSetStatic(&info->architecture, "ia64"); - break; - case PROCESSOR_ARCHITECTURE_INTEL: + switch (SharedUserData->NativeProcessorArchitecture) { + case PROCESSOR_ARCHITECTURE_AMD64: + ffStrbufSetStatic(&info->architecture, "x86_64"); + break; + case PROCESSOR_ARCHITECTURE_IA64: + ffStrbufSetStatic(&info->architecture, "ia64"); + break; + case PROCESSOR_ARCHITECTURE_INTEL: { +#ifdef __i386__ + SYSTEM_PROCESSOR_INFORMATION spi; + if (NT_SUCCESS(NtQuerySystemInformation(SystemProcessorInformation, &spi, sizeof(spi), NULL))) { switch (spi.ProcessorLevel) { case 4: ffStrbufSetStatic(&info->architecture, "i486"); @@ -260,30 +261,34 @@ static void getSystemArchitecture(FFPlatformSysinfo* info) { ffStrbufSetStatic(&info->architecture, "i386"); break; } - break; - case PROCESSOR_ARCHITECTURE_ARM64: - ffStrbufSetStatic(&info->architecture, "aarch64"); - break; - case PROCESSOR_ARCHITECTURE_ARM: - ffStrbufSetStatic(&info->architecture, "arm"); - break; - case PROCESSOR_ARCHITECTURE_PPC: - ffStrbufSetStatic(&info->architecture, "ppc"); - break; - case PROCESSOR_ARCHITECTURE_MIPS: - ffStrbufSetStatic(&info->architecture, "mips"); - break; - case PROCESSOR_ARCHITECTURE_ALPHA: - ffStrbufSetStatic(&info->architecture, "alpha"); - break; - case PROCESSOR_ARCHITECTURE_ALPHA64: - ffStrbufSetStatic(&info->architecture, "alpha64"); - break; - case PROCESSOR_ARCHITECTURE_UNKNOWN: - default: - ffStrbufSetStatic(&info->architecture, "unknown"); - break; + } +#else + ffStrbufSetStatic(&info->architecture, "i386"); +#endif + break; } + case PROCESSOR_ARCHITECTURE_ARM64: + ffStrbufSetStatic(&info->architecture, "aarch64"); + break; + case PROCESSOR_ARCHITECTURE_ARM: + ffStrbufSetStatic(&info->architecture, "arm"); + break; + case PROCESSOR_ARCHITECTURE_PPC: + ffStrbufSetStatic(&info->architecture, "ppc"); + break; + case PROCESSOR_ARCHITECTURE_MIPS: + ffStrbufSetStatic(&info->architecture, "mips"); + break; + case PROCESSOR_ARCHITECTURE_ALPHA: + ffStrbufSetStatic(&info->architecture, "alpha"); + break; + case PROCESSOR_ARCHITECTURE_ALPHA64: + ffStrbufSetStatic(&info->architecture, "alpha64"); + break; + case PROCESSOR_ARCHITECTURE_UNKNOWN: + default: + ffStrbufSetStatic(&info->architecture, "unknown"); + break; } }