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 は、次の 1 つ以上の値の論理 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 の値を 0 に初期化します。
TypeMask で指定された VersionInfo メンバーごとに、VER_SET_CONDITIONを 1 回呼び出します。
各呼び出しの 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
TypeBitMask で指定された VersionInfo メンバーと、現在実行中のオペレーティング システムの対応する属性を比較するために RtlVerifyVersionInfo が使用する比較の種類を指定します。
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 | 指定された製品スイートのうち少なくとも 1 つが現在のシステムに存在している必要があります。 |
戻り値
RtlVerifyVersionInfo は 、次のいずれかの状態値を返します。
リターン コード | 説明 |
---|---|
STATUS_SUCCESS | 指定したバージョンは、現在実行中のオペレーティング システムのバージョンと一致します。 |
STATUS_INVALID_PARAMETER | 入力パラメーターが無効です。 |
STATUS_REVISION_MISMATCH | 指定したバージョンが、現在実行中のオペレーティング システムのバージョンと一致しません。 |
注釈
RtlVerifyVersionInfo を使用すると、ドライバーはオペレーティング システム属性の必要なセットの存在を簡単に確認できます。 RtlVerifyVersionInfo は、Windows SDK のユーザー モード VerifyVersionInfo 関数と同等のカーネル モードです。 システム のバージョンを確認する方法を示す Windows SDK の例を参照してください。
通常、 RtlVerifyVersionInfo は、すべての比較が成功した場合にのみSTATUS_SUCCESSを返します。 ただし、メジャー バージョン、マイナー バージョン、および Service Pack バージョンは、次の方法で順次テストされます。
メジャー バージョンが必要な最小数を超えた場合、マイナー バージョンとサービス パックのバージョンはテストされません。 たとえば、現在のメジャー バージョンが 6.0 の場合、バージョン 5.1 Service Pack 1 以上のシステムのテストは成功します。 マイナー バージョンと Service Pack バージョンはテストされません。
マイナー バージョンが必要な最小数を超えた場合、Service Pack のバージョンはテストされません。 たとえば、現在のメジャー バージョンが 5.2 の場合、バージョン 5.1 以上のシステム バージョンの Service Pack 1 のテストは成功します。 Service Pack のバージョンはテストされていません。
メジャー サービス パックのバージョンが最低限必要なバージョンを超える場合、マイナー サービス パックのバージョンはテストされません。
システム バージョンの範囲を確認するために、ドライバーは RtlVerifyVersionInfo を 2 回呼び出し、1 回はシステム バージョンの下限を確認し、1 回はシステム バージョンの上限を確認できます。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Ntddk.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe (カーネル モード);Ntdll.dll (ユーザー モード) |
IRQL | PASSIVE_LEVEL |