Функция GetVersion (sysinfoapi.h)
GetVersion может быть изменена или недоступна для выпусков после Windows 8.1. Вместо этого используйте функции вспомогателя версий. Сведения о Windows 10 приложениях см. в статье Назначение приложений для Windows.
С выпуском Windows 8.1 поведение API GetVersion изменилось в значении, которое он будет возвращать для версии операционной системы. Значение, возвращаемое функцией GetVersion , теперь зависит от манифеста приложения.
Приложения, не манифестированные для Windows 8.1 или Windows 10, будут возвращать Windows 8 версию ОС (6.2). После манифеста приложения для заданной версии операционной системы GetVersion всегда будет возвращать версию, для которую приложение будет манифестировано в будущих выпусках. Сведения о том, как манифестировать приложения для Windows 8.1 или Windows 10, см. в статье Назначение приложения для Windows.
Синтаксис
NOT_BUILD_WINDOWS_DEPRECATE DWORD GetVersion();
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение включает основной и дополнительный номера версий операционной системы в слове низкого порядка и сведения о платформе операционной системы в слове высокого порядка.
Для всех платформ слово низкого порядка содержит номер версии операционной системы. Байт этого слова в нижнем порядке указывает основной номер версии в шестнадцатеричной нотации. Байт высокого порядка указывает номер дополнительной версии (редакции) в шестнадцатеричной нотации. Бит высокого порядка равен нулю, следующие 7 битов представляют номер сборки, а байт низкого порядка равен 5.
Комментарии
Функция GetVersionEx была разработана из-за того, что многие существующие приложения ошиблись при проверке упакованных значений DWORD , возвращаемых GetVersion, транспонируя основные и дополнительные номера версий. GetVersionEx заставляет приложения явно проверять каждый элемент сведений о версии. VerifyVersionInfo устраняет дополнительную вероятность возникновения ошибок, сравнивая требуемую версию системы с текущей версией системы.
Примеры
В следующем фрагменте кода показано, как извлечь сведения из возвращаемого значения GetVersion : OSVERSIONINFOEX
#include <windows.h>
#include <stdio.h>
void main()
{
DWORD dwVersion = 0;
DWORD dwMajorVersion = 0;
DWORD dwMinorVersion = 0;
DWORD dwBuild = 0;
dwVersion = GetVersion();
// Get the Windows version.
dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
// Get the build number.
if (dwVersion < 0x80000000)
dwBuild = (DWORD)(HIWORD(dwVersion));
printf("Version is %d.%d (%d)\n",
dwMajorVersion,
dwMinorVersion,
dwBuild);
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | sysinfoapi.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |