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一次。
將每個呼叫的 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 用來比較 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 |