使用 cpuid 在 C 中获取供应商 ID

Posted

技术标签:

【中文标题】使用 cpuid 在 C 中获取供应商 ID【英文标题】:Get vendor ID in C using cpuid 【发布时间】:2015-03-02 22:18:28 【问题描述】:

我只想获取我的供应商 ID,即 GenuineIntel 在 C 中使用 cpuid。

这是我要使用的function:

void __cpuid(
   int cpuInfo[4],
   int function_id
);

这是我的错误代码:

int main()
  int cpuInfo[4];
__cpuid(cpuInfo, 1);

【问题讨论】:

CPU ID using C++ - windows 的可能重复项(C++ 部分有问题)。 这是为 C 而不是 c++ 请看答案。 【参考方案1】:

假设您在 Windows 上运行,您需要将 #include <intrin.h> 添加到您的代码中。见here。

【讨论】:

【参考方案2】:
#include <string.h>
#include <locale.h>
#include <intrin.h>
#include <stdio.h>

// Prototipos
int LeeIDFabricante (char * CadFabricante);
//void LeeIDModelo (char * CadenaModelo);


int main(int argc, char *argv[])

    char CadFabricante[0x20];
    char CadenaModelo[0x40];
    int Resultado;
    setlocale( LC_ALL, "Spanish" );

    Resultado = LeeIDFabricante(CadFabricante);
    CadFabricante[12]='\0';
    printf("\nLa identificacion del fabricante es: %s. El maximo valor de CPUID es %d.\n", CadFabricante, Resultado);

    //LeeIDModelo(CadenaModelo);
    //printf("\nLa cadena de modelo es: %s\n", CadenaModelo);

    printf("\nPulse tecla RETORNO para terminar\n");
    getchar();

    return 0;


int LeeIDFabricante (char *CadFabricante)

    int p[4] = -1;

    __cpuid(p, 0);
    memset(CadFabricante, 0, sizeof(CadFabricante));
    *((int*)CadFabricante) = p[1];
    *((int*)(CadFabricante+4)) = p[3];
    *((int*)(CadFabricante+8)) = p[2];

    return p[0];

【讨论】:

只是代码的答案并不是最有用的。你能扩大答案吗?

以上是关于使用 cpuid 在 C 中获取供应商 ID的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上使用 JNA 调用 __cpuid 函数

CPUID 为英特尔处理器返回“GenuntellineI”

Linux:尝试通过 ioctl 获取游戏杆供应商和产品 ID,改为获取 EINVAL

如何通过 adb 获取 Android 设备的供应商 ID?

我们如何使用 jdbc 执行连接查询,而不是使用 pyspark 获取多个表

未捕获的语法错误。在<input id={{供应商.id }}中出现无效或意外的标记。