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

こちらもご覧ください

RTL_OSVERSIONINFOEXW

RTL_OSVERSIONINFOW

RtlGetVersion