+ All Categories
Home > Documents > programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava...

programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava...

Date post: 16-Oct-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
24
programming Windows 10 ke kořenům UWP 5.9.2020 vjj 1
Transcript
Page 1: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

programming Windows 10

ke kořenům UWP

5.9.2020 vjj 1

Page 2: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

geneze• 2001 - 2007 zlatá éra, Longhorn -> Windows Vista

nebyla dokončena realizace .NET kernel, spousta nových pokročilých vlastností měla problém s nedostatečným výkonem většiny tehdejších PC a s nedostatkem driverů vyhovujících novému standardu

• Microsoft – výměna generací, technologickou společnost ovládli obchodníci, šéfem divize vývoje Windows Steven Sinofsky, vycházející manažerská hvězda, zkušenosti z divize mobilní verze Windows, nahradil Windows Mobile (původně Pocket PC se 100% podílu na trhu smartphonů -> 10% -> Windows Mobile se 40%) systémem Microsoft Phone ( -> 0%),zapřisáhlý nepřítel multitaskingu a oken, mobilní divize vytlačila desktopovou,zastaven vývoj pokročilých technologií (WinFS - Windows Future Storage - Database File System), zahájena úprava Windows pro tablety (budoucí Window 8)

• 2009 Windows 7 – bleskové provizorium vzniklé pouhou tvrdou redukcí pokročilých vlastností Visty, protože většina uživatelů buď Windows Vista vůbec neznala, nebo měla špatné zkušenosti z provozu na nedostatečně výkonném HW , bylo možné i ten zbytek pokročilých vlastností Windows Vista fungujících už na novějším HW prezentovat jako úžasný přínos Sinofskyho

• 2012 Windows 8 - fibred GUI z verze pro tablet jako runtime nad jádrem Windows Vista, zničený DWM (důvodem byl plánovaný přechod na full-screen apps only)

• 2015 Windows 10 - jádro Windows Vista, mixed GUI

5.9.2020 vjj 2

Page 3: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

Windows• Event driven architecture

• zprávy

• požadavek na vykonání konkrétní činnosti nebo předání informace

• adresátem je, až na výjimky, nějaké okno

• fronty zpráv (každé vlákno kterému patří nějaké okno)

• zprávy vs. API funkce

• API funkce

• Kernel implementace základních funkcí OS Windows

• zkratky za složitější sekvenci zpráv a dalších API funkcí s kontrolou správného pořadí a parametrů

9/5/2020 vjj 3

Page 4: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

okno• různé typy oken - Window Class

• Window Class – WinProc – handler zpráv pro všechny instance oken této třídy v programu

• Win32 API a WinForms - i ovládací prvky uvnitř okna jsou samostatnými okny (jejich WinProc většinou předdefinována v nějaké DLL knihovně) - komunikace ovládacích prvků s rodičovským oknem pomocí standardních zpráv

• WPF - kompletní okno včetně všech vložených ovládacích prvků je jediným oknem - komunikace ovládacích prvků s oknem interně (runtime)

9/5/2020 vjj 4

Page 5: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

fronta zpráv• každé forgroundové vlákno (alespoň jednou

vytvořilo nové okno) má frontu zpráv

• vlákno musí (!) umět vybírat z fronty zprávy(tj. zprávy pro všechna svá okna, včetně všech jejich podoken, např. ovládacích prvků), nikdo jiný to za něj neudělá

• a zajistit jejich zpracování příslušnou WinProc(jak, když WinProc ovládacích prvků je ukryta někde v DLL? - DispatchMessage)

5.9.2020 vjj 5

Page 6: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

struktura Win32 API programuWinMain ( ... ){ ...

while (GetMessage ( &Msg, ... ) )

DispatchMessage (&Msg, ... ) ;}

myWindowProc ( msg, ... ){ switch (msg){ case WM_CREATE: ... ;

case WM_PAINT: ... ;case WM_COMMAND: ... ;case WM_CLOSE: ... ;case WM_DESTROY: ... ;default: return DefWindowProc(...); } }

9/5/2020 vjj 6

Page 7: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

Uživatel(mouse, keyboard)

hardware interruptDRIVER

System message queue

RITRaw Input Thread

GetMessage

DispatchMessage

WindowProcWindowProc

Fronta zpráv

Fronta zpráv

9/5/2020 vjj 7

Page 8: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

klasické zpracování zprávswitch (msg) {

case WM_CREATE : inicializace instance okna;return 0 ;

case WM_PAINT : BeginPaint (...) ;...

EndPaint (...) ;return 0 ;

case WM_CLOSE : 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 ;

case WM_DESTROY : destrukce instance okna;pokud má skončit celá aplikace, tak iPostQuitMessage (0) ; return 0 ;

default : return DefWindowProc (hWin, msg, wParam, lParam); }

9/5/2020 vjj 8

Page 9: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

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ávzaslaný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)

9/5/2020 vjj 9

Page 10: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

objektové nadstavby

switch (msg) {

case WM_msg1 : tabulka event handlerů 1;return 0 ;

case WM_msg2 : tabulka event handlerů 2;return 0 ;

case WM_msg3 : tabulka event handlerů 3;return 0 ;

case WM_msg4 : tabulka event handlerů 4;return 0 ;

case WM_msg5 : tabulka event handlerů 5;return 0 ;

default : runtime default -> return DefWindowProc (...); }

9/5/2020 vjj 10

Page 11: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

.NET P/Invoke

using System.Runtime.InteropServices;

[DllImport("dwmapi.dll",

PreserveSig = false)]

public static extern voidDwmEnableBlurBehindWindow

( IntPtr hWnd,

DWM_BLURBEHIND pBlurBehind );

• P/Invoke = Platform Invocation Services

9/5/2020 vjj 11

Page 12: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

Windows 8

9/5/2020 vjj 12

WinRT Runtime

(new Windows native runtime)

HTML 5

JavaScript

Page 13: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

Windows 8

9/5/2020 vjj 13

WinRT Runtime

(new Windows native runtime)

C#

XAML

HTML 5

JavaScript

Page 14: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

Windows 8

9/5/2020 vjj 14

WinRT Runtime

(new Windows native runtime)

C#

XAML

HTML 5

JavaScript

C++

COM

DirectX

Page 15: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

Windows 8

9/5/2020 vjj 15

WinRT Runtime

(new Windows native runtime)

C#

XAML

HTML 5

JavaScriptC++

COM

DirectX

Win32 API

Page 16: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

Windows runtimes

9/5/2020 vjj 16

Kernel: implementace Win32 API funkcí

Win32 API funkce

(in DLLs, stubs to Kernel)

Pascal/

Delphi

runtime

Borland

Pascal

for

Windows

->

Delphi

VB

runtime

Visual

Basic

MFC

(AFX)

runtime

MFC

CLR =

Common Language

Runtime

C#Visual

Basic

.NETF#

LightSwitch

runtime

VS

visual

editor

"WinRT"

"Core"

"OneCore"

UWP

runtime

Metro

C,

C++,

ASM

DLLs:

(objekty)

+

Win32 API framework

Page 17: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

5.9.2020 vjj 17

dll: "UWP" runtime

Ntdll.dll

implementace API funkcí Windows

Drivers

Hal.dll

Hardware Abstraction Layer (HAL)

Win Store apps

SysCall

dll: CLR, WPF

.NET program

framework

Win32 API program

w/fibres

Subsystem DLLs: Kernel32.dll, User32.dll, GDI32.dll, Advapi32.dll, OLE32.dll

framework

Win32 API program

w/threads

Executive Kernel

Page 18: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

.NET - Windows OS relation

User Mode

(Managed Code)

.NET App (Exe)

FCL (.NET Assemblies) (DLLs)

User Mode

(Native Code)

CLR (COM DLL Server)

Windows API DLLs

Kernel Mode Windows Kernel

5.9.2020 vjj 18

Page 19: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

Windows OneCore/UWP• Windows OneCore (reinkarnace Windows CE)

is a platform for any device—phone, tablet, IoT, a navíc i desktop

• 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.

5.9.2020 vjj 19

Page 20: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

RAD

• Rapid application development is a form of Agile software development methodology.

5.9.2020 vjj 20

Page 21: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

waterfall vs agile• Windows Vista

waterfall - dlouhý kaskádový vodopád, voda se dolů neřítí po vlnách, každá skupinka kapek přepadne dolu hned/teprve když je připravena, ale může být opět vrácena nahoru1. cyklus: analýza a interpretace požadavků a možností, námitky, kompromisy2. cyklus: high level design, prezentace, námitky, kompromisy3. cyklus: low level design, prezentace, námitky4. cyklus: implementace, testování, prezentace, námitky5. release

• Windows 8/10agilní = zbrklýjediný věčný cyklus: návrh, implementace, deployment(minimalistický návrh bez kompletní analýzy, funkčnost se doplňuje ažpodle reakcí uživatelů; chyby se neopravují okamžitě, ale návrh na opravu se řadí do fronty ostatních návrhů s nejasnými prioritami)

5.9.2020 vjj 21

Page 22: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

5.9.2020 vjj 22

Page 23: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

5.9.2020 vjj 23

Page 24: programming Windows 10 - Univerzita Karlova · 2020. 5. 13. · File System), zahájena úprava Windows pro tablety (budoucí Window 8) • 2009 Windows 7 (tvrdá redukce vlastností

5.9.2020 vjj 24


Recommended