úvod vjj 1

Podobné dokumenty
úvod vjj 1

operační systém vjj 1

PV239/WP. Vývoj univerzálních Windows Store aplikací. Mgr. David Gešvindr MCSD: Windows Store MCSE: Data Platform MCT MSP

Programy pro OS Windows

GUI grafických aplikací GUI pro Othello

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

Windows System Internals

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

a co je operační systém?

POPIS TUN TAP. Vysvetlivky: Modre - překlad Cervene - nejasnosti Zelene -poznamky. (Chci si ujasnit o kterem bloku z toho schematu se mluvi.

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

Vývoj univerzálních aplikací pro Windows 10. Mgr. David Gešvindr MCSD: Windows Store MCSE: Data Platform MCT MSP

11 Návrh programového vybavení

SAP a SUSE - dokonalá symbióza s open source. Martin Zikmund Technical Account Manager

Operační systémy. Tomáš Vojnar IOS 2009/2010. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Efektivní provoz koncových stanic

Technologie, vlastnosti, uplatnění. Martin Suchan

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

Office 2007 Styles Autor: Jakub Oppelt Vedoucí práce: Ing. Václav Novák, CSc. Školní rok:

Firemní strategie pro správu mobilních zařízení, bezpečný přístup a ochranu informací. Praha 15. dubna 2015

vjj 1. Priority. Dispatcher

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Windows na co se soustředit

Von Neumannovo schéma

ArcGIS for Server. V oblasti správy, vizualizace a zpracování prostorových dat nabízí ArcGIS for Server tyto možnosti:

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

XNA Game Studio 3.1. Tomáš Herceg Microsoft Most Valuable Professional Microsoft Student Partner

Ovladače pro Windows. Ovladače Windows A4M38KRP. Str. 1

O jedné metodě migrace velkých objemů dat aneb cesta ke snižování nákladů

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í

MKZ III. Windows CE architektura. Procesy, vlákna, plánování Správa paměti GWES Souborový systém

Microsoft Lync WEB meeting

2. Entity, Architecture, Process

Lukáš Kubis. MSP pro VŠB-TU Ostrava

Jakub Čermák Microsoft Student Partner

Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49

Metody připojování periferií

Programování ve Windows Dynamické knihovny. Andrea Číková Martin Osovský

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Klíčové pojmy: Události, handlery, třída Graphics, pera, stětce, kreslení vyplněných a nevyplněných objektů.

Základní informace. Operační systém (OS)

Vladimír

Přednáška 11. Historie MS Windows. Architektura Windows XP. Grafické a znakové rozhraní. Úlohy, procesy a vlákna.

Windows a real-time. Windows Embedded

Procesy a vlákna (Processes and Threads)

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

GUI ve Win32API a MFC I KIV / WIN

IT ESS II. 1. Operating Systém Fundamentals

Hodnocení bezpečnosti firewallů pro systém Windows 7. Garion, Warlock

historie vjj 1

Zabezpečení infrastruktury

Proč, kde a jak se mobilní IT může podepsat na úspěchu Vašeho podnikání?

Úvod do GPGPU J. Sloup, I. Šimeček

ADC Young Creative. Brief MOBIL.CZ

OS řady Microsoft Windows

Operační systémy. Tomáš Hudec.

ArcGIS Server 10. Řešení pro sdílení geodat

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

Ukazky Zdroje:... 17

Jak připravit IBM System x server pro zákazníka

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

ÚVOD DO OPERAČNÍCH SYSTÉMŮ

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Produktové portfolio

Nové vývojové nástroje i5/os Rational Developer for System i V7.1

Programové vybavení počítače

CZ.1.07/1.5.00/

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

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Administrace OS Windows

SÁM O SOBĚ DOKÁŽE POČÍTAČ DĚLAT JEN O MÁLO VÍC NEŽ TO, ŽE PO ZAPNUTÍ, PODOBNĚ JAKO KOJENEC PO PROBUZENÍ, CHCE JÍST.

ROLZ-2. Portable AV/Conference Center. Assembly Instructions

Nová éra diskových polí IBM Enterprise diskové pole s nízkým TCO! Simon Podepřel, Storage Sales

Virtualizace desktopu virtuální realita, nebo skutečnost?

BRNO UNIVERSITY OF TECHNOLOGY FAKULTA PODNIKATELSKÁ ÚSTAV INFORMATIKY FACULTY OF BUSINESS AND MANAGEMENT INSTITUTE OF INFORMATICS

Komponenty v.net. Obsah přednášky

konec šedesátých let vyvinut ze systému Multics původní účel systém pro zpracování textů autoři: Ken Thompson a Denis Ritchie systém pojmnoval Brian

Notes and Domino Social Edition 9. David Marko, TCL DigiTrade

IBM Connections pro firmy s Lotus Notes/Domino. Petr Kunc

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

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

Komentáře CISO týkající se ochrany dat

funkční na dual-sim telefonech možnost přesměrovat příchozí hovory možnost nastavení více telefonních čísel pro případ, že je jedno nedostupné

Ako hybridný cloud pomáha v praxi poskytovať spoľahlivé a bezpečné služby

Microsoft Office 365. SharePoint Online novinky a administrace

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

David Bednárek Jakub Yaghob Filip Zavoral.

SenseLab. z / from CeMaS. Otevřené sledování senzorů, ovládání zařízení, nahrávání a přehrávání ve Vaší laboratoři

CASE nástroje. Jaroslav Žáček

Ostrava. 16. dubna 2014

Virtualizace na Linuxu

OTRS Free Open Source nástroj pro Service Management

Servery s Xeon E3-1200v2 Nové servery s procesory IvyBridge Inte Xeon E3-1200v2

kupi.cz Michal Mikuš

Domino 10 nové komponenty a související témata (node.js, ES )

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

produktů. produkty: AutoCAD Mechanical Showcase Autodesk Autodesk Designer SketchBook Autodesk Mudbox Vault Autodesk Ultimate Intel Xeon Intel Core

Mobilní platforma. Windows Phone 8

Transkript:

úvod 17.10.2017 vjj 1

17.10.2017 vjj 2 programování algoritmus program -> operační systém API funkce služby OS GUI UI/UX : program -> uživatel

17.10.2017 vjj 3 programování program -> operační systém API funkce služby OS GUI UI/UX : program -> uživatel

17.10.2017 vjj 4 dva důvody pro GUI appearance fashion design Aero visual navigation convenience undemanding on user's memory skeuomorphic vs. flat

17.10.2017 vjj 6 GUI komunikace s uživatelem ale komu je vaše aplikace vlastně určena?

17.10.2017 vjj 7 Programování pro Windows nové vs. staré konzument vs. profesionál

17.10.2017 vjj 8 Windows programming contemporary vs hereditary simple user vs demanding user

17.10.2017 vjj 9 Windows programming phone/tablet vs desktop

17.10.2017 vjj 10 Windows programming Tiles vs Windows the question of taste, fashion, vogue, usability

UI 17.10.2017 vjj 11

17.10.2017 vjj 12 Windows programming 2012 vs 2000 vs 1990

17.10.2017 vjj 13 Windows programming Metro vs.net vs Win32 API

17.10.2017 vjj 14 Windows programming Metro vs.net + Win32 API.NET WPF XAML

17.10.2017 vjj 15 Windows programming simplified vs unlimited Silverlight LightSwitch Windows Phone Windows 8.x/10 UWP WPF + Win32

17.10.2017 vjj 16 Windows programming simplified vs unlimited restricted strengthen Microsoft GUI security privacy full vulnarable administrator

Windows 10 vs Windows 7 17.10.2017 vjj 17

17.10.2017 vjj 18 hodnocení OS funkčnost, implementace vs UI / UX

17.10.2017 vjj 19 hodnocení OS funkčnost, implementace + UI / UX

17.10.2017 vjj 24 programming Windows 8 ke kořenům UWP

17.10.17 vjj 25 Windows 8 Steven Sinofsky - former President of the Windows and Windows Live Division HTML 5 JavaScript WinRT Runtime (new Windows native runtime)

17.10.17 vjj 26 Windows 8 Steven Sinofsky - former President of the Windows and Windows Live Division HTML 5 JavaScript C# XAML WinRT Runtime (new Windows native runtime)

17.10.17 vjj 27 Windows 8 Steven Sinofsky - former President of the Windows and Windows Live Division HTML 5 JavaScript C# XAML C++ COM DirectX WinRT Runtime (new Windows native runtime)

17.10.17 vjj 28 Windows 8 C# XAML HTML 5 JavaScript C++ WinRT Runtime COM DirectX Win32 API

17.10.17 vjj 29 Windows runtimes C, C++, ASM Visual Basic MFC Borland Pascal for Windows -> Delphi C# Visual Basic.NET F# VS visual editor Metro DLLs: VB runtime MFC (AFX) runtime Pascal/ Delphi runtime CLR = Common Language Runtime LightSwitch runtime "WinRT" "Core" "OneCore" UWP runtime Win32 API aplikace Win32 API funkce (in DLLs, stubs to Kernel functions) Kernel (Native) funkce

17.10.17 vjj 30 Windows runtimes Windows 8.x/10 - a simplistic view Metro UWP "Core" runtime

17.10.2017 vjj 31 Metro apps.net program dll: "OneCore" runtime hub Win32 API application w/fibres dll: CLR, WPF hub Win32 API application w/threads Subsystem DLLs: Kernel32.dll, User32.dll, GDI32.dll, Advapi32.dll, OLE32.dll SysCall Ntdll.dll Ntoskrnl.exe System service dispatcher lib. implementation Win32k.sys Windowing and graphics Win32, User32, GDI32 Executive Kernel lib. implementation Drivers Hal.dll Hardware Abstraction Layer (HAL) Graphic device drivers

.NET 17.10.2017 vjj 32

17.10.2017 vjj 34 tailored.net name origin: Microsoft's initiative to take over the Internet NGWS Next Generation Windows Services full.net 4.7 (4.6.2, 4.6.1, 4.6, 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0) WPF, XAML tailored Silverlight (.NET tailored for web) Scott Barnes (former.net Product Manager, disliked by Sinofsky): disaster that gave birth to the Windows 8?!?! Windows Phone (.NET tailored for smartphone) - smartphone market 30% -> 2% WinRT (.NET tailored for tablet) -> "Core, UWP WinRT developers: that's not a.net at all (another runtime - apps are not "managed", they are Win32 API / COM) WinRT developers out of record: modified/rewritten Silverlight Scott Barnes: WPF and Silverlight unification?!?! purpose: HTML 5 a IE inconsistent changes in architecture throughout the entire process of development smaller currently than the Windows Phone one the enterprise level stuff is not covered

.NET 17.10.2017 vjj 35

17.10.2017 vjj 37 desktop vs mobile Windows 3.1 Windows 95 Windows XP Vista / Windows 7 Windows Mobile Windows Phone Windows 8 Windows 10

17.10.2017 vjj 73 Windows 8 designed for tablets only depricated Retro UI

17.10.2017 vjj 74 Windows 8.1 designed for tablets only depricated Retro UI

17.10.2017 vjj 75 Windows 9 skipped

17.10.2017 vjj 76 Windows 10 designed for WinPhones - depricated? Retro UI

17.10.2017 vjj 77 big leap or hollow promises Windows 10 "our greatest enterprise platform ever" "it was such a substantial leap, that the company decided it would be best to skip over Windows 9" Terry Myerson, Microsoft's head of operating systems - on a press event in San Francisco, September 30, 2014 deteriorated retro 2D flat appearance - reduction in visual navigation poor mouse+keyboard support "Core" (taylored) runtime with reduced multitasking

17.10.2017 vjj 81 dilemma SW developer

17.10.2017 vjj 82 platform Android 40 % Windows 36 % ios 13 % OS X 5 % Linux 0.75 % http://gs.statcounter.com/ https://netmarketshare.com/ desktop: Windows 91%

17.10.17 vjj 84 Win32 API system.net runtime OneCore runtime

17.10.2017 vjj 85 Windows OneCore Windows OneCore is a platform for any device phone, tablet, desktop, or IoT. Windows 10 provides a set of API and DDI interfaces that are common to multiple editions of Windows 10. This set of interfaces is called OneCore. With OneCore, you can also be assured that drivers and apps that are created using OneCore interfaces will run on multiple devices.

17.10.17 vjj 86.NET P/Invoke P/Invoke = Platform Invocation Services using System.Runtime.InteropServices; [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmEnableBlurBehindWindow ( IntPtr hwnd, DWM_BLURBEHIND pblurbehind );

17.10.17 vjj 87 pro konkrétní okno většina zpráv pro konkrétní vlákno PostThreadMessage (... PostMessage (NULL,... Win32 API - zprávy pro konkrétní proces WM_QUIT, PostQuitMessage (... GetMessage vrátí FALSE obecné HWND_BROADCAST všem top-level oknům

Uživatel (mouse, keyboard) 17.10.17 vjj 88

17.10.17 vjj 89 Uživatel (mouse, keyboard) hardware interrupt DRIVER

17.10.17 vjj 90 Uživatel (mouse, keyboard) hardware interrupt DRIVER System message queue

17.10.17 vjj 91 Uživatel (mouse, keyboard) Fronta zpráv hardware interrupt DRIVER System message queue RIT Raw Input Thread Fronta zpráv

17.10.2017 vjj 92 fronta zpráv každé forgroundové vlákno (alespoň jednou vytvořilo nové okno) funkce tohoto vlákna musí (!) umět vybírat zprávy z fronty (nikdo jiný to za ní neudělá) a zajistit jejich zpracování (?)

17.10.17 vjj 93 fronta zpráv fronta zpráv poslaných pomocí SendMessage z jiných vláken (GetMessage takové zprávy nevrací, ale rovnou, tj. ještě před návratem, sama volá příslušné Windows procedury) fronta zpráv poslaných pomocí PostMessage příznak WM_QUIT fronta HW zpráv (od uživatele) WM_MOUSEMOVE, WM_LBUTTONDOWN,... max 1 kumulativní zpráva WM_PAINT WM_TIMER

17.10.17 vjj 94 stav fronty zpráv GetQueueStatus (QS_flag) ; QS_SENDMESSAGE QS_POSTMESSAGE QS_QUIT QS_INPUT ( = QS_MOUSE QS_KEY ) QS_PAINT QS_TIMER

17.10.17 vjj 95 zprávy ve frontě typedef struct { HWND hwnd ; // identifikace cílového okna UINT message ; // vlastní zpráva - celočíselná konstanta WPARAM wparam ; // význam parametru závisí na typu zprávy LPARAM lparam ; // dtto DWORD time ; // čas (milisek.) zařazení zprávy do fronty POINT pt ; // poloha (souřadnice) kursoru } MSG ;

17.10.17 vjj 96 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER System message queue RIT Raw Input Thread Fronta zpráv

17.10.17 vjj 97 main (... ) { klasická struktura programu // inicializace // načtení vstupních dat // výpočet // výstup }

17.10.17 vjj 98 struktura Win32 API programu WinMain (... ) {... while (GetMessage ( &Msg,... ) ) DispatchMessage (&Msg,... ) ; } mywindowproc ( msg,... ) { switch (msg) { case WM_CREATE:... ; case WM_PAINT:... ; case WM_COMMAND:... ; case WM_CLOSE:... ; case WM_DESTROY:... ; } }

17.10.17 vjj 99 Výběr zpráv z fronty 1/2 while (GetMessage (&Msg, NULL, 0, 0)) { TranslateMessage (&Msg) ; DispatchMessage (&Msg) ; } GetMessage( &Msg, hwnd, MsgFilterMin, MsgFilterMax) ;

17.10.17 vjj 100 Výběr zpráv z fronty 2/2 PeekMessage (&Msg, hwnd, MsgFilterMin, MsgFilterMax, PM_...) ; PM_REMOVE PM_NOREMOVE (implementace GetMessage) PM_NOYIELD jen kvůli kompatibilitě

17.10.17 vjj 101 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER DispatchMessage System message queue RIT Raw Input Thread Fronta zpráv

17.10.17 vjj 102 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER DispatchMessage System message queue RIT Raw Input Thread WindowProc Fronta zpráv

17.10.17 vjj 103 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv

17.10.17 vjj 104 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv

17.10.17 vjj 105 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv

17.10.17 vjj 106 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv

17.10.17 vjj 107 posílání zpráv 1/2 asynchronní zpracování - zařazení zprávy do fronty bool PostMessage (HWND hwindow, UINT Message, WPARAM wparam, LPARAM lparam) ; hwindow = HWND_BROADCAST to all top-level windows (včetně invisible, disabled, pop-up) hwindow = 0 PostThreadMessage (vlastnímu) vláknu bool PostThreadMessage (DWORD idthread, UINT Message, WPARAM wparam, LPARAM lparam) ;

17.10.17 vjj 108 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER PostMessage DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv

17.10.17 vjj 109 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER PostMessage DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv

17.10.17 vjj 110 posílání zpráv 2/2 požadavek na synchronní zpracování zprávy - volání podprogramu LRESULT SendMessage (HWND hwindow, MSG Message, WPARAM wparam, LPARAM lparam) ; vlastní okno: cizí okno: přímé volání příslušné Windows procedury wait přidání zprávy na "začátek" fronty

17.10.17 vjj 111 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER PostMessage DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv SendMessage

17.10.17 vjj 112 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER PostMessage DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc WindowProc Fronta zpráv SendMessage

17.10.17 vjj 113 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER PostMessage DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc WindowProc Fronta zpráv SendMessage

17.10.2017 vjj 115 Windows messages Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER PostMessage DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv SendMessage

17.10.17 vjj 116 struktura programu WinMain (... ) {... while (GetMessage ( &Msg,... ) ) DispatchMessage (&Msg,... ) ; } mywindowproc1 ( msg,... ) { zpracování zpráv pro první typ mých oken } mywindowproc2 ( msg,... ) { zpracování zpráv pro druhý typ mých oken }

17.10.17 vjj 117 Zpracování zpráv switch (msg) { case WM_CREATE : inicializace instance okna; return 0 ; case WM_PAINT : BeginPaint (...) ;... EndPaint (...) ; return 0 ; case WM_CLOSE : case WM_DESTROY : ověření úmyslu zavřít okno (skončit aplikaci) (programátor nevěří, že uživatel chce to, co si vybral, viz výtah fy Sirius cybernetics) úklid; DestroyWindow (...) ; return 0 ; destrukce instance okna; pokud má skončit celá aplikace, tak i PostQuitMessage (0) ; return 0 ; default : return DefWindowProc (hwin, msg, wparam, lparam); }

17.10.17 vjj 118 DefWindowProc standardní zpracování většiny zpráv mnoho běžných událostí je zpracováváno postupně pomocí celé posloupnosti nových zpráv zaslaných většinou stejnému oknu při programování vlastní reakce na zprávu je tudíž nutné znát její kontext a dodržovat určitá pravidla (protokol)

17.10.17 vjj 119 cheating vhodná místa: Systém - v kterékoliv implementaci volané API funkce, např. PostMessage, SendMessage,... při výběru zprávy z fronty, za GetMessage, PeekMessage tj. před distribucí zprávy (DispatchMessage) před a po zavolání DefWindowProc po návratu z WinProc, tj. za DispatchMessage systém s možností provádět svoje vlastní "zásahy" někdy počítá a pokud mu tuto možnost vezmete (např. díky neznalosti příslušného protokolu), může se to projevit např. nepředvídatelným chováním aplikace