Windows API
Windows API, gayri resmi olarak WinAPI, Microsoft'un Microsoft Windows işletim sistemlerinde bulunan çekirdek uygulama programlama arayüzü kümesidir (API). Windows API adı, genellikle kendi adlarıyla (örneğin, Win32 API) atıfta bulunulan birçok farklı platform uygulamasına atıfta bulunur. Neredeyse tüm Windows programları Windows API ile etkileşime girer. Windows NT işletim sistemi satırlarında, az sayıda (Windows başlangıç işleminde erken başlayan programlar gibi) Native API'yi kullanır.[1]
Geliştirici desteği, bir yazılım geliştirme kiti, Microsoft Windows SDK biçiminde, Windows API ve ilişkili Windows arabirimlerine dayalı yazılım oluşturmak için gereken belgeleri ve araçları sağlar.[2]
Windows API (Win32), temel olarak C programlama diline odaklanmıştır, çünkü açıkta kalan fonksiyonları ve veri yapıları bu dilde, belgelerinin son sürümlerinde tanımlanmıştır. Bununla birlikte, API, çağrılar ve geri aramalar için öngörülen arama kuralları ile birlikte (iyi tanımlanmış) düşük seviyeli veri yapılarını idare edebilen herhangi bir programlama dili derleyicisi veya çevirme dili tarafından kullanılabilir.[3] Benzer şekilde, API'nin işlevinin içsel uygulaması tarihsel olarak birçok dilde geliştirilmiştir. C'nin nesne yönelimli bir programlama dili olmamasına rağmen, Windows API ve Windows tarihsel olarak nesne yönelimli programlama olarak tanımlanmıştır. Nesne yönelimli yapıyı daha belirgin kılan (Microsoft Temel Sınıf Kütüphanesi (MFC), Görsel Bileşen Kütüphanesi (VCL), GDI +, vb.), Nesne yönelimli diller için birçok Microsoft sarmalayıcı sınıfları ve uzantıları da olmuştur. Örneğin, Windows 8, C ++'da uygulanan ve tasarım tarafından nesne yönelimli olan Windows API ve Windows Runtime API'sını sağlar.[4]
Genel bakış[değiştir | kaynağı değiştir]
Windows API tarafından sağlanan işlevler sekiz kategoride gruplandırılabilir:
- Baz Servisleri
Bir Windows sisteminde mevcut olan temel kaynaklara erişim sağlar. Dahil edilenler dosya sistemileri, bilgisayar donanımı, işlemler, iş parçacığı ve hata işleme gibi şeylerdir. Bu işlevler Microsoft Windows kitaplığı dosyalarından kernel.exe, krnl286.exe veya krnl386.exe dosyalarında 16 bit Windows, kernel32.dll ve KernelBase.dll dosyalarında 32 ve 64 bit Windows'ta bulunur. Bu dosyalar, 64 bit Windows'ta "Windows" dizinindeki "System32" klasöründe ve 16 bit Windows sürümünde "Windows" dizininde bulunur.[5]
- Gelişmiş Servisler
Çekirdeğin dışındaki işlevlere erişim sağlar. Bu, Windows Kayıt, sistemi kapatma / yeniden başlatma (veya iptal etme), Windows hizmeti başlatma / durdurma / oluşturma, kullanıcı hesaplarını yönetme gibi şeylerdir. Bu işlevler, 32 bit Windows'ta advapi32.dll ve advapires32.dll dosyalarında bulunur.
- Grafik Aygıt Arabirimi
Bilgisayar monitörü, yazıcılara ve diğer çıkış cihazlarına grafik içeriği çıkışı için fonksiyonlar sağlar. 16-bit Windows'ta gdi.exe ve kullanıcı modunda 32-bit Windows'da gdi32.dll'de bulunur. Çekirdek modu GDI desteği, doğrudan grafik sürücüsü ile iletişim kuran win32k.sys tarafından sağlanır.[6]
- Kullanıcı arayüzü
Ekran pencereleri oluşturma ve yönetme işlevlerini ve düğmeler ve kaydırma çubukları gibi temel kontrolleri, fare ve klavye girişini ve Windows'un grafik kullanıcı arayüzü (GUI) kısmıyla ilişkili diğer işlevleri sağlayan işlevleri sağlar. Bu işlev birimi, 16-bit Windows'da user.exe ve 32-bit Windows'da user32.dll'de bulunur. Windows XP sürümlerinden bu yana, temel denetimler ortak denetimlerle (Ortak Denetim Kütüphanesi) birlikte Windows USER içinde bulunur.
- Ortak İletişim Kutusu Kütüphanesi
Uygulamalara, dosyaları açıp kaydetmek, renk ve yazı tipi vb. seçmek için standart iletişim kutusu sağlar. Kütüphane, 16 bit Windows'da commdlg.dll ve 32 bit Windows'ta comdlg32.dll dosyasında bulunur. API'nin Kullanıcı Arabirimi kategorisi altında gruplandırılmıştır.
- Ortak Kontrol Kütüphanesi
Uygulamalara işletim sistemi tarafından sağlanan bazı gelişmiş kontrollere erişim sağlar. Bunlar durum çubuğu, ilerleme çubuğu, araç çubuğu ve sekmeli tarayıcı gibi şeyleri içerir. Kitaplık, 16-bit Windows'ta commctrl.dll ve 32-bit Windows'ta comctl32.dll adlı bir dinamik bağlantı kitaplığı (DLL) dosyasında bulunur. API'nin Kullanıcı Arabirimi kategorisi altında gruplandırılmıştır.[7]
Windows API’nin bileşeni, uygulamaların işletim sistemi kabuk programlama tarafından sağlanan işlevlere erişmesine, değiştirmesine ve geliştirmesine izin verir. Bileşen, 16-bit Windows'taki shell.dll ve 32-bit Windows'taki shell32.dll'de bulunur. Shell Lightweight Utility İşlevleri shlwapi.dll dosyasındadır. API'nin Kullanıcı Arabirimi kategorisi altında gruplandırılmıştır.[8]
- Ağ hizmetleri
İşletim sisteminin çeşitli ağ yeteneklerine erişim izni verir. Alt bileşenleri arasında NetBIOS, Winsock, NetDDE, uzaktan yordam çağrısı (RPC) ve daha pek çoğu bulunur. Bu bileşen, 32-bit Windows'ta netapi32.dll içinde bulunur.[9]
Web[değiştir | kaynağı değiştir]
Internet Explorer (IE) web tarayıcısı, uygulamalar tarafından sıklıkla kullanılan birçok API'yi de gösterir ve bu nedenle Windows API'nin bir parçası olarak kabul edilebilir. IE, Windows 95 OSR2'den beri işletim sistemine dahil edilmiştir ve Windows 98'den beri uygulamalara web ile ilgili hizmetler sağlamıştır. Özellikle, aşağıdakileri sağlamak için kullanılır:
- Shdocvw.dll ve mshtml.dll (Microsoft Trident) içinde bulunan bir gömülebilir web tarayıcı kontrolü.
- Urlmon.dll dosyasında tutulan URL moniker hizmeti, URL'lerin çözümlenmesi için uygulamalara COM nesneleri sağlar. Uygulamalar, başkalarının kullanması için kendi URL işleyicilerini de sağlayabilir.[10]
- Sistem genelinde Proxy ayarlarını da dikkate alan bir HTTP istemci kitaplığı (wininet.dll); Ancak Microsoft, bazı uygulamalar için daha küçük ve daha uygun olan winhttp.dll adlı başka bir HTTP istemci kitaplığı ekledi.
- Çok dilli ve uluslararası metin desteğine yardımcı olan bir kütüphane (mlang.dll).
- DirectX Transform, bir dizi görüntü filtresi bileşenidir.
- XML desteği (msxml * .dll'de tutulan MSXML bileşenleri).
- Windows Adres Defterlerine erişim.
Multimedya[değiştir | kaynağı değiştir]
Klasik Windows Multimedya API winmm.dll içine yerleştirilir ve ses dosyalarını çalmak, MIDI mesajları göndermek ve almak, joysticklere erişmek ve Windows'tan MCI alt sisteminin adı verilen ve diğer tüm özelliklerini kolaylaştırmak için işlevler içerir. Multimedya Uzantıları, Windows 3.0 için ayrı olarak ve Windows 3.1x'den beri işletim sisteminin ayrılmaz bir parçası olarak bulunurlar;
Bunun dışında, Windows 95 OSR2’den bu yana geçen her Windows sürümünün bir parçası olarak Microsoft, aşağıdakileri içeren, gevşek bir şekilde ilgili grafik ve oyun hizmetleri kümesi olan DirectX API'lerini sağladı:
- Donanım hızlandırmalı 2D vektör grafikleri için Direct2D.
- Donanım hızlandırmalı 3D grafikler için Direct3D.
- Düşük seviye donanım hızlandırmalı ses kartı erişimi için DirectSound.
- Joystick (oyun çubuğu) ve gamepad gibi giriş cihazlarıyla iletişim için DirectInput.
- Çok oyunculu bir oyun altyapısı olarak DirectPlay. Bu bileşen DirectX 9'dan itibaren kullanımdan kaldırılmıştır ve Microsoft artık oyun geliştirme için kullanılmasını önermemektedir.[11]
- Eski DirectX sürümlerinde 2D grafikler için DirectDraw, artık kullanımdan kaldırıldı ve Direct2D ile değiştirildi.
- Windows 3.x sürümleri için yazılmış 16 bit oyunlarda 2D grafikler için WinG. Windows 95 sürümü ile kullanımdan kaldırıldı.
Microsoft ayrıca medya kodlama ve oynatma için birkaç API sağlar:
- Genel multimedya boru hatlarını oluşturan ve çalıştıran DirectShow. GStreamer çerçevesiyle karşılaştırılabilir ve genellikle oyun içi videolar oluşturmak ve medya oynatıcıları oluşturmak için kullanılır (Windows Media Player buna dayalıdır). DirectShow artık oyun geliştirme için önerilmemektedir.
- Media Foundation, DirectShow'un yerini alması amaçlanan daha yeni bir dijital medya API'si.
Kaynakça[değiştir | kaynağı değiştir]
- ^ https://docs.microsoft.com/en-us/windows/win32/api/
- ^ https://en.wikibooks.org/wiki/C%2B%2B_Programming/Code/API/Win32
- ^ https://users.physics.ox.ac.uk/~Steane/cpp_help/winapi_intro.htm
- ^ http://www.winprog.org/tutorial/
- ^ https://docs.microsoft.com/en-us/windows/win32/intl/unicode-in-the-windows-api
- ^ https://www.webopedia.com/TERM/A/API.html
- ^ https://stackoverflow.com/questions/2647982/why-does-the-win32-api-have-so-many-custom-types
- ^ http://dailydoseofexcel.com/archives/category/Windows-API/
- ^ https://developers.google.com/maps/documentation/javascript/maptypes
- ^ https://docs.microsoft.com/en-us/windows/win32/winprog64/getting-ready-for-64-bit-windows
- ^ https://msdn.microsoft.com/library?url=/workshop/browser/prog_browser_node_entry.asp