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