2017-06-13 21 views
1

我支持一些日本供應商的軟件。他們使用時間有限的許可碼來保護他們的軟件該代碼僅適用於使用硬件ID的特定計算機,該硬件ID似乎是使用幾個不同ID的PC組件創建的。Someones elses代碼似乎返回變化ProcessorID

但是,在約150臺機器中,有時由於硬件ID已更改,許可證停止工作。
現在他們的軟件工具生成硬件組件的txt,所以我可以看到之前和之後,看看有什麼變化。
只採摘已經改變,我可以在我有一個文件看行...

CurrentClockSpeed : 784 
ProcessorId : 178BFBFF00100F63 

而在其他..

CurrentClockSpeed : 2800 
ProcessorId : 078BFBFF00100F63 

如果我這些處理器ID轉換爲二進制,那我也...

1011110001011111110111111111100000000000100000000111101100011 

和..

0011110001011111110111111111100000000000100000000111101100011 

現在我沒有訪問他們的代碼,並被告知他們認爲問題與硬件有關。有人超頻它,或者一個CPU核心默認出現,導致代碼選擇另一個核心。

(我可以想像不同的核心可能具有不同的和鄰近的ID,但ID期待LSB是一個改變,而不是MSB)
我仍然不相信,可以通過解釋。特別是因爲id只改變了1位。

這似乎是一個獲取CPUID調用?如果是這樣,不同的內核有不同的ID?即使他們這樣做,這是否會解釋變化的CurrentClockSpeed?

獲得CPUID似乎表明它提供了關於線程當前正在運行的任何核心的信息。在2核心系統上,這可以在2個值中的1個之間有效地隨機選擇嗎?
我很高興就此發表任何意見/建議

回答

1

如果這就是您擔心的事情,那麼將進程的關聯性設置爲單個內核是相當簡單的。也就是說,如果你說得對,很多客戶都會抱怨 - 多核心繫統已經成爲多年的標準;如果你的系統只有2個內核,我會非常驚訝。另外,你會在所有機器上看到這一點。

最終,您需要與之交談的組是供應商,而不是堆棧溢出。