Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du använder Windows SDK kan du ange vilka versioner av Windows som koden kan köras på. Förprocessormakronen WINVER och _WIN32_WINNT ange den lägsta operativsystemversion som koden stöder. Visual Studio och Microsoft C++-kompilatorn har stöd för Windows 7 SP1 och senare. Äldre verktygsuppsättningar har stöd för Windows XP SP2, Windows Server 2003 SP1, Vista och Windows Server 2008. Windows 95, Windows 98, Windows ME, Windows NT och Windows 2000 stöds inte.
När du uppgraderar ett äldre projekt kan du behöva uppdatera winver - eller _WIN32_WINNT makron. Om de har tilldelats värden för en version av Windows som inte stöds kan kompileringsfel som är relaterade till dessa makron visas.
Anmärkningar
Om du vill ändra makrona lägger du till följande rader i en rubrikfil (till exempel i targetver.h, som ingår i vissa projektmallar som riktar in sig på Windows).
#define WINVER 0x0A00
#define _WIN32_WINNT 0x0A00
Makrona i exemplet är inställda på att rikta in sig på varje version av Windows 10-operativsystemet. Möjliga värden visas i Windows-huvudfilen sdkddkver.h, som definierar makron för varje större Windows-version. Om du vill skapa ditt program för att stödja en tidigare Windows-plattform inkluderar du WinSDKVer.h. Ange sedan WINVER och _WIN32_WINNT makron till den äldsta plattformen som stöds innan du inkluderar sdkddkver.h. Här är raderna från Windows 10 SDK-versionen av sdkddkver.h som kodar värdena för varje huvudversion av 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
// . . .
Om du vill ha en mer detaljerad metod för versionshantering kan du använda NTDDI-versionskonstanterna i sdkddkver.h. Här är några av makrona som definieras av sdkdkver.h i Windows 10 SDK version 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) )
Osver-, SPVER- och SUBVER-makron kan användas i koden för att styra villkorlig kompilering för olika nivåer av API-stöd.
Du kanske inte ser alla dessa versioner av Windows listade i sdkddkver.h som du tittar på. Det innebär att du förmodligen använder en äldre version av Windows SDK. (Om du ser mer tittar du förmodligen på en nyare version av SDK:n.) Som standard använder nya Windows-projekt i Visual Studio den senaste Windows SDK som levereras med Visual Studio. Om du vill använda en nyare SDK som du har installerat separat måste du uttryckligen ange Windows SDK i projektegenskaperna.
Anmärkning
Det garanteras inte att värden fungerar om du inkluderar interna MFC-rubriker i ditt program.
Du kan också definiera makrot med hjälp av kompilatoralternativet /D . Mer information finns i /D (preprocessordefinitioner).
Mer information om innebörden av dessa makron finns i Använda Windows-huvuden.