Как получить идентификатор процессора и материнской платы? - PullRequest
2 голосов
/ 13 марта 2010

Я использовал код из http://www.rgagnon.com/javadetails/java-0580.html для получения идентификатора материнской платы, но в результате получился «ноль».

  1. Как это может быть?

  2. Также я немного изменил код, чтобы он выглядел так, чтобы получить ProcessorId:

    "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"+
                 "Set colItems = objWMIService.ExecQuery _ \n"+
                 "   (\"Select * from Win32_Processor\") \n"+
                 "For Each objItem in colItems \n"+
                 "    Wscript.Echo objItem.ProcessorId \n"+
                 "    exit for  ' do the first cpu only! \n"+
                 "Next \n";
    

Результат примерно такой: ProcessorId = BFEBFBFF00010676

На http://msdn.microsoft.com/en-us/library/aa389273%28VS.85%29.aspx написано:

ProcessorId: Информация о процессоре, которая описывает функции процессора. Для CPU класса x86 формат поля зависит от поддержки процессором инструкции CPUID. Если инструкция поддерживается, свойство содержит 2 (два) значения в формате DWORD. Первым является смещение 08h-0Bh, которое является значением EAX, которое инструкция CPUID возвращает с входом EAX, установленным на 1. Второе, является смещением 0Ch-0Fh, которое является значением EDX, которое возвращает инструкция. Только первые два байта свойства являются значимыми и содержат содержимое регистра DX при перезагрузке ЦП - все остальные установлены в 0 (ноль), а содержимое в формате DWORD.

Я не совсем понимаю это; на простом английском языке, это уникальный номер или просто число для этого класса процессоров, например, у всех Intel Core2 Duo P8400 будет этот номер?

1 Ответ

3 голосов
/ 13 марта 2010

Если для eax задано значение 1, код операции cpuid вернет тип процессора, фамилии и т. Д. В eax, а функции процессора в edx. Так что то, что вы получите, не является чем-то уникальным, например, серийный номер процессора.

...