Aracılığıyla paylaş


Windows Üst Bilgilerini Kullanma

Windows API'sinin üst bilgi dosyaları, 32 ve 64 bit uygulamalar oluşturmanıza olanak tanır. Bunlar, API'nin hem Unicode hem de ANSI sürümleri için bildirimler içerir. Daha fazla bilgi için bkz. Windows API'sinde Unicode. Uygulamanızın hem 32 hem de 64 bit sürümlerini tek bir kaynak kod tabanından oluşturmanıza olanak tanıyan veri türlerini kullanırlar. Daha fazla bilgi için bkz. 64 bit Windowsiçin Hazırlanıyor. Ek özellikler arasında Üst Bilgi Ek Açıklamaları ve STRICT Tür Denetimibulunur.

Visual C++ ve Windows Üst Bilgi Dosyaları

Microsoft Visual C++, Visual C++ yayımlandığı sırada geçerli olan Windows üst bilgi dosyalarının kopyalarını içerir. Bu nedenle, güncelleştirilmiş üst bilgi dosyalarını bir SDK'dan yüklerseniz, bilgisayarınızdaki Windows üst bilgi dosyalarının birden çok sürümüyle karşılaşabilirsiniz. SDK üst bilgi dosyalarının en son sürümünü kullandığınızdan emin değilseniz, Visual C++ yayımlandıktan sonra sunulan özellikleri kullanan kodu derlerken aşağıdaki hata kodunu alırsınız: hata C2065: bildirilmemiş tanımlayıcı.

Koşullu Bildirimler için Makrolar

Belirli bir Windows sürümüne bağımlı olan bazı işlevler koşullu kod kullanılarak bildirilir. Bu, uygulamanızın hedef Windows sürümlerinde desteklenmeyen işlevler kullanıp kullanmadığını algılamak için derleyiciyi kullanmanıza olanak tanır. Bu işlevleri kullanan bir uygulamayı derlemek için uygun makroları tanımlamanız gerekir. Aksi takdirde, C2065 hata iletisini alırsınız.

Windows üst bilgi dosyaları, hangi Windows sürümlerinin birçok programlama öğesini desteklediğini belirtmek için makroları kullanır. Bu nedenle, her büyük işletim sistemi sürümünde sunulan yeni işlevleri kullanmak için bu makroları tanımlamanız gerekir. (Tek tek üst bilgi dosyaları farklı makrolar kullanabilir; bu nedenle, derleme sorunları oluşursa, koşullu tanımların tanımını içeren üst bilgi dosyasını denetleyin.) Daha fazla bilgi için bkz. SdkDdkVer.h.

Aşağıdaki tabloda, Windows üst bilgi dosyalarında kullanılan tercih edilen makrolar açıklanmaktadır. NTDDI_VERSION tanımlarsanız, _WIN32_WINNT de tanımlamanız gerekir.

Gereken en düşük sistem NTDDI_VERSION değeri
Windows 10 1903 "19H1" NTDDI_WIN10_19H1 (0x0A000007)
Windows 10 1809 "Redstone 5" NTDDI_WIN10_RS5 (0x0A000006)
Windows 10 1803 "Redstone 4" NTDDI_WIN10_RS4 (0x0A000005)
Windows 10 1709 "Redstone 3" NTDDI_WIN10_RS3 (0x0A000004)
Windows 10 1703 "Redstone 2" NTDDI_WIN10_RS2 (0x0A000003)
Windows 10 1607 "Redstone 1" NTDDI_WIN10_RS1 (0x0A000002)
Windows 10 1511 "Eşik 2" NTDDI_WIN10_TH2 (0x0A000001)
Windows 10 1507 "Eşik" NTDDI_WIN10 (0x0A000000)
Windows 8.1 NTDDI_WINBLUE (0x06030000)
Windows 8 NTDDI_WIN8 (0x06020000)
Windows 7 NTDDI_WIN7 (0x06010000)
Windows Server 2008 NTDDI_WS08 (0x06000100)
Service Pack 1 (SP1) ile Windows Vista NTDDI_VISTASP1 (0x06000100)
Windows Vista NTDDI_VISTA (0x06000000)
Service Pack 2 (SP2) ile Windows Server 2003 NTDDI_WS03SP2 (0x05020200)
Service Pack 1 (SP1) ile Windows Server 2003 NTDDI_WS03SP1 (0x05020100)
Windows Server 2003 NTDDI_WS03 (0x05020000)
Windows XP ile Service Pack 3 (SP3) NTDDI_WINXPSP3 (0x05010300)
Service Pack 2 (SP2) ile Windows XP NTDDI_WINXPSP2 (0x05010200)
Windows XP ile Service Pack 1 (SP1) NTDDI_WINXPSP1 (0x05010100)
Windows XP NTDDI_WINXP (0x05010000)

 

Aşağıdaki tablolarda, Windows üst bilgi dosyalarında kullanılan diğer makrolar açıklanmaktadır.

Gereken en düşük sistem _WIN32_WINNT ve WINVER için en düşük değer
Windows 10 _WIN32_WINNT_WIN10 (0x0A00)
Windows 8.1 _WIN32_WINNT_WINBLUE (0x0603)
Windows 8 _WIN32_WINNT_WIN8 (0x0602)
Windows 7 _WIN32_WINNT_WIN7 (0x0601)
Windows Server 2008 _WIN32_WINNT_WS08 (0x0600)
Windows Vista _WIN32_WINNT_VISTA (0x0600)
Windows Server 2003 with SP1, Windows XP with SP2 _WIN32_WINNT_WS03 (0x0502)
Windows Server 2003, Windows XP _WIN32_WINNT_WINXP (0x0501)

 

Gerekli en düşük sürüm _WIN32_IE'nin asgari değeri
Internet Explorer 11.0 _WIN32_IE_IE110 (0x0A00)
Internet Explorer 10.0 _WIN32_IE_IE100 (0x0A00)
Internet Explorer 9.0 _WIN32_IE_IE90 (0x0900)
Internet Explorer 8.0 _WIN32_IE_IE80 (0x0800)
Internet Explorer 7.0 _WIN32_IE_IE70 (0x0700)
Internet Explorer 6.0 SP2 _WIN32_IE_IE60SP2 (0x0603)
Internet Explorer 6.0 SP1 _WIN32_IE_IE60SP1 (0x0601)
Internet Explorer 6.0 _WIN32_IE_IE60 (0x0600)
Internet Explorer 5.5 _WIN32_IE_IE55 (0x0550)
Internet Explorer 5.01 _WIN32_IE_IE501 (0x0501)
Internet Explorer 5.0, 5.0a, 5.0b _WIN32_IE_IE50 (0x0500)

 

WINVER veya _WIN32_WINNT'i ayarlama

Bu simgeleri, her kaynak dosyadaki #define deyimini kullanarak veya Visual C++ tarafından desteklenen /D derleyici seçeneğini belirterek tanımlayabilirsiniz.

Örneğin, kaynak dosyanızda WINVER'i ayarlamak için aşağıdaki deyimi kullanın:

#define WINVER 0x0502

Kaynak dosyanızda _WIN32_WINNT ayarlamak için aşağıdaki deyimi kullanın:

#define _WIN32_WINNT 0x0502

/D derleyici seçeneğini kullanarak _WIN32_WINNT ayarlamak için aşağıdaki komutu kullanın:

cl -c /D_WIN32_WINNT=0x0502kaynak.cpp

/D derleyici seçeneğini kullanma hakkında bilgi için bkz. /D (ön işlemci tanımları).

Windows'un en son sürümünde sunulan bazı özelliklerin windows'un önceki bir sürümü için bir hizmet paketine eklenebileceğini unutmayın. Bu nedenle, bir hizmet paketini hedeflemek için bir sonraki ana işletim sistemi sürümünün değeriyle _WIN32_WINNT tanımlamanız gerekebilir. Örneğin, GetDllDirectory işlevi Windows Server 2003'te kullanıma sunulmuştur ve _WIN32_WINNT 0x0502 veya daha büyükse koşullu olarak tanımlanmıştır. Bu işlev, WINDOWS XP SP1'e de eklendi. Bu nedenle, _WIN32_WINNT Windows XP'yi hedeflemek için 0x0501 olarak tanımlarsanız, SP1 ile Windows XP'de tanımlanan özellikleri kaçırabilirsiniz.

Yapı Paketlemeyi Denetleme

Projeler, en büyük tam sayı türü 8 bayt olduğundan şu anda 8 bayt olan varsayılan yapı paketlemesini kullanacak şekilde derlenmelidir. Bunun yapılması, üst bilgi dosyalarındaki tüm yapı türlerinin Windows API'sinin beklediği hizalamayla uygulamada derlendiğinden emin olur. Ayrıca 8 baytlık değerlere sahip yapıların düzgün hizalanmasını sağlar ve veri hizalamayı zorlayan işlemcilerde hizalama hatalarına neden olmaz.

Daha fazla bilgi için bkz. /Zp (yapı üyesi hizalama) veya paketi.

Daha Küçük Üst Bilgi Dosyalarıyla Daha Hızlı Derlemeler

Aşağıdaki gibi daha az yaygın API bildirimlerinden bazılarını dışlayarak Windows üst bilgi dosyalarının boyutunu küçültebilirsiniz:

  • Şifreleme, DDE, RPC, Kabuk ve Windows Yuvaları gibi API'leri dışlamak için WIN32_LEAN_AND_MEAN tanımlayın.

    #define WIN32_LEAN_AND_MEAN

  • API'yi dışlamak için NOAPI simgelerinden birini veya daha fazlasını tanımlayın. Örneğin NOCOMM, seri iletişim API'sini dışlar. Destek NOapi simgelerinin listesi için bkz. Windows.h.

    #define NOCOMM

Windows SDK indirme sitesi