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


Функция RtlVerifyVersionInfo (wdm.h)

Подпрограмма RtlVerifyVersionInfo сравнивает указанный набор требований к версии операционной системы с соответствующими атрибутами текущей версии операционной системы.

Синтаксис

NTSYSAPI NTSTATUS RtlVerifyVersionInfo(
  [in] PRTL_OSVERSIONINFOEXW VersionInfo,
  [in] ULONG                 TypeMask,
  [in] ULONGLONG             ConditionMask
);

Параметры

[in] VersionInfo

Указатель на структуру RTL_OSVERSIONINFOEXW , указывающую требования к версии операционной системы для сравнения с соответствующими атрибутами текущей версии операционной системы.

[in] TypeMask

Указывает, какие элементы VersionInfo сравнивать с соответствующими атрибутами текущей версии операционной системы. TypeMask имеет логическое или одно или несколько из следующих значений.

Значение Соответствующий элемент
VER_BUILDNUMBER dwBuildNumber
VER_MAJORVERSION dwMajorVersion
VER_MINORVERSION dwMinorVersion
VER_PLATFORMID dwPlatformId
VER_SERVICEPACKMAJOR wServicePackMajor
VER_SERVICEPACKMINOR wServicePackMinor
VER_SUITENAME wSuiteMask
VER_PRODUCT_TYPE wProductType

[in] ConditionMask

Указывает способ сравнения каждого элемента VersionInfo . Чтобы задать значение ConditionMask, вызывающий объект должен использовать макрос VER_SET_CONDITION :

VER_SET_CONDITION (
        IN OUT  ULONGLONG  ConditionMask,
        IN ULONG  TypeBitMask,
        IN UCHAR  ComparisonType
        );

Значение ConditionMask создается следующим образом:

  • Инициализируйте значение ConditionMask равным нулю.

  • Вызовите VER_SET_CONDITION один раз для каждого члена VersionInfo, указанного в TypeMask.

  • Задайте параметры TypeBitMask и ComparisonType для каждого вызова VER_SET_CONDITION следующим образом:

TypeBitMask

Указывает элемент VersionInfo , для которого задан тип сравнения. TypeBitMask может иметь одно из следующих значений.

Значение Соответствующий элемент
VER_BUILDNUMBER dwBuildNumber
VER_MAJORVERSION dwMajorVersion
VER_MINORVERSION dwMinorVersion
VER_PLATFORMID dwPlatformId
VER_SERVICEPACKMAJOR wServicePackMajor
VER_SERVICEPACKMINOR wServicePackMinor
VER_SUITENAME wSuiteMask
VER_PRODUCT_TYPE wProductType

ComparisonType

Указывает тип сравнения, используемый RtlVerifyVersionInfo для сравнения элемента VersionInfo , указанного в TypeBitMask , с соответствующим атрибутом текущей операционной системы.

Для всех значений TypeBitMask , отличных от VER_SUITENAME, параметру ComparisonType присваивается одно из следующих значений.

Значение Значение
VER_EQUAL Текущее значение должно быть равно указанному значению.
VER_GREATER Текущее значение должно быть больше указанного значения.
VER_GREATER_EQUAL Текущее значение должно быть больше или равно указанному значению.
VER_LESS Текущее значение должно быть меньше указанного значения.
VER_LESS_EQUAL Текущее значение должно быть меньше или равно указанному значению.

Если для TypeBitMask задано значение VER_SUITENAME, параметру ComparisonType присваивается одно из следующих значений.

Значение Значение
VER_AND Все наборы продуктов, указанные в элементе wSuiteMask , должны присутствовать в текущей системе.
VER_OR В текущей системе должен присутствовать по крайней мере один из указанных наборов продуктов.

Возвращаемое значение

RtlVerifyVersionInfo возвращает одно из следующих значений состояния:

Код возврата Описание
STATUS_SUCCESS Указанная версия соответствует текущей версии операционной системы.
STATUS_INVALID_PARAMETER Входные параметры недопустимы.
STATUS_REVISION_MISMATCH Указанная версия не соответствует текущей версии операционной системы.

Комментарии

RtlVerifyVersionInfo позволяет драйверу легко проверить наличие необходимого набора атрибутов операционной системы. RtlVerifyVersionInfo — это эквивалент функции VerifyVersionInfo в пользовательском режиме в windows SDK. См. пример в пакете SDK для Windows, где показано, как проверить версию системы.

Как правило, RtlVerifyVersionInfo возвращает STATUS_SUCCESS только в случае успешного выполнения всех сравнений. Однако основная, дополнительная версия и версия пакета обновления проверяются последовательно следующим образом:

  • Если основная версия превышает минимальное требуемое значение, то дополнительная версия и версия пакета обновления не проверяются. Например, если текущая основная версия — 6.0, проверка системы, более или равной версии 5.1 с пакетом обновления 1 (SP1) будет выполнена успешно. Дополнительная версия и версия пакета обновления не проверяются.

  • Если дополнительный номер версии превышает минимальную требуемую версию, версия пакета обновления не проверяется. Например, если текущая основная версия — 5.2, проверка версии системы больше или равна версии 5.1 с пакетом обновления 1 (SP1) будет успешно выполнена. Версия пакета обновления не проверяется.

  • Если основная версия пакета обновления превышает минимальную требуемую версию, дополнительная версия пакета обновления не проверяется.

Чтобы проверить диапазон версий системы, драйвер может вызвать RtlVerifyVersionInfo дважды: один раз для проверки нижней границы в системной версии и один раз для проверки верхней границы в системной версии.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Ntddk.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe (режим ядра); Ntdll.dll (пользовательский режим)
IRQL PASSIVE_LEVEL

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

RTL_OSVERSIONINFOEXW

RTL_OSVERSIONINFOW

RtlGetVersion