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 會傳回下列其中一個狀態值:

傳回碼 Description
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 兩次,一次驗證系統版本的下限,一次驗證系統版本的上限。

規格需求

需求
目標平台 Universal
標頭 wdm.h (包含 Ntddk.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe (核心模式) ;Ntdll.dll (使用者模式)
IRQL PASSIVE_LEVEL

另請參閱

RTL_OSVERSIONINFOEXW

RTL_OSVERSIONINFOW

RtlGetVersion