Aktualizace maker WINVER a _WIN32_WINNT

Když používáte sadu Windows SDK, můžete určit, na kterých verzích windows se může váš kód spouštět. Makra preprocesoru WINVER a _WIN32_WINNT určují minimální verzi operačního systému, která kód podporuje. Visual Studio a kompilátor Microsoft C++ podporují cílení na Windows 7 SP1 a novější. Mezi starší sady nástrojů patří podpora systémů Windows XP SP2, Windows Server 2003 SP1, Vista a Windows Server 2008. Windows 95, Windows 98, Windows ME, systém Windows NT a Windows 2000 nejsou podporované.

Při upgradu staršího projektu možná budete muset aktualizovat makra WINVER nebo _WIN32_WINNT . Pokud jsou přiřazené hodnoty pro nepodporovanou verzi Windows, můžou se zobrazit chyby kompilace související s těmito makry.

Poznámky

Pokud chcete makra upravit, přidejte do souboru záhlaví (například v targetver.h, který jsou součástí některých šablon projektů, které cílí na Windows), následující řádky.

#define WINVER 0x0A00
#define _WIN32_WINNT 0x0A00

Makra v příkladu jsou nastavená tak, aby cílila na každou verzi operačního systému Windows 10. Možné hodnoty jsou uvedeny v souboru hlavičky Windows sdkddkver.h, který definuje makra pro každou hlavní verzi Windows. Pokud chcete vytvořit aplikaci pro podporu předchozí platformy Windows, zahrňte WinSDKVer.h. Potom před zahrnutím sady sdkddkver.h nastavte makra WINVER a _WIN32_WINNT na nejstarší podporovanou platformu. Tady jsou řádky z windows 10 SDK verze sdkddkver.h , které kódují hodnoty pro každou hlavní verzi Windows:

//
// _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
// . . .

Pro jemněji odstupňovaný přístup ke správě verzí můžete použít konstanty verze NTDDI v sadě sdkddkver.h. Tady jsou některá makra definovaná sadou sdkddkver.h ve Windows 10 SDK verze 10.0.18362.0:

//
// 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) )

Makra OSVER, SPVER a SUBVER je možné v kódu použít k řízení podmíněné kompilace pro různé úrovně podpory rozhraní API.

V sadě sdkddkver.h , na kterou se díváte, se nemusí zobrazit všechny tyto verze Windows. To znamená, že pravděpodobně používáte starší verzi sady Windows SDK. (Pokud uvidíte více, pravděpodobně se díváte na novější verzi sady SDK.) Ve výchozím nastavení používají nové projekty Windows v sadě Visual Studio nejnovější sadu Windows SDK, která je dodávána se sadou Visual Studio. Pokud chcete použít novější sadu SDK, kterou jste nainstalovali samostatně, budete muset sadu Windows SDK explicitně nastavit ve vlastnostech projektu.

Poznámka

Pokud do aplikace zahrnete interní hlavičky MFC, nebudou zaručeny fungovat hodnoty.

Toto makro můžete také definovat pomocí možnosti kompilátoru /D . Další informace najdete v tématu /D (definice preprocesoru).

Další informace o významech těchto maker naleznete v tématu Použití záhlaví systému Windows.

Viz také

Historie změn v jazyce Visual C++