c++ express - yashavant kanetkar

40
 Yashavant Kanetkar [email protected]

Upload: vinodh-mohandoss

Post on 07-Apr-2018

252 views

Category:

Documents


2 download

TRANSCRIPT

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 1/40

Yashavant Kanetkar [email protected]

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 2/40

Ag enda«

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 3/40

MP3 Pl ayer ????

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 4/40

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 5/40

P re VC Express Scenario

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 6/40

Current Scenario

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 7/40

MP3 Pl ayer

IMediaEvent

IMediaContro l

IGraphBui lder

Data

Run( )

Render( )

WaitForComp letion( )

Fi lter Graph Mana g er

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 8/40

Mobi le Laptop - Don't Te ll me

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 9/40

DirectX Fami ly

DirectX

DirectX Graphics ± DirectDraw & Direct 3DDirectX Audio ± DirectSound & Direct MusicDirect 3D ± Layer over DirectDraw

Direct Music ± Layer over DirectSound

Direct Music

Direct Pl ay

Direct 3D

DirectSound

DirectSetup

DirectShow

DirectDraw

DirectInput

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 10/40

Off screen sur f aces

Back Bu ff er

B lit

B lit

B lit

Smooth AnimationBmp¶s

P rimaryBu ff er

F lip

Scan line

Horz blankin g interva l

Vert. b lankin g interva l

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 11/40

The C O M P erspective

BackBu ff er

P rimaryBu ff er

Off screenSur f ace1

Off screenSur f ace2

DirectDraw C O M Component

Create DD C O M objectUsin g Int pointer ca ll DD methodsMethods create other C O M objectsUsin g Inter f ace pointers do jobs

C lient

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 12/40

Demo

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 13/40

Behind the scene actor Everybody re lies on himA wron g step may lead to a crash

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 14/40

1

14

7 6 5 4 3 2 1 0DataRe g ister

O/ P To P ara lle l P ort# inc lude <dos.h>void main ( ){

/* turn on bit 0 */

outportb ( 0x 378, 1 ) ;

}

PP Circuitry

Motherboard

Gnd

113

D CS378

Fema le Connecto

570 ;

1 = 5V, 0 = 0V

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 15/40

Windows Equiva lent# inc lude "stda f x.h"# inc lude <conio.h>

void main ( ){

_outp ( 0x 378, 1 ) ;

print f ( "He llo Wor ld!\n" ) ;}

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 16/40

Let's Be g inLearn key Windows conceptsO S Architecture - Executive, Kerne l, H ALMu ltithreadin g , Mu ltitaskin g , Mu ltiprocessin gMemory Mg mt. - Virtua l Memory, Address Trans lationDispatchin g , Schedu lin g , Mu ltiprocessor Sync.Traps, IRQLs, AP Cs, D P Cs

I /O Subsystem - I /O , P n P, P ower Mg r I /O Requests - IR P P acketsDriver StructureLayered mode l & WD M

Learn Driver Architecture

Learn hardware detai lsHardware Bus, Device Re g istersMemory mapped I /O , P ort mapped I /O

Data Trans f er Mechanisms - P ro g rammed I /O , D MAInterrupt Mechanisms

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 17/40

System.Messa g in gO S +DD

Apps

Execution Leve ls - Rin g s

Windows uses R0 (most privi le g ed) & R 3 (least privi le g ed)O n ly 0 & 3 - To meet desi g n g oa lRin g 0 - Access to a ll memory & C P U instructionsMost privi le g ed- Kerne l mode, Least privi le g ed- User mode

Increasin gP rivi le g es

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 18/40

User mode

Kerne l mode

System data

&O

S codeDD

FunctionCa ll

SystemService Ca ll

Hardware Access

Hardware

App lication

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 19/40

Wor ld's Sma llest DD

Create C P ro g ramBui ld the driver

Dep loy the driver

Test the driver

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 20/40

Step1: Create P ro g ram /* minima l.c */

# inc lude <wdm.h>

{return STATUS_SUCCESS ;

}

NTST ATUS DriverEntry ( P DRIVER_ O BJECT pDrv O bj,P

UNICO

DE_STRING pReg P

ath )

TipsDriverEntry( ) - not same as main( ) / Win Main( )Driver execution does not stop at the end o f DriverEntry( )Event driven - No sequentia l execution o f pro g ram

Driver un loaded i f return va lue is not ST ATUS_SUCCESS

Service keyDependentsTypeO n Error

struct to representKM unicode strin g

Report success

struct representin g loaded driver Typede f o f lon g

Main header f ile f or DD

Datatypes, const., f un., macros

Init routine ca lled at load time

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 21/40

Step 2: Bui ld Driver Start VC++ ExpressBui ld P roject

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 22/40

REGEDIT4[HKEY_L O CAL_ MACHINE\System\CurrentContro lSet\Services

\minima l]

"Start" = dword:1

"Type" = dword:1

"Disp layName" = "a minima l driver""ErrorContro l" = dword:1

Step 3 : Re g . Entries - insta ll.re g

Service Load method0 = Boot - kerne l loader 1 = System - Af ter kerne l initia lization2 = Automatic - SC M3 = Manua lType o f Component1 = K M Device Driver 2 = Fi le System Driver

Driver Description strin g

Action to take i f Driver loadin g f ai ls0 = I g nore - Startup proceeds, no warnin g s1 = Norma l - Startup proceeds, warnin g appears2 = Severe - Restart usin g last known g ood con f ig , Continues i f f ai ls3 = Critica l - Same as 2, but runs debu gg in g pro g ram

Entries f or DD, FSD &Win 32 Services pro g rams

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 23/40

Step 4: Dep loy & TestCopy minima l.sys to %windir%\system 32\drivers

Insta ll Driver Run Msin f o 32.exe

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 24/40

O utput To P ort# inc lude <wdm.h>

NTST ATUS DriverEntry ( P DRIVER_ O BJECT Drv O bj,P UNIC O DE_STRING Re g P ath )

{WRITE_ P O RT_UCH AR ( 0x 378, 1 ) ;

return ST ATUS_SUCCESS;}

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 25/40

# inc lude <wdm.h>NTST ATUS DriverEntry ( P DRIVER_ O BJECT Drv O bj,P UNIC O DE_STRING Re g P ath ){

unsi g ned char se g [ ] ={

64 | 1 | 2 | 4 | 16 | 32, /* 0 */

16 | 4, /* 1 */

32 | 16 | 128 | 1 | 2, /* 2 */

32 | 16 | 128 | 4 | 2, /* 3 */

64 | 128 | 16 | 4, /* 4 */

32 | 64 | 128 | 4 | 2, /* 5 */

32 | 64 | 1 | 2 | 4 | 128, /* 6 */

32 | 16 | 4, /* 7 */

32 | 64 | 128 | 4 | 2 | 1 | 16, /* 8 */

32 | 64 | 128 | 16 | 4 | 2 /* 9 */

} ; Contd...

7 6 5 4 3 2 1 0

1

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 26/40

int i = 0, j ;f or ( j = 1 ; j <= 60 ; j++ ){

WRITE_ P O RT_UCH AR ( 0x 378, se g [ i ] ) ;KeSta llExecution P rocessor ( 1000000 ) ; // microsec.i++ ;

if ( i == 10 )i = 0 ;

}return STATUS_SUCCESS ;

}

Contd...

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 27/40

Goa l

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 28/40

What Is B luetooth

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 29/40

B luetooth Stack

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 30/40

IP Wor ld

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 31/40

B luetooth Wor ld

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 32/40

P ossibi lities

Desktop

N /W

Mu ltiTh

Dia lo g

SDIAS P

ADO

MDI

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 33/40

S MQ

Device Driver ISR

Hookin g Events

AMQApp1 AMQ App2

O S

Kerne l Routine

Interrupt

Hook Function

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 34/40

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 35/40

Hookin g KB

Share with a ll apps ± DLLDLL cannot execute on its own

Create EXE to launch itRe g ister / Unre g ister thro EXES MQ

Device Driver ISR

AMQApp1 AMQ App2

O S

Kerne l Routine

Interrupt

Hook Function

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 36/40

HINST ANCE h ;void O nCreate ( HWND hWnd )

{BOO L ( C ALLB ACK *p )( ) ;h = LoadLibrary ( "hook.d ll" ) ;p = Get P roc Address ( h, "insta llhook" ) ;( *p )( ) ;

}

void O nDestroy ( HWND hWnd ){BOO L ( C ALLB ACK *p )( ) ;

p = Get P roc Address ( h, "removehook" ) ;( *p )( ) ;FreeLibrary ( h ) ;P ostQuit Messa g e ( 0 ) ;}

The EXE

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 37/40

# inc lude <windows.h>static HHOO K hkb = NULL ;HANDLE h ;

BOO L __stdca ll DllMain ( HANDLE hm, DWO RD r_ca ll, LP VO ID res ){

h = hm ; return TRUE ;}

BOO L __dec lspec ( d llexport ) insta llhook ( ){hkb = SetWindowsHookEx ( WH_KEYB O ARD,

( HOO KP RO C ) kbproc, ( HINST ANCE ) h, 0 ) ;return TRUE ;}

BOO L __dec lspec ( d llexport ) removehook ( ){return UnhookWindowsHookEx ( hkb ) ;

}

The DLL

0 - System scope

1 - Thread scope

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 38/40

LRESULT __dec lspec ( d llexport ) __stdca ll kbproc ( int m,WPARAM w, L PARAM l )

{short int state ;if ( m < 0 )

return Ca llNextHookEx ( hkb, m, w, l ) ;

if ( ( m == HC_ ACTIO N ) && ( ( DW O RD ) l & 0x40000000 ) ){

state = GetKeyState ( VK_C AP ITAL ) ;if ( ( state & 1 ) == 0 ) /* if o ff */

{keybd_event ( VK_C AP ITAL , 0,

KEYEVENTF_EXTENDEDKEY, 0 ) ;keybd_event ( VK_C AP ITAL , 0, KEYEVENTF_KEYU P |

KEYEVENTF_EXTENDEDKEY, 0 ) ;}

}return Ca llNextHookEx ( hkb, m, w, l ) ;}

Check Bit 30

VK code, unused,Extended key, unused

Synthesizes keystroke

KeyDown - De f au lt

Win 3 .1 Le g acy

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 39/40

8/6/2019 C++ Express - Yashavant Kanetkar

http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 40/40