其他人的代码似乎返回了不同的处理器 ID



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

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

CurrentClockSpeed : 784  
ProcessorId : 178BFBFF00100F63  

而在另一个..

CurrentClockSpeed : 2800  
ProcessorId : 078BFBFF00100F63 

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

1011110001011111110111111111100000000000100000000111101100011  

和。。

0011110001011111110111111111100000000000100000000111101100011  

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

(我可以想象不同的内核可能具有不同的相邻 id,但 id 希望 LSB 是要更改的 ID,而不是 MSB。
我仍然不相信他们的解释。特别是因为 id 仅更改了 1 位。

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

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

如果这就是你担心发生的事情,那么将进程的亲和力设置为单个内核是相当简单的。 也就是说,如果你是对的,人们会期望他们的许多客户抱怨 - 多核系统多年来一直是标准; 如果您的系统只有 2 个内核,我会感到非常惊讶。 此外,您将在所有计算机上看到此信息。

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

最新更新