[pso] [Tema 2] [Windows] KeSetEvent
Razvan Deaconescu
razvand at cs.pub.ro
Fri Apr 25 16:28:22 EEST 2008
On Fri, 2008-04-25 at 16:13 +0300, Marius Nicolae wrote:
> 2008/4/25 Razvan Deaconescu <razvand at cs.pub.ro>:
> > On Thu, 2008-04-24 at 22:11 +0300, Andrei Ciuca wrote:
> > > Salut,
> > >
> > > Se poate apela "KeSetEvent" din handlerul intreruperii ?
> >
> > Din documentatia KeSetEvent[1]: the caller can be running at IRQL <=
> > DISPATCH_LEVEL.
> >
> > Mai multe informatii despre IRQL puteti afla aici[2].
> >
> > Concluzia este ca nu puteti folosi KeSetEvent dintr-un handler de
> > intrerupere. Va trebui sa planificati un DPC pentru acest lucru.
>
> Si daca punem FALSE pentru campul de wait, putem sa folosim KeSetEvent
> din handlerul de intrerupere?
>
> "If Wait is set to FALSE, the caller can be running at IRQL <=
> DISPATCH_LEVEL. Otherwise, callers of KeSetEvent must be running at
> IRQL = PASSIVE_LEVEL and in a nonarbitrary thread context."
"the caller can be running at IRQL <= DISPATCH LEVEL"
IRQL == PASIVE == 0 -> context proces
IRQL == APC == 1 -> asynchronous procedure call
IRQL == DISPATCH == 2 -> DPC (deferred procedure call)
IRQL <= DISPATCH_LEVEL inseamna IRQL <= 2
O rutina de tratare a unei intreruperi hardware ruleaza la IRQL > 2.
Ai parcurs al doilea link[1] trimis de mine in mesajul anterior? O
propozitie din acel articol spune:
--
The IRQL values are divided into two groups: Software ( 0,1,2 ) /
Hardware IRQL ( >= 3)
--
Razvan
[1] http://ext2fsd.sourceforge.net/documents/irql.htm
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
More information about the pso
mailing list