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


Структура OSVERSIONINFOA (winnt.h)

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

Чтобы получить дополнительные сведения о версии, используйте структуру OSVERSIONINFOEX с GetVersionEx .

Синтаксис

typedef struct _OSVERSIONINFOA {
  DWORD dwOSVersionInfoSize;
  DWORD dwMajorVersion;
  DWORD dwMinorVersion;
  DWORD dwBuildNumber;
  DWORD dwPlatformId;
  CHAR  szCSDVersion[128];
} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;

Члены

dwOSVersionInfoSize

Размер этой структуры данных в байтах. Присвойте этому члену значение sizeof(OSVERSIONINFO).

dwMajorVersion

Основной номер версии операционной системы. Дополнительные сведения см. в подразделе "Примечания".

dwMinorVersion

Дополнительный номер версии операционной системы. Дополнительные сведения см. в подразделе "Примечания".

dwBuildNumber

Номер сборки операционной системы.

dwPlatformId

Платформа операционной системы. Этот элемент может иметь следующее значение.

Значение Значение
VER_PLATFORM_WIN32_NT
2
Операционная система Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP или Windows 2000.

szCSDVersion[128]

Строка, заканчивающаяся null, например "Пакет обновления 3", которая указывает на последнюю версию пакета обновления, установленного в системе. Если пакет обновления не установлен, строка пуста.

Комментарии

Использование сведений о версии не является лучшим способом тестирования функции. Вместо этого обратитесь к документации по интересующей функции. Дополнительные сведения о распространенных методах обнаружения признаков см. в разделе Версия операционной системы.

Если требуется определенная операционная система, обязательно используйте ее как минимальную поддерживаемую версию, а не разрабатывайте тест для одной операционной системы. Таким образом, код обнаружения будет продолжать работать в будущих версиях 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 Server 2003 5,2 5 2 GetSystemMetrics(SM_SERVERR2) == 0
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.
 

Примеры

Пример см. в разделе Получение версии системы.

Примечание

Заголовок winnt.h определяет OSVERSIONINFO как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть winnt.h (включая Windows.h)

См. также раздел

OSVERSIONINFOEX

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