[pso] IRQL_NOT_LESS_OR_EQUAL

Matei Gruber matei.gruber at gmail.com
Sun Apr 19 23:24:04 EEST 2009


Salut.

Da, cred ca voi folosi pana la urma abordarea cu 2 buffere (RX si TX)
per Device Object, recomandata de tine.

Cred ca recomandarea asta m-a derutat un pic:
- pentru write, cel mai simplu e să ţineţi minte într-o listă
IRP-urile şi să le serviţi atunci când vă indică întreruperea; cum nu
aveţi voie să utilizaţi IoCompleteRequest într-o ISR, va trebui să
folosiţi DPC-uri;

Solved,
Matei


2009/4/19 Razvan Deaconescu <razvan.deaconescu at cs.pub.ro>:
> On Sun, 2009-04-19 at 22:52 +0300, Matei Gruber wrote:
>> Multumesc Gabriel.
>>
>> 1. Abordarea driverului meu a fost sa marchez IRP-urile ca pending si
>> sa le completez pe masura ce primesc data dintr-un DpcForIsr, pornit
>> din ISR. Dat fiind ca din DPC nu pot accesa memorie paginata, (care
>> cred ca este cazul bufferelor asociate IRP), n-am cum sa completez
>> bufferele. Este viabila o astfel de abordare?
>
> Dar de ce lucrezi direct cu bufferele asociate IRP-urilor. De ce nu
> folosesti un set de buffere circulare asociate driver-ului? Asa cum se
> intampla si in exemplul indicat in enunt[1]. Doua buffer per dispozitiv
> (unul de citire si unul de scriere). In acest fel:
>
>          read/write              ISR
>              |                    |
>              |                    |
> IRP buffer <----> kernel buffer <----> hardware buffer (FIFO)
>
> <snip>
>> 3. Am dat google dupa DIRQL operations si n-am gasit nimic.
>
> Cred ca Gabi se referea la ce operatii poti sa faci in context
> intrerupere[2].
>
> Razvan
>
> [1] http://cs.pub.ro/%7Epso/wiki/images/5/55/ExModuleWinCase.zip
> [2] http://www.osronline.com/DDKx/kmarch/intrupts_0kh3.htm
>
> _______________________________________________
> pso mailing list
> pso at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>


More information about the pso mailing list