c++ - 其他人的代码似乎返回了一个不同的 ProcessorID

标签 c++ .net processor

我支持日本供应商的一些软件。他们使用有时间限制的许可证代码来保护他们的软件。该代码仅适用于使用硬件 ID 的特定计算机,该硬件 ID 似乎是使用几个不同的 PC 组件 ID 创建的。

然而,在大约 150 台机器中,有时许可证会停止工作,因为硬件 ID 已更改。
现在他们的软件工具生成了硬件组件的 txt,所以我可以查看之前和之后发生了什么变化。
只选择我可以在我拥有的一个文件中看到的已更改的行...

CurrentClockSpeed : 784  
ProcessorId : 178BFBFF00100F63  

在另一个..

CurrentClockSpeed : 2800  
ProcessorId : 078BFBFF00100F63 

如果我将这些处理器 ID 转换为二进制,那么我有...

  1011110001011111110111111111100000000000100000000111101100011  

和..

  0011110001011111110111111111100000000000100000000111101100011  

现在我无法访问他们的代码,并且被告知他们认为问题出在硬件上。有人对其进行超频,或者一个 CPU 核心默认退出,导致代码选择另一个核心。

(我可以想象不同的内核可能具有不同且相邻的 id,但 id 预计 LSB 将被更改,而不是 MSB。)
我仍然不相信他们的解释。特别是因为 id 仅改变了 1 位。

这似乎是一个 Get CPUID 调用?如果是这样,不同的内核是否有不同的 ID?即使他们这样做了,这能解释不断变化的 CurrentClockSpeed 吗?

get CPUID 似乎表明它提供了关于线程当前在哪个内核上运行的信息。在 2 核系统上,这是否可以在 2 个值中的 1 个之间有效地随机?
我很高兴对此有任何建议/意见

最佳答案

如果这正是您所担心的,那么将进程的亲和性设置为单个核心就相当简单了。也就是说,如果您是对的,那么他们的许多客户会提示 - 多核系统多年来一直是标准;如果您的系统只有 2 个内核,我会感到非常惊讶。此外,您会在所有计算机上看到这一点。

最终,您需要与之交谈的群体是供应商,而不是堆栈溢出。

关于c++ - 其他人的代码似乎返回了一个不同的 ProcessorID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44520222/

相关文章:

c++ - 检查 TCHAR 数组输入是否为有符号整数 C++

c++ - 捕获 C++ 库崩溃的一致方法

c++ - 删除空格后如何将空格插入字符串

c# - 不用 LINQ 过滤数据表?

c - 生产者和消费者在 Linux c 中使用信号量

c++ - 如何在 C++ 头文件中定义字符串参数 - 与 Swift 桥接?

c# - 获取对对象的事件引用

c++ - 用于收集 PC 硬件/操作系统信息的库

c++ - 如何调整处理器总线倍频器

c - 使用周期计数计算吞吐量