• Nie Znaleziono Wyników

Czym jest Windows Application Programmer Interface (WinAPI)?

N/A
N/A
Protected

Academic year: 2021

Share "Czym jest Windows Application Programmer Interface (WinAPI)?"

Copied!
18
0
0

Pełen tekst

(1)

Programowanie Windows (Win32/Win64 API)

Jacek Matulewski

17 września 2012

(aktualizacja: 10 marca 2018)

http://www.fizyka.umk.pl/~jacek/dydaktyka/winprog/

(2)

O czym będzie ten wykład:

• Tworzenie aplikacji dla systemu Windows z użyciem interfejsu programisty Win32

• Aplikacje z graficznym interfejsem

użytkownika (GUI). Przede wszystkim MFC, mniej VCL.

• Powłoka systemu Windows (Windows Shell).

• Podstawy programowania sieciowego.

• Wszystkich funkcji jest tysiące. My wycinek.

(3)

O czym nie będzie:

• Win16 i Win32s, .NET/CLR, WinRT

• Zakładam znajomość podstaw C/C++

(if, for, while, switch).

Jeżeli trzeba powtórzę wskaźniki i klasy.

• Zakładam znajomość podstaw ang. - MSDN

• Skupię się raczej na rdzeniu WinAPI, niż na nowościach (np. z Windows 8)

• DirectX/OpenGL – osobny wykład

(4)

Co to jest Windows API?

• Windows API = WinAPI = Win32 API

• API = application programming interface

• Interfejs programistyczny pozwalający na dostęp do funkcjonalności Windows z

poziomu kodu. Zbiór bibliotek DLL z eksportowanymi funkcjami.

• Dostęp do niemal wszystkich funkcjonalności Windows (częściowo poza bezpieczeństwem)

• Windows SDK (m.in. nagłówki C do DLL)

(5)

Lista funkcji eksportowanych z DLL

Listę eksportowanych funkcji możemy obejrzeć za pomocą uniwersalnego narzędzia dumpbin z Visual C++

c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\dumpbin.exe

Sprawdźmy dla przykładu zawartość biblioteki kernel32.dll

dumpbin /exports C:\..\SysWOW64\kernel32.dll

Microsoft (R) COFF/PE Dumper Version 14.00.23506.0

Copyright (C) Microsoft Corporation. All rights reserved.

Dump of file c:\Windows\SysWOW64\kernel32.dll File Type: DLL

Section contains the following exports for KERNEL32.dll

00000000 characteristics 744765CE time date stamp 0.00 version

1 ordinal base

1595 number of functions 1595 number of names

(6)

Lista funkcji eksportowanych z DLL

Wydruk z dumpbin dla biblioteki kernel32.dll c.d.

dumpbin /exports C:\..\SysWOW64\kernel32.dll

...

ordinal hint RVA name

4 0 AcquireSRWLockExclusive (forwarded to NTDLL.RtlAcquireSRWLockExclusive) 5 1 AcquireSRWLockShared (forwarded to NTDLL.RtlAcquireSRWLockShared)

6 2 000176E0 ActivateActCtx

7 3 0001EB30 ActivateActCtxWorker 8 4 00042CE0 AddAtomA

...

1595 63A 00058290 timeGetTime Summary

10000 .data 30000 .rdata 10000 .reloc 10000 .rsrc 60000 .text

(7)

Zasadnicze biblioteki Win32 API:

• Base services (jądro) – kernel32.dll

– podstawowe funkcje systemu plików – nie mylić z funkcjami z shell32.dll,

– obsługa urządzeń peryferyjnych, – wątki,

– obsługa błędów – ale nie wyjątki

(8)

Zasadnicze biblioteki Win32 API:

• Advanced services – advapi32.dll

– rejestr systemu Windows (baza danych), – zamykanie i restart systemu,

– usługi Windows,

– obsługa kont użytkowników

(9)

Zasadnicze biblioteki Win32 API:

• Graphics Device Interface – gdi32.dll

– warstwa abstrakcyjna dla urządzeń wyjścia korzystających z grafiki

– obsługa urządzeń wyjścia m.in. monitor, drukarka – kontakt ze sterownikami urządzeń GDI,

– obsługa czcionek i palet kolorów,

– rysowanie okien, kontrolek, menu itp., – Od Windows XP: GDI+ (C++)

– Windows Vista/7: Windows Display Driver Model

(10)

Zasadnicze biblioteki Win32 API:

• User Interface – user32.dll

– podstawowe kontrolki Windows tworzące GUI:

przyciski, paski przewijania, pola wyboru itp.

– obsługa zarówno wejścia (mysz, klawiatura), jak i wyjścia (zmiana wyglądu kontrolki)

– Od Windows XP obsługa kontrolek zgromadzona jest w bibliotece comctl32.dll (Common Control Library), też: pasek stanu, zakładki, itp.

– Nakładki: MCF, ATL, VCL (Borland), Qt,

Gimp Toolkit (GTK), AWT (Java), WF (.NET)

(11)

Zasadnicze biblioteki Win32 API:

• Common Dialog Boxes Library – comdlg32.dll

– okna dialogowe udostępniane przez Windows:

1) wczytywanie i zapisywanie pliku, 2) wybór czcionki, wybór koloru,

3) przeszukiwanie i zastępowanie, 4) okna związane z drukowaniem

(12)

Zasadnicze biblioteki Win32 API:

• Windows Shell (powłoka systemu Windows) shell32.dll

– wyższa warstwa API (nad jądrem i GUI),

– CopyFile[Ex], MoveFile itd. (kernel32.dll) vs SHFileOperation i IFileOperation (od Vista)

– WinExec (Win16) i CreateProcess (kernel32.dll) vs ShellExecute

– Na funkcjach powłoki bazuje Eksplorator

Windows i częściowo narzędzia administracyjne

(13)

Zasadnicze biblioteki Win32 API:

• Networking services

– NetBIOS = Network Basic I/O System,

– WinSock = Windows Sockets API (obsługa TCP/IP) – RPC = remote procedure call

– NetDDE, DDE = dynamic data exchange – por. też. DCOM, COM+

(14)

Zasadnicze biblioteki Win32 API:

• Desktop Windows Manager (DWM)

• Windows Management Instrumentation (WMI)

• Windows Internet (WinINet)

• Active Directory

• Cryptography

• Image Mastering API (IMAPI)

• Media Control Interface (MCI)

• i wiele, wiele, wiele innych

(15)

Historia

Wikipedia: https://en.wikipedia.org/wiki/Microsoft_Windows#/media/File:Windows_Updated_Family_Tree.png

(16)

Zgodność wstecz

• Windows 1.01 – 450 funkcji

• Windows 7 – tysiące funkcji!

(ale te 450 nadal jest)

• Windows 8 – pierwsze poważne odejścia od zgodności

• Windows 10 – ostatnia wersja

(17)

Źródła

• MSDN – podstawowe źródło wiedzy:

Nowy wygląd: http://msdn.microsoft.com/en- us/library/ee663300(v=VS.85).aspx

Stary wygląd: http://msdn.microsoft.com/en-

us/library/windows/desktop/hh447209(v=vs.85).aspx

• Inne strony:

EFNet #Winprog: http://www.winprog.org/tutorial/

Adam Boduch (Delphi): http://4programmers.net/

Dla programistów .NET: http://www.pinvoke.net/

(18)

Źródła

• Książki:

o Jeffrey Richter, Christopher Nasarre Windows via C/C++ (wydanie 5), Microsoft Press, Warszawa 2009 o Johnson M. Hart

Programowanie w systemie Windows (wydanie 4), Helion 2010

o Jacek Matulewski, Maciej Pakulski, Dawid Borycki, Bartosz Biały, Piotr Pepłowski, Michał Matuszak, Daniel Szlag, Dawid Urbański

Visual C++. Gotowe rozwiązania dla programistów Windows, Helion 2010

Cytaty

Powiązane dokumenty

C hoć termin „stabilność polityczna” jest bardzo często stosowany dla oddania kondycji państw, zarówno przez badaczy polityki, jak i rozmaitych analityków, to

Wartości Null oraz typy danych dopuszczające stosowanie wartości

Właściwości typów danych dopuszczających stosowanie wartości

Wartości null oraz typy danych dopuszczające stosowanie wartości

W programie może być zdefiniowanych więcej funkcji, ale zawsze musi istnieć funkcja o nazwie main(), gdyż pełni ona szczególna rolę w programie - od początku tej

W programie może być zdefiniowanych więcej funkcji, ale zawsze musi istnieć funkcja o nazwie main(), gdyż pełni ona szczególna rolę w programie - od początku tej

Struktura programu z kilkoma funkcjami, typy instrukcji w języku C Omawiany poprzednio program, wyświetlający tekst Witaj swiecie, składał się tylko z jednej funkcji

Kliknij PPM na nazwę projektu > Set as StartUp Project (aktualnie domyślny projekt zostanie wytłuszczony).. FORMATOWANIE KODU Edit > Advanced