Читая на этом, и конкретно читая документы Microsoft, похоже, что это должно возвращать количество Физических процессоров, и что необходимо использовать GetLogicalProcessorInformation для выяснения, сколько процессоров LOGICAL Вы имеете.
Вот документ, который я нашел на структуре SYSTEM_INFO: http://msdn.microsoft.com/en-us/library/ms724958 (v=VS.85) .aspx И вот является документом о GetLogicalProcessorInformation: (пробелы, добавленные для прохода через спам-фильтр) http:// msdn.microsoft.com/ en-us/библиотека / ms683194.aspx
При чтении на ней далее, хотя, в большинстве обсуждений я нашел по этой теме, разработчики говорят тому, что GetSystemInfo (и структура SYSTEM_INFO) сообщают о количестве процессоров LOGICAL.
Когда я ищу снова, я нахожу, что MS действительно выпускал некоторую информацию об этом (и текущие исправления), здесь (пробелы, добавленные для прохода через спам-фильтр): поддержка http://. Кбит/936235 microsoft.com/
Читая, что, это походит на Xp, предварительный пакет обновления 3, GetSystemInfo сообщает о количестве процессоров LOGICAL в структуре SYSTEM_INFO. Это также читает в меня, что на Windows Vista и Windows 7, GetSystemInfo должен сообщать о количестве Физических процессоров (отличающийся от предварительного пакета обновления Windows XP 3).
Кто-либо знает то, что это на самом деле делает? GetSystemInfo действительно сообщает о количестве физических процессоров (на том же компьютере) по-другому, в зависимости от которого ОС он работает?
Читая это, похоже, что на Xp, до пакета обновления 3, GetSystemInfo сообщает количество ЛОГИЧЕСКИХ процессоров в структуре SYSTEM_INFO. Мне также читают, что в Windows Vista и Windows 7 GetSystemInfo должен сообщать количество ФИЗИЧЕСКИХ процессоров (в отличие от Windows XP до пакета обновления 3).
Это верно. Windows XP pre SP2) не делает различий между логическими и физическими процессорами. (В конце концов, логических процессоров не существовало, когда была выпущена Windows XP) Поэтому, хотя функция возвращает то, что ОС считает «физическими процессорами», до SP2 нет никакой разницы.
Я считаю, что для обеспечения совместимости XP SP2 + продолжает сообщать о логических процессорах для этой конкретной функции, потому что это то, что приложения ожидают от него для компьютеров XP. Гораздо быстрее и проще спросить: «Я использую XP?» чем спросить «Я на XP SP3?».
В чем разница между SP2 и SP3? Несмотря на разницу между физическими и логическими процессорами в SP2, это изменение повлияло только на способ выставления счетов за SKU платформы. Обычно в системе XP может быть до 32 логических процессоров, но максимум 2 физических процессора после SP2. До SP2 вы были ограничены двумя логическими процессорами. Однако ОС не предоставляла эту функциональность в API, пока не был выпущен SP3.
Короче говоря, если вы хотите получить логические процессоры до SP3, просто получите физические процессоры - ОС не знает никакой разницы. Опубликуйте SP3, позвоните по телефону GetLogicalProcessorInformation
. Если вы хотите получить физические процессоры, то до SP3 то, что вы хотите, невозможно ( РЕДАКТИРОВАТЬ: По крайней мере, с apis win32). Разумеется, для публикации SP3 вы можете вызвать GetLogicalProcessorInformation
.