【发布时间】:2022-01-24 20:00:49
【问题描述】:
使用 Delphi(在 Windows 11 ARM 上运行)检测 ARM 处理器架构最可靠的方法是什么?
【问题讨论】:
-
好吧,因为 ARM、x86 和 x64 是不同的架构,你必须单独编译,我认为使用
{$IFDEF}会起作用,即{$IFDEF CPUARM}。见Predefined Conditionals
使用 Delphi(在 Windows 11 ARM 上运行)检测 ARM 处理器架构最可靠的方法是什么?
【问题讨论】:
{$IFDEF} 会起作用,即{$IFDEF CPUARM}。见Predefined Conditionals
上面 Remy 的建议很好,但是如果您想检测 x86 程序是否在 ARM Windows 上运行,我认为您可以这样做(未经测试,因为我无法访问 ARM Windows):
TYPE
TImageFileMachine = USHORT;
TIsWow64Process2 = FUNCTION(Handle : THandle ; VAR ProcessMachine,NativeMachine : TImageFileMachine) : LongBool; cdecl;
CONST
IMAGE_FILE_MACHINE_ARM64 = $AA64;
FUNCTION IsARM : BOOLEAN;
VAR
F : TIsWow64Process2;
P,N : TImageFileMachine;
H : THandle;
BEGIN
@F:=GetProcAddress(GetModuleHandle('kernel32.dll'),'IsWow64Process2');
IF NOT Assigned(F) THEN
Result:=FALSE
ELSE IF NOT F(GetCurrentProcess,P,N) THEN
Result:=FALSE
ELSE
Result:=(N=IMAGE_FILE_MACHINE_ARM64)
END;
【讨论】: