共用方式為


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

價值 意義
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 來判斷操作系統平臺或版本號碼,而是測試功能本身是否存在。 如需詳細資訊,請參閱 作業系統版本

若要確認目前的作業系統為 Media Center 或平板電腦版本的 Windows,請呼叫 GetSystemMetrics

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

若要顯示適用於 Windows 8.1 或 Windows 10 的應用程式,請參閱 以 Windows的應用程式為目標。

例子

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

注意

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

要求

要求 價值
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
標頭 winbase.h (包括 Windows.h)
連結庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

GetVersionEx

OSVERSIONINFOEX

操作系統版本

系統資訊函式

VER_SET_CONDITION

VerSetConditionMask