VerifyVersionInfoA 関数 (winbase.h)
オペレーティング システムのバージョン要件のセットを、現在実行中のバージョンのシステムの対応する値と比較します。この関数は、マニフェストベースの動作の対象となります。 詳細については、「解説」を参照してください。
メモ:この関数は、Windows 10では非推奨になりました。 詳細については、「 Windows 用アプリケーションのターゲット設定 」を参照してください。
構文
BOOL VerifyVersionInfoA(
[in] LPOSVERSIONINFOEXA lpVersionInformation,
[in] DWORD dwTypeMask,
[in] DWORDLONG dwlConditionMask
);
パラメーター
[in] lpVersionInformation
比較するオペレーティング システムのバージョン要件を含む OSVERSIONINFOEX 構造体へのポインター。 dwTypeMask パラメーターは、比較する情報を含むこの構造体のメンバーを示します。
この構造体の dwOSVersionInfoSize メンバーを に設定する sizeof(OSVERSIONINFOEX)
必要があります。 dwTypeMask で示されるメンバーの有効なデータも指定する必要があります。 関数は、対応する dwTypeMask ビットが設定されていない構造体メンバーを無視します。
[in] dwTypeMask
テストする OSVERSIONINFOEX 構造体のメンバーを示すマスク。 このパラメーターには、次の 1 つ以上の値を指定できます。
[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 またはタブレット PC バージョンの Windows かどうかを確認するには、 GetSystemMetrics を呼び出します。
Windows 10: 現在のオペレーティング システムであっても、lpVersionInfo パラメーターがWindows 8.1またはWindows 10を指定するように lpVersionInfo パラメーターが設定されている場合、Windows 8.1またはWindows 10の互換性マニフェストを持たないアプリケーションによって呼び出された場合、VerifyVersionInfo は false を返しますversion がWindows 8.1またはWindows 10。 具体的には、 VerifyVersionInfo には次の動作があります。
- アプリケーションにマニフェストがない場合、VerifyVersionInfo は、操作システムのバージョンがWindows 8 (6.2) であるかのように動作します。
- アプリケーションに、Windows 8.1に対応する GUID を含むマニフェストがある場合、VerifyVersionInfo は、操作システムのバージョンがWindows 8.1 (6.3) であるかのように動作します。
- アプリケーションに、Windows 10に対応する GUID を含むマニフェストがある場合、VerifyVersionInfo は、操作システムのバージョンがWindows 10 (10.0) であるかのように動作します。
Windows 8.1またはWindows 10用にアプリケーションをマニフェストするには、「Windows 用アプリケーションのターゲット設定」を参照してください。
例
例については、「 システム バージョンの確認」を参照してください。
注意
winbase.h ヘッダーは、VerifyVersionInfo をエイリアスとして定義します。このエイリアスは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winbase.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |