Programowanie Windows Win 32Win 64 API Jacek Matulewski

  • Slides: 18
Download presentation
Programowanie Windows (Win 32/Win 64 API) Jacek Matulewski 17 września 2012 (aktualizacja: 10 marca

Programowanie Windows (Win 32/Win 64 API) Jacek Matulewski 17 września 2012 (aktualizacja: 10 marca 2018) http: //www. fizyka. umk. pl/~jacek/dydaktyka/winprog/

O czym będzie ten wykład: • Tworzenie aplikacji dla systemu Windows z użyciem interfejsu

O czym będzie ten wykład: • Tworzenie aplikacji dla systemu Windows z użyciem interfejsu programisty Win 32 • 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.

O czym nie będzie: • Win 16 i Win 32 s, . NET/CLR, Win.

O czym nie będzie: • Win 16 i Win 32 s, . NET/CLR, Win. RT • 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 Win. API, niż na nowościach (np. z Windows 8) • Direct. X/Open. GL – osobny wykład

Co to jest Windows API? • Windows API = Win 32 API • API

Co to jest Windows API? • Windows API = Win 32 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)

Lista funkcji eksportowanych z DLL Listę eksportowanych funkcji możemy obejrzeć za pomocą uniwersalnego narzędzia

Lista funkcji eksportowanych z DLL Listę eksportowanych funkcji możemy obejrzeć za pomocą uniwersalnego narzędzia dumpbin z Visual C++ c: Program Files (x 86)Microsoft Visual Studio 14. 0VCbindumpbin. exe Sprawdźmy dla przykładu zawartość biblioteki kernel 32. dll dumpbin /exports C: . . Sys. WOW 64kernel 32. dll Microsoft (R) COFF/PE Dumper Version 14. 00. 23506. 0 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file c: WindowsSys. WOW 64kernel 32. dll File Type: DLL Section contains the following exports for KERNEL 32. dll 0000 744765 CE 0. 00 1 1595 characteristics time date stamp version ordinal base number of functions number of names

Lista funkcji eksportowanych z DLL Wydruk z dumpbin dla biblioteki kernel 32. dll c.

Lista funkcji eksportowanych z DLL Wydruk z dumpbin dla biblioteki kernel 32. dll c. d. dumpbin /exports C: . . Sys. WOW 64kernel 32. dll. . . ordinal hint RVA 4 5 6 7 8. . . 1595 name 0 Acquire. SRWLock. Exclusive (forwarded to NTDLL. Rtl. Acquire. SRWLock. Exclusive) 1 Acquire. SRWLock. Shared (forwarded to NTDLL. Rtl. Acquire. SRWLock. Shared) 2 000176 E 0 Activate. Act. Ctx 3 0001 EB 30 Activate. Act. Ctx. Worker 4 00042 CE 0 Add. Atom. A 63 A 00058290 time. Get. Time Summary 10000 30000 10000 60000 . data. reloc. rsrc. text

Zasadnicze biblioteki Win 32 API: • Base services (jądro) – kernel 32. dll –

Zasadnicze biblioteki Win 32 API: • Base services (jądro) – kernel 32. dll – podstawowe funkcje systemu plików – nie mylić z funkcjami z shell 32. dll, – obsługa urządzeń peryferyjnych, – wątki, – obsługa błędów – ale nie wyjątki

Zasadnicze biblioteki Win 32 API: • Advanced services – advapi 32. dll – rejestr

Zasadnicze biblioteki Win 32 API: • Advanced services – advapi 32. dll – rejestr systemu Windows (baza danych), – zamykanie i restart systemu, – usługi Windows, – obsługa kont użytkowników

Zasadnicze biblioteki Win 32 API: • Graphics Device Interface – gdi 32. dll –

Zasadnicze biblioteki Win 32 API: • Graphics Device Interface – gdi 32. 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

Zasadnicze biblioteki Win 32 API: • User Interface – user 32. dll – podstawowe

Zasadnicze biblioteki Win 32 API: • User Interface – user 32. 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 comctl 32. dll (Common Control Library), też: pasek stanu, zakładki, itp. – Nakładki: MCF, ATL, VCL (Borland), Qt, Gimp Toolkit (GTK), AWT (Java), WF (. NET)

Zasadnicze biblioteki Win 32 API: • Common Dialog Boxes Library – comdlg 32. dll

Zasadnicze biblioteki Win 32 API: • Common Dialog Boxes Library – comdlg 32. 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

Zasadnicze biblioteki Win 32 API: • Windows Shell (powłoka systemu Windows) shell 32. dll

Zasadnicze biblioteki Win 32 API: • Windows Shell (powłoka systemu Windows) shell 32. dll – wyższa warstwa API (nad jądrem i GUI), – Copy. File[Ex], Move. File itd. (kernel 32. dll) vs SHFile. Operation i IFile. Operation (od Vista) – Win. Exec (Win 16) i Create. Process (kernel 32. dll) vs Shell. Execute – Na funkcjach powłoki bazuje Eksplorator Windows i częściowo narzędzia administracyjne

Zasadnicze biblioteki Win 32 API: • Networking services – Net. BIOS = Network Basic

Zasadnicze biblioteki Win 32 API: • Networking services – Net. BIOS = Network Basic I/O System, – Win. Sock = Windows Sockets API (obsługa TCP/IP) – RPC = remote procedure call – Net. DDE, DDE = dynamic data exchange – por. też. DCOM, COM+

Zasadnicze biblioteki Win 32 API: • • Desktop Windows Manager (DWM) Windows Management Instrumentation

Zasadnicze biblioteki Win 32 API: • • Desktop Windows Manager (DWM) Windows Management Instrumentation (WMI) Windows Internet (Win. INet) Active Directory Cryptography Image Mastering API (IMAPI) Media Control Interface (MCI) i wiele, wiele innych

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

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

Zgodność wstecz • Windows 1. 01 – 450 funkcji • Windows 7 – tysiące

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

Źródła • MSDN – podstawowe źródło wiedzy: Nowy wygląd: http: //msdn. microsoft. com/enus/library/ee 663300(v=VS.

Źródła • MSDN – podstawowe źródło wiedzy: Nowy wygląd: http: //msdn. microsoft. com/enus/library/ee 663300(v=VS. 85). aspx Stary wygląd: http: //msdn. microsoft. com/enus/library/windows/desktop/hh 447209(v=vs. 85). aspx • Inne strony: EFNet #Winprog: http: //www. winprog. org/tutorial/ Adam Boduch (Delphi): http: //4 programmers. net/ Dla programistów. NET: http: //www. pinvoke. net/

Źródła • Książki: o Jeffrey Richter, Christopher Nasarre Windows via C/C++ (wydanie 5), Microsoft

Ź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