Operační systémy 2 Základy Windows API



Podobné dokumenty
Platforma x64 a přechod na 64 bitů. Aleš Keprt Univerzita Palackého, Olomouc

ČÁST 1. Základy 32bitového programování ve Windows

IPA - Lab.1 Úvod do programování v ASM

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Ope p r e a r čn č í s ys y té t m é y y Windo d w o s Stručný přehled

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Windows 2008 R2 - úvod. Lumír Návrat

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

NAS 323 NAS jako VPN Server

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Cvičení č. 5. Programování ve Windows program stopky 3 Body

vjj 1. Windows programming. krátká nahlédnutí za oponu

Konfigurace Windows 7

IUJCE 07/08 Přednáška č. 1

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Ošetřování chyb v programech

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Algoritmy I. Cvičení č.1 ALGI 2015/16

Desatero, aneb nejčastější chyby v programování

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

10 Práce s řetězci - pokračování

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

přetížení operátorů (o)

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

TGMmini. začínáme. komplexní dodávky a zprovoznění servopohonů dodávky řídicích systémů

MS WINDOWS I. řada operačních systémů firmy Microsoft *1985 -? Historie. Práce ve Windows XP. Architektura. Instalace. Spouštění

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ

Komprimace/Dekomprimace

František Hudek. únor ročník

Projekt do předmětu PAS. Textový editor

Objektově orientované programování

Prostředí pro výuku vývoje PCI ovladačů do operačního systému GNU/Linux

MFC: Windows CE compatible

PB071 Programování v jazyce C

GUI grafických aplikací GUI pro Othello

7. Datové typy v Javě

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

PROGRAMOVÁNÍ V C++ CVIČENÍ

monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura

Téma 3: Správa uživatelského přístupu a zabezpečení I. Téma 3: Správa uživatelského přístupu a zabezpečení I

Novinky ve Visual Studio Tomáš Kroupa

Algoritmizace a programování

Téma 11: Instalace a práva programů. Téma 11: Instalace a práva programů

Vývoj OS Windows Mobile. Ing. Jiří Šilhán

Program Computer Setup

Windows a real-time. Windows Embedded

C2115 Praktický úvod do superpočítání

Bezpečn č os o t t dat

Znaky. IAJCE Přednáška č. 10. každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak <->

Operační systémy. Cvičení 3: Programování v C pod Unixem

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Práce se soubory. Úvod do programování 2 Tomáš Kühr

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Assembler - 5.část. poslední změna této stránky: Zpět

DUM 11 téma: Úvod do příkazové řádky

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Základy programování (IZP)

IT ESS II. 1. Operating Systém Fundamentals

ADT/ADS = abstraktní datové typy / struktury

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Práce se soubory. Základy programování 2 Tomáš Kühr

Nápověda k aplikaci EA Script Engine

Základy programování (IZP)

Vstup a výstup datové proudy v C

11. Přehled prog. jazyků

Instalační manuál. HelpDesk

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

9. Sítě MS Windows. Distribuce Windows. Obchodní označení. Jednoduchý OS pro osobní počítače, pouze FAT, základní podpora peer to peer sítí,

Použití aplikace OmniPass a čtečky otisku prstů

Komunikační sokety. teorie a implementace v C#, C++ a Javě. Aleš Keprt Katedra informatiky UP duben 2006, revize květen 2007

Seznámení s prostředím dot.net Framework

Amos Software Jednoznakové předložky. Co je modul Jednoznakové předložky. Instalace. Postup pro operační systém Windows:

Zadání soutěžních úloh

Návod na práci s přípravkem a programem uscope na cvičeních

Práce s binárními soubory. Základy programování 2 Tomáš Kühr

APS 400 nadministrator

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

Kerio IMAP Migration Tool

Téma 8: Konfigurace počítačů se systémem Windows 7 IV

Popis programu: Popis přípon důležitých souborů: *.qpf projektový soubor Quartusu

Identifikátor materiálu: ICT-1-17

Jazyk C++, některá rozšíření oproti C

Téma 1 - řešení s obrázky

Úvod do Operačních Systémů

Dálkové ovládání HP Mobile Remote Control (pouze u vybraných modelů) Uživatelská příručka

Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework

FIREBIRD relační databázový systém. Tomáš Svoboda

Procesy a vlákna (Processes and Threads)

Windows - základy. Hlavním vypínačem na základní jednotce. K datům uloženým do výchozí složky.

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Obsah. Úvod 9 Komu je kniha určena 11 Konvence použité v knize 11

Transkript:

Operační systémy 2 Základy Windows API Aleš Keprt Univerzita Palackého říjen 2008, říjen 2010

Dnešní program Visual Studio 2005/2008 Základy programování ve Windows Přesněji Win32 API či Windows API Dnešní programování: Práce s textem

Visual Studio 2005/2008 Základní jazyk programování ve Windows: C++ Nejsou tam téměř objekty, takže funguje i C Základní nástroj: Visual Studio 2005/2008 File / New / Project / C++ / Win32 Win32 Project / Application Standardní aplikace s grafickým prostředím Event-driven (programování s událostmi) Toto ve cvičení OS2 používat nebudeme Win32 Console Project / Application Konzolová aplikace (jen text, tj. bez grafiky) Klasický (starobylý) styl programování Toto budeme používat

Application settings Create directory for solution Toto vypněte (jinak by se vytvořil adresář navíc) Precompiled header Zapne používání stdafx.h Zrychlí kompilaci, ale je to Microsoft specific Toto zapněte a do stdafx.h dopište #define WIN32_LEAN_AND_MEAN #include <windows.h> Empty project Vytvoří úplně prázdný projekt (bez souborů) Sami pak musíte napsat main(), apod.

Literatura Programování ve Windows dnes už jen v C# Pro jazyk C++ jsou prakticky jen staré knihy Doporučená četba: Petzold: Programming Windows. (5.vydání) Microsoft Press, 1998. Jeffrey Richter: Programming Applications for Microsoft Windows. (4.vydání) Microsoft Press, 1999. Mark Russinovich, David Solomon: Microsoft Windows Internals. (4.vydání) Microsoft Press, 2004.

Některé rozdíly Win NT a Win 95 NT podporuje více procesorů, 95 jen jeden NT podporuje bezpečnost, 95 ne NT je plně 32bitový (či 64bitový), 95 je 16bitový NT je plně reentrantní, 95 používá system lock NT pouští 16bitový kód v odděleném prostoru, 95 jej pouští v globálním prostoru NT sdílí paměť jen mezi určenými procesy, 95 sdílí paměť mezi všemi procesy NT chrání jádro systému proti zápisu, 95 ne NT má jen emulátor MS-DOSu, 95 spouští programy pro MS-DOS přímo

Stručně o Windows Vista UAC UAC = User Account Control Česky řízení uživatelských účtů Procesy běží s oprávněním skupiny Users I když jste administrátoři, nemáte vyšší práva Staré aplikace běží ve virtuálním režimu Přesměrování c:\program Files a c:\windows Přesměrování větví registru HKEY_ROOT a KHEY_LOCAL_MACHINE Nové aplikace jsou označeny manifestem Manifest určuje požadovanou úroveň pro běh Zároveň se tím vypne virtualizace

Texty ve Windows Typ char = 1 bajt MBCS (ANSI/OEM) České znaky používají Windows 1250 MBCS může být i vícebajtové (jako UTF-8) Typ wchar_t = 2 bajty DBCS (Unicode) Ve Windows platí, že wchar_t je v kódu UTF-16 Programy lze v C++ psát tak, aby šly přeložit do MBCS i DBCS (1 zdroják 2 ekzáče )

Jak přežít wchar_t První možnost: vypnout jej Project Properties / Character Set Zvolíme MBCS (multi-byte character set) Druhá možnost: nechat zapnuté a používat Třetí možnost: psát univerzální kód

Univerzální kód Všechny funkce pracující s textem mají vždy 2 verze (lišící se názvem) plus makro Makro vede na jednu z těch funkcí, dle výběru v Project Options Všechna tato makra jsou v souboru tchar.h char wchar_t _TCHAR main wmain _tmain printf wprintf _tprintf strcpy wcscpy _tcscpy strcmp wcscmp _tcscmp

Univerzální kód a API Windows API je univerzální vždy Všechny dotčené funkce mají: MBCS verzi s A na konci DBCS verzi s W na konci Makro bez přípony Příklad: CreateFileA, CreateFileW, CreateFile Na toto pozor! Při chybě debugger píše skutečné jméno funkce, ne jméno makra!!

Podrobnosti k printf Formátovací řetězce %s a %S jsou opačné: printf : %s je char*, %S je wchar_t* wprintf: %s je wchar_t*, %S je char* Výstup do konzoly je vždy v kódu OEM OEM = kódování MS-DOSu (tj. CP852) Otravný přežitek z minulosti Konverze tstring OEM: CharToOem() OemToChar()

Systém handlů Libovolný objekt se ve Win32 identifikuje pomocí tzv. hendlu (anglicky handle rukojeť/držátko) Handle je něco jako this pointer na nějaký objekt Win32 API je jakoby objektově orientované, ale je slabě typované Každý handle je v C++ ve skutečnosti typu void* Kromě handlů potřebujeme ještě security descriptor většinou se ale s bezpečností neoperuje, takže dáváme NULL a máme výchozí chování (jako ve Windows 95) Na závěr handly uvolníte pomocí CloseHandle()

Další datové typy Windows API Windows API má vlastní datové typy tj. nepoužívá jména typů jazyka C Jsou to všechno zkratky (nutno naučit!) Příklady: LPSTR = (long) pointer to a string každý pointer začíná LP, takže toto je prostě char* LPCTSTR = (long) pointer to a constrant tstring toto je jednoduše const _TCHAR* HANDLE je obecný hendl HWND = handle to a window INT_PTR = integer for pointer precision toto je integer o velikosti pointeru

Bezpečné CRT ve Visual Studiu VS2005/2008 používá bezpečnou CRT knihovnu Je to rozšíření ANSI C, čeká se na standardizaci Týká se to funkcí, kde se pracuje s bufferem Čtěte v MSDN: security-enhanced CRT Funkce obvykle mají: Původní funkce se nemění Nová bezpečná funkce má ma konci názvu _s Navíc je délka bufferu jako parametr Při použití char* + lze délku vynechat př: strcpy_s(do_pole,odkud); nebo strcpy_s(do_pointeru,odkud,délka);

Úlohy pro cvičení 1. Načtěte text z klávesnice, uložte do souboru ve Windows 1250 2. Načtěte soubor (viz výše) a vypište na obrazovku 3. fopen umí pracovat i s unicode vyzkoušíme Načtěte a zobrazte Unicode soubor na obrazovce. (Soubor si vytvořte v Notepadu.) Poznámka: Nejprve si přečtěte fopen v MSDN. Kompilaci si pochopitelně přepněte do MBCS, tj. bez unicode. Konzola zobrazí jen češtinu, ale cizí unicode znaky ne (omezení by design).

Mgr. Aleš Keprt, Ph.D., 2006,2007,2008,2010 Vytvořeno pro potřeby výuky na UP Olomouc. Tento text není určen pro samostudium, ale jen jako vodítko pro přednášku, takže jeho obsah se může čtenáři zdát stručný, nekompletní či možná i chybný. Použití je povoleno dle vlastní libosti, ale jen na vlastní nebezpečí. V případě dalšího šíření je NUTNO uvádět původního autora a odkaz na původní dokument. Komentáře můžete posílat e-mailem autorovi (adresu najdete pomocí Googlu).