【问题标题】:What is the best way to detect an ARM-CPU with Delphi?用 Delphi 检测 ARM-CPU 的最佳方法是什么?
【发布时间】:2022-01-24 20:00:49
【问题描述】:

使用 Delphi(在 Windows 11 ARM 上运行)检测 ARM 处理器架构最可靠的方法是什么?

【问题讨论】:

  • 好吧,因为 ARM、x86 和 x64 是不同的架构,你必须单独编译,我认为使用{$IFDEF} 会起作用,即{$IFDEF CPUARM}。见Predefined Conditionals

标签: delphi arm arm64


【解决方案1】:

上面 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-05
    • 2011-06-16
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多