Я быстро реализую этот код http://msdn.microsoft.com/en-us/library/hskdteyh(v=vs.80).aspx в мою программу, так как мне нужно было получить некоторую информацию о процессоре, однако, когда я доберусь до этой части кода:
__cpuid(CPUInfo, 0x80000000);
nExIds = CPUInfo[0];
следующий цикл for начинает катиться вечно, поэтому я установил точку останова, и число обращений продолжало расти, оказалось, что nExIDs устанавливается на 2147483656, что сделает выполнение остальной части кода часами, если не неделями (так что, очевидно, это ошибка). Это не означает, что эта функция устарела или что-то в этом роде, поэтому она не должна доставлять мне проблем, верно? Если это важно к функции * __ cpuid *, я запускаю ее на Windows 7 Home Premium 64-битная на VAIO Ноутбук, который я запрашиваю, Процессор Intel® Core ™ TM i5 с процессором M 460 @ 2,53 ГГц с 2 (сердечники4 логических). Может мне нужно передать ему другое значение, кроме 0x80000000?Но как мне определить, сколько?
Хорошо, я понял это, пример в MSDN имеет ошибку — если функция не поддерживается, она устанавливает отрицательное значение, но nExIds является без знака int, поэтому, когда вы устанавливаете его в отрицательное недействительное значение, он автоматически устанавливается в 2147483656.Поэтому я должен использовать ИНТ вместо без знака int.
Других решений пока нет …