Функция 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 |