c++ express - yashavant kanetkar
Post on 07-Apr-2018
250 Views
Preview:
TRANSCRIPT
8/6/2019 C++ Express - Yashavant Kanetkar
http://slidepdf.com/reader/full/c-express-yashavant-kanetkar 1/40
Yashavant Kanetkar kanetkar@kicit.com
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
top related