Собственно говоря потребовалось получать температуру процессора (основная поддержка AMD и Intel) И вот парочка вопросов: А) Для Intel делаю следующие действия: 1) через KeSetSystemAffinityThreadEx/KeSetAffinityThread выбираю нужное ядро 2) Читаю значения MSR (IA32_TEMPERATURE_TARGET и IA32_THERM_STATUS) 3) извлекаю значение из нужных битов 4) Отнимаю от значения IA32_TEMPERATURE_TARGET значение IA32_THERM_STATUS 5) На выходе получаю температуру. И вот тут вот столкнулся с одной вещь: IA32_TEMPERATURE_TARGET почему-то равен нулю, а IA32_THERM_STATUS показывает не относительное значение температуры, а абсолютное. т.е. даю нагрузку на проц, замеряю значение это, оно ростёт, хотя судя по доке должно наоборот убывать. Причем данные показываются точно такие же как и в SpeedFun Как быть тогда с расчетами? Или же если IA32_TEMPERATURE_TARGET = 0 то использовать IA32_THERM_STATUS как абсолютное значение, а если IA32_TEMPERATURE_TARGET != 0 то как относительное? Б) Для AMD почитал доки, поискал исходники. В принципе всё понятно, за исключением следующей вещи: Как получать данные для конкретных ядер? Как я понял KeSetAffinityThread не прокатит, так как данные читаются из портов. И тогда судя по докам надо как-то переключаться да получение данных другова ядра. А как именно это сделать - хз. В частности для 4-х ядерных систем сложность возникает. Может кто нибудь подскажет как брать инфу из разных ядер (По номеру ядра)