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 結構的成員。 此參數可以是下列一或多個值。

意義
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宏一次。

傳回值

如果目前執行的操作系統符合指定的需求,則傳回值為非零值。

如果目前的系統不符合需求,則傳回值為零,而 GetLastError 會傳回ERROR_OLD_WIN_VERSION。

如果函式失敗,則傳回值為零,而 GetLastError 會傳回ERROR_OLD_WIN_VERSION以外的錯誤碼。

備註

VerifyVersionInfo 函式會擷取目前執行中操作系統的版本資訊,並將其與 lpVersionInfo 結構的有效成員進行比較。 這可讓您輕鬆地判斷一組必要的操作系統版本狀況。 最好使用 VerifyVersionInfo, 而不是呼叫 GetVersionEx 函式來執行您自己的比較。

通常,只有在所有指定的測試都成功時, VerifyVersionInfo 才會傳回非零值。 不過,主要、次要和 Service Pack 版本會以階層方式進行測試,因為操作系統版本是這些值的組合。 如果主要版本存在條件,則會取代針對次要版本和 Service Pack 版本指定的條件。 (您無法測試大於 5 且次要版本小於或等於 1 的主要版本。如果您指定這類測試,函式將會變更要求以測試大於 1 的次要版本,因為它正在主要版本上執行大於作業。)

函式會依此順序測試這些值:主要版本、次要版本和 Service Pack 版本。 函式會在值相等時繼續測試值,並在其中一個值不符合指定條件時停止。 例如,如果您測試大於或等於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 兩次。 例如,若要確認系統版本大於 5.0 但小於或等於 5.1,請先呼叫 VerifyVersionInfo 來測試主要版本為 5 且次要版本大於 0,然後再次呼叫 VerifyVersionInfo 來測試主要版本為 5,而次要版本小於或等於 1。

識別目前的操作系統通常不是判斷特定操作系統功能是否存在的最佳方式。 這是因為操作系統可能已在可轉散發 DLL 中新增功能。 不要使用 GetVersionEx 來判斷操作系統平臺或版本號碼,而是測試功能本身是否存在。 如需詳細資訊,請參閱 操作系統版本

若要確認目前的操作系統是否為媒體中心或平板電腦版本的 Windows,請呼叫 GetSystemMetrics

Windows 10:如果已設定 lpVersionInfo 參數,則當應用程式沒有相容性指令清單 Windows 8.1 或 Windows 10 呼叫時,VerifyVersionInfo 會傳回 false,使其指定 Windows 8.1 或 Windows 10,即使目前的操作系統也一樣版本 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) 一樣。
Version Helper 函式使用 VerifyVersionInfo 函式,因此行為 IsWindows8Point1OrGreaterIsWindows10OrGreater 會受到指令清單是否存在和內容的影響。

若要針對 Windows 8.1 或 Windows 10 顯示您的應用程式,請參閱以 Windows 為目標的應用程式

範例

如需範例,請參閱 驗證系統版本

注意

winbase.h 標頭會將 VerifyVersionInfo 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 winbase.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

GetVersionEx

OSVERSIONINFOEX

操作系統版本

系統資訊函式

VER_SET_CONDITION

VerSetConditionMask