Считая, что это похоже на Xp, пакет обновления 3 перед пакетом обновления, GetSystemInfo сообщает о количестве процессоров LOGICAL в структуре 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? Несмотря на разницу между физическими и логическими процессорами в пакете обновления 2, это изменение повлияло только на то, как выставляются счета за SKU. По сути, в системе XP может быть до 32 логических процессоров, но максимум 2 физических процессора после SP2. До SP2 вы были ограничены 2 логическими процессорами. Однако ОС не предоставляла эту функциональность в API, пока не был выпущен SP3.
Короче говоря, если вы хотите получить логические процессоры до SP3, просто получите физические процессоры - ОС не знает никакой разницы. Пост SP3, звонок GetLogicalProcessorInformation
. Если вы хотите получить физические процессоры, то до SP3 то, что вы хотите, невозможно ( EDIT: По крайней мере с win32 apis). После SP3 конечно можно позвонить GetLogicalProcessorInformation
.