Поделиться через


Структура 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

Битовая маска, которая идентифицирует наборы продуктов, доступные в системе. Этот элемент может быть сочетанием следующих значений.

Ценность Значение
VER_SUITE_BACKOFFICE
0x00000004
Компоненты Microsoft BackOffice устанавливаются.
VER_SUITE_BLADE
0x00000400
Windows Server 2003 устанавливается web Edition.
VER_SUITE_COMPUTE_SERVER
0x00004000
Windows Server 2003 устанавливается выпуск вычислительного кластера.
VER_SUITE_DATACENTER
0x00000080
Устанавливается Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition или Windows 2000 Datacenter Server.
VER_SUITE_ENTERPRISE
0x00000002
Устанавливается Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition или Windows 2000 Advanced Server. Дополнительные сведения об этом битовом флаге см. в разделе "Примечания".
VER_SUITE_EMBEDDEDNT
0x00000040
Windows XP Embedded устанавливается.
VER_SUITE_PERSONAL
0x00000200
Устанавливается Windows Vista Home Premium, Windows Vista Home Basic или Windows XP Home Edition.
VER_SUITE_SINGLEUSERTS
0x00000100
Поддерживается удаленный рабочий стол, но поддерживается только один интерактивный сеанс. Это значение устанавливается, если система не работает в режиме сервера приложений.
VER_SUITE_SMALLBUSINESS
0x00000001
Microsoft Small Business Server был установлен в системе, но, возможно, был обновлен до другой версии Windows. Дополнительные сведения об этом битовом флаге см. в разделе "Примечания".
VER_SUITE_SMALLBUSINESS_RESTRICTED
0x00000020
Microsoft Small Business Server устанавливается с ограничивающей лицензией клиента. Дополнительные сведения об этом битовом флаге см. в разделе "Примечания".
VER_SUITE_STORAGE_SERVER
0x00002000
Windows Storage Server 2003 R2 или Windows Storage Server 2003is установлен.
VER_SUITE_TERMINAL
0x00000010
Службы терминалов устанавливаются. Это значение всегда задано.

Если VER_SUITE_TERMINAL задано, но VER_SUITE_SINGLEUSERTS не задано, система работает в режиме сервера приложений.

VER_SUITE_WH_SERVER
0x00008000
Windows Home Server установлен.
VER_SUITE_MULTIUSERTS
0x00020000
Режим AppServer включен.

wProductType

Дополнительные сведения о системе. Этот элемент может быть одним из следующих значений.

Ценность Значение
VER_NT_DOMAIN_CONTROLLER
0x0000002
Система является контроллером домена и операционной системой является Windows Server 2012, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003 или Windows 2000 Server.
VER_NT_SERVER
0x0000003
Операционная система — Windows Server 2012, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003 или Windows 2000 Server.

Обратите внимание, что сервер, который также является контроллером домена, сообщается как VER_NT_DOMAIN_CONTROLLER, а не VER_NT_SERVER.

VER_NT_WORKSTATION
0x0000001
Операционная система : Windows 8, Windows 7, Windows Vista, Windows XP Professional, Windows XP Home Edition или Windows 2000 Профессиональный.

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, флаг VER_SUITE_SMALLBUSINESS_RESTRICTED будет снят, однако флаг VER_SUITE_SMALLBUSINESS останется установленным. В этом случае это означает, что сервер малого бизнеса был установлен в этой системе. Если эта установка будет обновлена до Windows Server, Enterprise Edition, флаг VER_SUITE_SMALLBUSINESS останется установленным.

Если режим совместимости действует, структура 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)

См. также

IsWow64Process

OSVERSIONINFO

вспомогательные API версии