Функция VerifyVersionInfoW (winbase.h)
Сравнивает набор требований к версии операционной системы с соответствующими значениями для текущей версии системы. Эта функция подвержена поведению на основе манифеста. Дополнительные сведения см. в разделе "Примечания".
Примечание. эта функция устарела для Windows 10. Дополнительные сведения см. в , предназначенных для приложений для Windows.
Синтаксис
BOOL VerifyVersionInfoW(
[in] LPOSVERSIONINFOEXW lpVersionInformation,
[in] DWORD dwTypeMask,
[in] DWORDLONG dwlConditionMask
);
Параметры
[in] lpVersionInformation
Указатель на структуру OSVERSIONINFOEX
Необходимо задать для элемента этой структуры
[in] dwTypeMask
Маска, указывающая элементы проверяемой структуры OSVERSIONINFOEX
[in] dwlConditionMask
Тип сравнения для каждого lpVersionInfo сравниваемого элемента. Чтобы создать это значение, вызовите функцию VerSetConditionMask или макрос VER_SET_CONDITION один раз для каждого элемента OSVERSIONINFOEX.
Возвращаемое значение
Если в настоящее время запущенная операционная система удовлетворяет указанным требованиям, возвращаемое значение ненулевое значение.
Если текущая система не удовлетворяет требованиям, возвращаемое значение равно нулю и GetLastError возвращает ERROR_OLD_WIN_VERSION.
Если функция завершается ошибкой, возвращаемое значение равно нулю и GetLastError возвращает код ошибки, отличный от ERROR_OLD_WIN_VERSION.
Замечания
Функция VerifyVersionInfo извлекает сведения о версии текущей операционной системы и сравнивает ее с допустимыми элементами структуры lpVersionInfo. Это позволяет легко определить наличие требуемого набора условий версии операционной системы. Рекомендуется использовать VerifyVersionInfo вместо вызова функции GetVersionEx для выполнения собственных сравнений.
Как правило, VerifyVersionInfo возвращает ненулевое значение, только если все указанные тесты успешно выполнены. Однако основные, незначительные и версии пакетов обновления проверяются иерархическим образом, так как версия операционной системы представляет собой сочетание этих значений. Если условие существует для основной версии, оно заменяет условия, указанные для дополнительной версии и версии пакета обновления. (Вы не можете протестировать основную версию, превышающую 5, и дополнительную версию меньше или равно 1. Если указать такой тест, функция изменит запрос на проверку для дополнительной версии больше 1, так как она выполняет больше операции в основной версии.)
Функция проверяет эти значения в этом порядке: основная версия, дополнительная версия и версия пакета обновления. Функция продолжает тестировать значения, пока они равны, и останавливается, если одно из значений не соответствует указанному условию. Например, если вы тестируете систему больше или равной версии 5.1 с пакетом обновления 1 ( SP1), тест успешно выполняется, если текущая версия равна 6.0. (Основная версия больше указанной версии, поэтому тестирование останавливается.) Таким же образом, если вы тестируете систему, превышающую или равной версии 5.1 с пакетом обновления 1, тест успешно выполняется, если текущая версия равна 5.2. (Дополнительная версия больше указанной версии, поэтому тестирование останавливается.) Однако при тестировании системы больше или равной версии 5.1 с пакетом обновления 1 проверка завершается ошибкой, если текущая версия — 5.0 с пакетом обновления 2. (Дополнительная версия не превышает указанную версию, поэтому тестирование останавливается.)
Чтобы проверить диапазон системных версий, необходимо дважды вызвать VerifyVersionInfo. Например, чтобы убедиться, что версия системы больше 5.0, но меньше или равно 5.1, сначала вызовите VerifyVersionInfo, чтобы проверить, что основная версия равна 5, а дополнительная версия больше 0, а затем вызовите VerifyVersionInfo еще раз, чтобы проверить, что основная версия равна 5, а дополнительная версия меньше или равно 1.
Определение текущей операционной системы обычно не является лучшим способом определить, присутствует ли определенная функция операционной системы. Это связано с тем, что операционная система может иметь новые функции, добавленные в распространяемую библиотеку DLL. Вместо того, чтобы использовать GetVersionEx для определения номера платформы операционной системы или версии, проверьте наличие самой функции. Дополнительные сведения см. в версии операционной системы.
Чтобы проверить, является ли текущая операционная система версией Media Center или планшетного компьютера Windows, вызовите GetSystemMetrics.
Windows 10: VerifyVersionInfo возвращает значение false при вызове приложений, которые не имеют манифеста совместимости для Windows 8.1 или Windows 10, если параметр lpVersionInfo установлен таким образом, чтобы он указал Windows 8.1 или Windows 10, даже если текущая версия операционной системы — Windows 8.1 или Windows 10. В частности, VerifyVersionInfo имеет следующее поведение:
- Если у приложения нет манифеста, VerifyVersionInfo ведет себя так, как если версия операционной системы — Windows 8 (6.2).
- Если у приложения есть манифест, содержащий GUID, соответствующий Windows 8.1, VerifyVersionInfo ведет себя так, как если версия операционной системы — Windows 8.1 (6.3).
- Если у приложения есть манифест, содержащий GUID, соответствующий Windows 10, VerifyVersionInfo ведет себя так, как если версия операционной системы — Windows 10 (10.0).
Чтобы манифестировать приложения для Windows 8.1 или Windows 10, см. назначение приложения для Windows.
Примеры
Пример см. в разделе Проверкасистемной версии.
Заметка
Заголовок winbase.h определяет VerifyVersionInfo как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 Профессиональный [только классические приложения] |
минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
целевая платформа | Виндоус |
заголовка | winbase.h (включая Windows.h) |
библиотеки |
Kernel32.lib |
DLL | Kernel32.dll |