WINVER ve _WIN32_WINNT güncelleştirmesi
Windows SDK'sını kullandığınızda kodunuzun hangi Windows sürümlerinde çalışabileceğini belirtebilirsiniz. Ön işlemci makroları WINVER ve _WIN32_WINNT kodunuzun desteklediği en düşük işletim sistemi sürümünü belirtir. Visual Studio ve Microsoft C++ derleyicisi, Windows 7 SP1 ve üzerini hedeflemeyi destekler. Eski araç kümeleri Windows XP SP2, Windows Server 2003 SP1, Vista ve Windows Server 2008 desteği içerir. Windows 95, Windows 98, Windows ME, Windows NT ve Windows 2000 desteklenmez.
Eski bir projeyi yükselttiğinizde, WINVER veya _WIN32_WINNT makrolarınızı güncelleştirmeniz gerekebilir. Desteklenmeyen bir Windows sürümü için değerler atanmışsa, bu makrolarla ilgili derleme hataları görebilirsiniz.
Açıklamalar
Makroları değiştirmek için, bir üst bilgi dosyasında (örneğin, Windows'ı hedefleyen bazı proje şablonları tarafından eklenen targetver.h dosyasına) aşağıdaki satırları ekleyin.
#define WINVER 0x0A00
#define _WIN32_WINNT 0x0A00
Örnekteki makrolar, Windows 10 işletim sisteminin her sürümünü hedeflemek için ayarlanmıştır. Olası değerler, her ana Windows sürümü için makroları tanımlayan sdkddkver.h Windows üst bilgi dosyasında listelenir. Uygulamanızı önceki bir Windows platformını destekleyecek şekilde derlemek için WinSDKVer.h dosyasını ekleyin. Ardından, sdkddkver.h'yi eklemeden önce WINVER ve _WIN32_WINNT makrolarını desteklenen en eski platforma ayarlayın. Sdkddkver.h dosyasının Windows 10 SDK sürümündeki ve Windows'un her ana sürümünün değerlerini kodlayan satırlar şunlardır:
//
// _WIN32_WINNT version constants
//
#define _WIN32_WINNT_NT4 0x0400 // Windows NT 4.0
#define _WIN32_WINNT_WIN2K 0x0500 // Windows 2000
#define _WIN32_WINNT_WINXP 0x0501 // Windows XP
#define _WIN32_WINNT_WS03 0x0502 // Windows Server 2003
#define _WIN32_WINNT_WIN6 0x0600 // Windows Vista
#define _WIN32_WINNT_VISTA 0x0600 // Windows Vista
#define _WIN32_WINNT_WS08 0x0600 // Windows Server 2008
#define _WIN32_WINNT_LONGHORN 0x0600 // Windows Vista
#define _WIN32_WINNT_WIN7 0x0601 // Windows 7
#define _WIN32_WINNT_WIN8 0x0602 // Windows 8
#define _WIN32_WINNT_WINBLUE 0x0603 // Windows 8.1
#define _WIN32_WINNT_WINTHRESHOLD 0x0A00 // Windows 10
#define _WIN32_WINNT_WIN10 0x0A00 // Windows 10
// . . .
Sürüm oluşturma konusunda daha ayrıntılı bir yaklaşım için sdkddkver.h dosyasında NTDDI sürüm sabitlerini kullanabilirsiniz. Windows 10 SDK sürüm 10.0.18362.0'da sdkddkver.h tarafından tanımlanan makrolardan bazıları şunlardır:
//
// NTDDI version constants
//
#define NTDDI_WIN7 0x06010000
#define NTDDI_WIN8 0x06020000
#define NTDDI_WINBLUE 0x06030000
#define NTDDI_WINTHRESHOLD 0x0A000000 /* ABRACADABRA_THRESHOLD */
#define NTDDI_WIN10 0x0A000000 /* ABRACADABRA_THRESHOLD */
#define NTDDI_WIN10_TH2 0x0A000001 /* ABRACADABRA_WIN10_TH2 */
#define NTDDI_WIN10_RS1 0x0A000002 /* ABRACADABRA_WIN10_RS1 */
#define NTDDI_WIN10_RS2 0x0A000003 /* ABRACADABRA_WIN10_RS2 */
#define NTDDI_WIN10_RS3 0x0A000004 /* ABRACADABRA_WIN10_RS3 */
#define NTDDI_WIN10_RS4 0x0A000005 /* ABRACADABRA_WIN10_RS4 */
#define NTDDI_WIN10_RS5 0x0A000006 /* ABRACADABRA_WIN10_RS5 */
#define NTDDI_WIN10_19H1 0x0A000007 /* ABRACADABRA_WIN10_19H1*/
#define WDK_NTDDI_VERSION NTDDI_WIN10_19H1 /* ABRACADABRA_WIN10_19H1 */
//
// masks for version macros
//
#define OSVERSION_MASK 0xFFFF0000
#define SPVERSION_MASK 0x0000FF00
#define SUBVERSION_MASK 0x000000FF
//
// macros to extract various version fields from the NTDDI version
//
#define OSVER(Version) ((Version) & OSVERSION_MASK)
#define SPVER(Version) (((Version) & SPVERSION_MASK) >> 8)
#define SUBVER(Version) (((Version) & SUBVERSION_MASK) )
OSVER, SPVER ve SUBVER makroları, farklı API desteği düzeylerinde koşullu derlemeyi denetlemek için kodunuzda kullanılabilir.
Windows'un bu sürümlerinin tümünü, baktığınız sdkddkver.h dosyasında listelenmiş olarak göremeyebilirsiniz. Bu, büyük olasılıkla Windows SDK'nın eski bir sürümünü kullandığınız anlamına gelir. (Daha fazla görüyorsanız, büyük olasılıkla SDK'nın daha yeni bir sürümüne bakıyorsunuzdur.) Varsayılan olarak, Visual Studio'daki yeni Windows projeleri Visual Studio ile birlikte gelen en son Windows SDK'sını kullanır. Ayrı olarak yüklediğiniz daha yeni bir SDK'yı kullanmak için Windows SDK'sını proje özelliklerinizde açıkça ayarlamanız gerekir.
Not
Uygulamanıza iç MFC üst bilgileri eklerseniz değerlerin çalışması garanti edilmemektedir.
Bu makroyu /D
derleyici seçeneğini kullanarak da tanımlayabilirsiniz. Daha fazla bilgi için bkz . /D (Önişlemci Tanımları).
Bu makroların anlamları hakkında daha fazla bilgi için bkz . Windows Üst Bilgilerini Kullanma.