PCI kartya interrupt
tiszaii
tiszaii at axelero.hu
Tue Feb 24 07:44:59 CET 2004
Driver irás nélkül nem úszod meg.
User szintre nem lehet kihozni az INT-et, ezt nem is értem teljesen.
A PCI kártyát felismeri az OS boot után, majd a driver betöltése után
a rendszer ad egy "leiró" structurát amiből a megirt driver a
IoConnectInterrupt(...) fg-vel létrehoz egy int objectumot,pl.
" status = IoConnectInterrupt( &(dx->InterruptObject),
(PKSERVICE_ROUTINE)OnInterruptHandler,
(PVOID)dx,
NULL, dx->Vector, dx->Irql,
dx->Irql, dx->Mode, dx->irqshare, dx->Affinity,
FALSE);
"
A dx->Vector és a többiben van az OS által visszaadott értékek, pl INT
szint az Irql.
A OnInterruptHandler a driverben az interrupt által meghivandó callback
fg.Ez a Dos-ban az int. fg.
Ez a fg.(Fcp..) Irq prioritású, és gyorsan ki kell lépni belöle, ezért
ebben a fg-ben egy alacsonyabb szintű (Dispatch szintű fg. egy listában
lesz meghivva, ezért gyors az int. rendszer, ezt a fg. Dcp...(..)-nek
hivják, amiben elvégzi az Int feldolgozást a driver, na itt lehet
beiktatni egy User send Event hivást.
Ezt az Eventet lehet elkapni User szinten, ha CreateEvent, OpenEvent
stb. után a pl. WaitForSingleObject(...)-el.
--
Tiszai Istvan
http://tiszaii.fw.hu
More information about the Elektro
mailing list