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 设置为以下一个或多个值的逻辑 OR。

对应成员
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 的值初始化为零。

  • TypeMask 指定的每个 VersionInfo 成员调用VER_SET_CONDITION一次。

  • 将每次调用的 TypeBitMaskComparisonType 参数设置为 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 用于将 TypeBitMask 指定的 VersionInfo 成员与当前正在运行的操作系统的相应属性进行比较的比较类型。

对于除 VER_SUITENAME 之外的所有 TypeBitMask 值, 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 是 Windows SDK 中用户模式 VerifyVersionInfo 函数的内核模式等效项。 请参阅 Windows SDK 中的示例,该示例演示如何验证系统版本。

通常,仅当所有比较都成功时, RtlVerifyVersionInfo 才会返回STATUS_SUCCESS。 但是,主要版本、次要版本和 Service Pack 版本将按顺序按以下方式进行测试:

  • 如果主版本超过所需的最低版本,则不会测试次要版本和 Service Pack 版本。 例如,如果当前主版本为 6.0,则测试大于或等于版本 5.1 Service Pack 1 的系统会成功。 未测试次要版本和 Service Pack 版本。

  • 如果次要版本超过所需的最低版本,则不会测试 Service Pack 版本。 例如,如果当前主版本为 5.2,则系统版本大于或等于版本 5.1 Service Pack 1 的测试成功。 未测试 Service Pack 版本。

  • 如果主 Service Pack 版本超过所需的最低版本,则不会测试次要 Service Pack 版本。

若要验证一系列系统版本,驱动程序可以调用 RtlVerifyVersionInfo 两次,一次用于验证系统版本上的下限,一次用于验证系统版本上的上限。

要求

要求
目标平台 通用
标头 wdm.h (包括 Ntddk.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe (内核模式) ;Ntdll.dll (用户模式)
IRQL PASSIVE_LEVEL

另请参阅

RTL_OSVERSIONINFOEXW

RTL_OSVERSIONINFOW

RtlGetVersion