Структура OSVERSIONINFOEXW (winnt.h)
Содержит сведения о версии операционной системы. Сведения включают основные и незначительные номера версий, номер сборки, идентификатор платформы и сведения о наборах продуктов и последнем пакете обновления, установленного в системе. Эта структура используется с функциями GetVersionEx и VerifyVersionInfo.
Синтаксис
typedef struct _OSVERSIONINFOEXW {
DWORD dwOSVersionInfoSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
DWORD dwPlatformId;
WCHAR szCSDVersion[128];
WORD wServicePackMajor;
WORD wServicePackMinor;
WORD wSuiteMask;
BYTE wProductType;
BYTE wReserved;
} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
Члены
dwOSVersionInfoSize
Размер этой структуры данных в байтах. Установите для этого элемента значение sizeof(OSVERSIONINFOEX)
.
dwMajorVersion
Основной номер версии операционной системы. Дополнительные сведения см. в разделе "Примечания".
dwMinorVersion
Дополнительный номер версии операционной системы. Дополнительные сведения см. в разделе "Примечания".
dwBuildNumber
Номер сборки операционной системы.
dwPlatformId
Платформа операционной системы. Этот элемент может быть VER_PLATFORM_WIN32_NT (2).
szCSDVersion[128]
Строка, завершающаяся значением NULL, например "Пакет обновления 3", которая указывает последний пакет обновления, установленный в системе. Если пакет обновления не установлен, строка пуста.
wServicePackMajor
Основной номер версии последнего пакета обновления, установленного в системе. Например, для пакета обновления 3 основной номер версии равен 3. Если пакет обновления не установлен, значение равно нулю.
wServicePackMinor
Дополнительный номер версии последнего пакета обновления, установленного в системе. Например, для пакета обновления 3 дополнительный номер версии равен 0.
wSuiteMask
Битовая маска, которая идентифицирует наборы продуктов, доступные в системе. Этот элемент может быть сочетанием следующих значений.
wProductType
Дополнительные сведения о системе. Этот элемент может быть одним из следующих значений.
wReserved
Зарезервировано для дальнейшего использования.
Замечания
Использование сведений о версии не является лучшим способом тестирования для функции. Вместо этого ознакомьтесь с документацией по интересующей функции. Дополнительные сведения о распространенных методах обнаружения функций см. в версии операционной системы.
Если требуется определенная операционная система, обязательно используйте ее как минимальную поддерживаемую версию, а не проектируйте тест для одной операционной системы. Таким образом, код обнаружения будет продолжать работать в будущих версиях Windows.
В следующей таблице перечислены значения, возвращаемые поддерживаемыми версиями Windows. Используйте сведения в столбце с меткой "Другие", чтобы различать операционные системы с одинаковыми номерами версий.
Операционная система | Номер версии | dwMajorVersion | dwMinorVersion | Другой |
---|---|---|---|---|
Windows 10 | 10.0* | 10 | 0 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2016 | 10.0* | 10 | 0 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows 8.1 | 6.3* | 6 | 3 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2012 R2 | 6.3* | 6 | 3 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows 8 | 6.2 | 6 | 2 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2012 | 6.2 | 6 | 2 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows 7 | 6.1 | 6 | 1 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2008 R2 | 6.1 | 6 | 1 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows Server 2008 | 6.0 | 6 | 0 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows Vista | 6.0 | 6 | 0 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2003 R2 | 5.2 | 5 | 2 | GetSystemMetrics(SM_SERVERR2) != 0 |
Windows Home Server | 5.2 | 5 | 2 | OSVERSIONINFOEX.wSuiteMask & VER_SUITE_WH_SERVER |
Windows Server 2003 | 5.2 | 5 | 2 | GetSystemMetrics(SM_SERVERR2) == 0 |
Windows XP Professional x64 Edition | 5.2 | 5 | 2 | (OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION) && (SYSTEM_INFO.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64) |
Windows XP | 5.1 | 5 | 1 | Неприменимо |
Windows 2000 | 5.0 | 5 | 0 | Неприменимо |
* Для приложений, которые были манифестированы для Windows 8.1 или Windows 10. Приложения, не манифестированные для Windows 8.1 или Windows 10, возвращают значение версии ОС Windows 8 (6.2). Чтобы манифестировать приложения для Windows 8.1 или Windows 10, см. назначение приложения для Windows. |
Вы не должны полагаться только на флаг VER_SUITE_SMALLBUSINESS, чтобы определить, установлен ли в системе небольшой бизнес-сервер, так как этот флаг и флаг VER_SUITE_SMALLBUSINESS_RESTRICTED задаются при установке этого набора продуктов. Если обновить эту установку до Windows Server, Standard Edition, флаг
Если режим совместимости действует, структура OSVERSIONINFOEX содержит сведения об операционной системе, выбранной для совместимости приложений.
Чтобы определить, работает ли приложение на основе Win32 в WOW64, вызовите функцию IsWow64Process. Чтобы определить, работает ли система с 64-разрядной версией Windows, вызовите функцию GetNativeSystemInfo.
Функция getSystemMetrics
Продукт | Оправа |
---|---|
Windows Server 2003 R2 | SM_SERVERR2 |
Windows XP Media Center Edition | SM_MEDIACENTER |
Windows XP Starter Edition | SM_STARTER |
Windows XP Tablet PC Edition | SM_TABLETPC |
Примеры
Пример см. в статье Получениесистемной версии.
Заметка
Заголовок winnt.h определяет OSVERSIONINFOEX как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 Профессиональный [только классические приложения] |
минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
заголовка | winnt.h (включая Windows.h) |