次の方法で共有


VerifyVersionInfoW 関数 (winbase.h)

オペレーティング システムのバージョン要件のセットと、現在実行中のバージョンのシステムの対応する値を比較します。この関数は、マニフェストベースの動作の対象となります。 詳細については、「解説」セクションを参照してください。

注: この関数は、Windows 10 では非推奨になりました。 詳細については、Windows のアプリケーションを対象とする を参照してください。

構文

BOOL VerifyVersionInfoW(
  [in] LPOSVERSIONINFOEXW lpVersionInformation,
  [in] DWORD              dwTypeMask,
  [in] DWORDLONG          dwlConditionMask
);

パラメーター

[in] lpVersionInformation

比較するオペレーティング システムのバージョン要件を含む OSVERSIONINFOEX 構造体へのポインター。 dwTypeMask パラメーターは、比較する情報を含むこの構造体のメンバーを示します。

この構造体の dwOSVersionInfoSize メンバーを sizeof(OSVERSIONINFOEX)に設定する必要があります。 また、dwTypeMaskで示されるメンバーの有効なデータを指定する必要があります。 この関数は、対応する dwTypeMask ビットが設定されていない構造体メンバーを無視します。

[in] dwTypeMask

テストする OSVERSIONINFOEX 構造体のメンバーを示すマスク。 このパラメーターには、次の値のうち 1 つ以上を指定できます。

価値 意味
VER_BUILDNUMBER
0x0000004
dwBuildNumber を する
VER_MAJORVERSION
0x0000002
dwMajorVersion を する

メジャー バージョンをテストする場合は、マイナー バージョンと Service Pack のメジャー バージョンとマイナー バージョンもテストする必要があります。

VER_MINORVERSION
0x0000001
dwMinorVersion を する
VER_PLATFORMID
0x0000008
dwPlatformId を する
VER_SERVICEPACKMAJOR
0x0000020
wServicePackMajor を する
VER_SERVICEPACKMINOR
0x0000010
wServicePackMinor を する
VER_SUITENAME
0x0000040
wSuiteMask を する
VER_PRODUCT_TYPE
0x0000080
wProductType を する

[in] dwlConditionMask

比較される各 lpVersionInfo メンバーに使用する比較の種類。 この値をビルドするには、比較対象の OSVERSIONINFOEX メンバーごとに、VerSetConditionMask 関数または VER_SET_CONDITION マクロ 1 回呼び出します。

戻り値

現在実行中のオペレーティング システムが指定された要件を満たしている場合、戻り値は 0 以外の値になります。

現在のシステムが要件を満たしていない場合、戻り値は 0 で、GetLastError ERROR_OLD_WIN_VERSIONを返します。

関数が失敗した場合、戻り値は 0 で、GetLastError ERROR_OLD_WIN_VERSION以外のエラー コードが返されます。

備考

VerifyVersionInfo 関数は、現在実行中のオペレーティング システムに関するバージョン情報を取得し、lpVersionInfo 構造体の有効なメンバーと比較します。 これにより、オペレーティング システムのバージョン条件の必要なセットの存在を簡単に判断できます。 GetVersionEx 関数を呼び出して独自の比較を実行するのではなく、VerifyVersionInfo 使用することをお勧めしています。

通常、VerifyVersionInfo は、指定されたすべてのテストが成功した場合にのみ 0 以外の値を返します。 ただし、オペレーティング システムのバージョンはこれらの値の組み合わせであるため、メジャー、マイナー、および Service Pack のバージョンは階層的にテストされます。 メジャー バージョンの条件が存在する場合は、マイナー バージョンと Service Pack バージョンに指定された条件よりも優先されます。 (5 より大きいメジャー バージョンと 1 以下のマイナー バージョンをテストすることはできません。このようなテストを指定すると、メジャー バージョンに対してより大きい操作が実行されるため、関数はマイナー バージョンが 1 より大きいかどうかをテストするように要求を変更します)。

この関数は、メジャー バージョン、マイナー バージョン、Service Pack バージョンの順にこれらの値をテストします。 関数は、値が等しい間、値のテストを続行し、値の 1 つが指定された条件を満たしていない場合に停止します。 たとえば、バージョン 5.1 Service Pack 1 以上のシステムをテストする場合、現在のバージョンが 6.0 の場合、テストは成功します。 (メジャー バージョンが指定されたバージョンより大きいので、テストは停止します)。同様に、バージョン 5.1 Service Pack 1 以上のシステムをテストする場合、現在のバージョンが 5.2 の場合、テストは成功します。 (マイナー バージョンが指定されたバージョンより大きいので、テストは停止します)。ただし、バージョン 5.1 Service Pack 1 以上のシステムをテストする場合、現在のバージョンが 5.0 Service Pack 2 の場合、テストは失敗します。 (マイナー バージョンが指定されたバージョンより大きくないので、テストは停止します)。

システム バージョンの範囲を確認するには、VerifyVersionInfo を 2 回呼び出す必要があります。 たとえば、システム バージョンが 5.0 より大きいが 5.1 以下であることを確認するには、最初に VerifyVersionInfo 呼び出して、メジャー バージョンが 5 でマイナー バージョンが 0 より大きいかどうかをテストしてから、VerifyVersionInfo 再度呼び出して、メジャー バージョンが 5 でマイナー バージョンが 1 以下であることをテストします。

現在のオペレーティング システムを特定することは、通常、特定のオペレーティング システム機能が存在するかどうかを判断する最適な方法ではありません。 これは、オペレーティング システムに再頒布可能 DLL に新機能が追加された可能性があるためです。 GetVersionEx を使用してオペレーティング システムのプラットフォームまたはバージョン番号を確認するのではなく、機能自体が存在するかどうかをテストします。 詳細については、「オペレーティング システムのバージョンを する」を参照してください。

現在のオペレーティング システムが Media Center または Tablet PC バージョンの Windows かどうかを確認するには、GetSystemMetrics呼び出します。

Windows 10: VerifyVersionInfo は、現在のオペレーティング システム バージョンが Windows 8.1 または Windows 10 の場合でも、windows 8.1 または Windows 10 を指定するように lpVersionInfo パラメーターが設定されている場合、Windows 8.1 または Windows 10 の互換性マニフェストがないアプリケーションによって呼び出されると false を返します。 具体的には、VerifyVersionInfo には、次の動作があります。

  • アプリケーションにマニフェストがない場合、VerifyVersionInfo は、オペレーティング システムのバージョンが Windows 8 (6.2) であるかのように動作します。
  • アプリケーションに Windows 8.1 に対応する GUID を含むマニフェストがある場合、VerifyVersionInfo は、オペレーティング システムのバージョンが Windows 8.1 (6.3) であるかのように動作します。
  • アプリケーションに Windows 10 に対応する GUID を含むマニフェストがある場合、VerifyVersionInfo は、オペレーティング システムのバージョンが Windows 10 (10.0) であるかのように動作します。
バージョン ヘルパー関数 VerifyVersionInfo 関数を使用するため、IsWindows8Point1OrGreater と isWindows10OrGreater 動作は、マニフェストの存在とコンテンツの影響を受けます。

Windows 8.1 または Windows 10 用のアプリケーションをマニフェストするには、「Windowsのアプリケーションをターゲットにする」を参照してください。

例については、「システム バージョンの確認」を参照してください。

手記

winbase.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして VerifyVersionInfo を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winbase.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

GetVersionEx を する

OSVERSIONINFOEX の

オペレーティング システムのバージョン

システム情報関数

VER_SET_CONDITION

VerSetConditionMask