[pso] [tema2][windows]nelamuriri
Mihai Florian
my_mihai_florian at yahoo.com
Wed Apr 11 13:59:54 EEST 2007
Buna,
Este foarte probabil sa depunctez utilizari de functii la IRQL-uri
nepotrivite. Va recomand sa cititi cu atentie din DDK specificatiile
functiilor pe care le folositi, mai ales IRQL-ul la care pot fi
utilizate si in ce conditii.
De exemplu pentru cazul de fata specificatia KeSetEvent din DDK este
urmatoarea:
LONG
KeSetEvent(
IN PRKEVENT Event,
IN KPRIORITY Increment,
IN BOOLEAN Wait
);
...
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.
So... nu aveti voie sa rulati la un nivel mai mare de DISPATCH_LEVEL
cand folositi KeSetEvent.
Daca va uitati in DDK la InterruptService:
A driver's InterruptService routine (ISR) executes in an interrupt
context, at some system-assigned DIRQL, as specified by the
SynchronizeIrql parameter to IoConnectInterrupt. (Other devices, with
higher DIRQL values, can interrupt the ISR.)
Orice DIRQL este mai mare decat DISPATCH_LEVEL dupa cum puteti observa
de aici:
http://msdn2.microsoft.com/en-us/library/ms810029.aspx#irql_sched_topic5
In concluzie nu aveti voie sa folositi KeSetEvent din handler-ul de
intrerupere.
Ceva similar se aplica si pentru KeReleaseSemaphore.
Inca o data va recomand sa cititi cu atentie specificatiile din DDK.
Mihai
____________________________________________________________________________________
Finding fabulous fares is fun.
Let Yahoo! FareChase search your favorite travel sites to find flight and hotel bargains.
http://farechase.yahoo.com/promo-generic-14795097
More information about the pso
mailing list