用C++检测Windows环境下的片上系统(SOC)平台

Detecting a System On a Chip (SOC) platform under Windows with C++

本文关键字:系统 SOC 平台 检测 C++ Windows 环境      更新时间:2023-10-16

以编程方式(在Windows中使用C++)检测硬件附近(在同一芯片上)有CPU和GPU的最佳方法是什么?

您可以使用GetNativeSystemInfo(链接)API函数来获取有关主处理器的一些信息。它不能说明它是否是SOC,但它可能是一个起点。我认为它告诉什么时候它肯定是而不是SOC,但我没有在普通PC/笔记本电脑之外的其他平台上尝试过。

void WINAPI GetNativeSystemInfo(
  _Out_  LPSYSTEM_INFO lpSystemInfo
);

它返回一个SYSTEM_INFO结构(链路)

typedef struct _SYSTEM_INFO {
  union {
    DWORD  dwOemId;
    struct {
      WORD wProcessorArchitecture;
      WORD wReserved;
    };
  };
  DWORD     dwPageSize;
  LPVOID    lpMinimumApplicationAddress;
  LPVOID    lpMaximumApplicationAddress;
  DWORD_PTR dwActiveProcessorMask;
  DWORD     dwNumberOfProcessors;
  DWORD     dwProcessorType;
  DWORD     dwAllocationGranularity;
  WORD      wProcessorLevel;
  WORD      wProcessorRevision;
} SYSTEM_INFO;

该结构在成员dwProcessorType中包含以下信息:

PROCESSOR_INTEL_386 (386)
PROCESSOR_INTEL_486 (486)
PROCESSOR_INTEL_PENTIUM (586)
PROCESSOR_INTEL_IA64 (2200)
PROCESSOR_AMD_X8664 (8664)
PROCESSOR_ARM (Reserved)

成员wProcessorLevel示出了供应商定义的处理器级别并且wProcessorRevision示出了处理器的供应商定义的修订号。

这个答案主要是我另一个答案的副本