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.

Ayrıca bkz.

Visual C++ değişiklik geçmişi