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

时间:2012-02-16 00:29:24

标签: c++ windows

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

1 个答案:

答案 0 :(得分:0)

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

void WINAPI GetNativeSystemInfo(
  _Out_  LPSYSTEM_INFO lpSystemInfo
);

它会返回SYSTEM_INFO结构(link)

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显示供应商定义的处理器修订版号。

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