[pso] [tema2]win - IRP->Current

Mihai Florian my_mihai_florian at yahoo.com
Sat Apr 21 13:03:15 EEST 2007


Buna,

Daca pentru a retine pachetele de write ti-ai implementat tu o lista in
care fiecare pachet nou de write il inserezi in coada atunci nu ai
nevoie de currentIrp in InterruptService deoarece stii ca IRP-ul pe
care lucrezi este cel din capul cozii si poti sa il iei de acolo ca sa
il pasezi la DPC.

Implementezi StartIo daca vrei sa folosesti coada sistemului pentru a
retine IRP-urile in loc sa iti faci lista ta.
Inserarea in coada sistemului se face cu IoStartPacket, in
InterruptService iei pachetul curent cu currentIrp, iar din DPC
avansezi la pachetul urmator apeland IoStartNextPacket evident dupa ce
ai completat pachetul curent.
Daca coada sistemului este vida la primul apel de IoStartPacket se
apeleaza si StartIo (avand ca parametru pt Irp pachetul dat ca
parametru la IoStartPacket), iar daca coada sistemului nu este vida,
StartIo se apeleaza imediat dupa ce se completeaza pachetul curent si
se trece la pachetul urmator cu IoStartNextPachet.
Cand StartIo este apelat poti sa fii sigur ca din InterruptService nu
face nici o operatie asupra pachetelor din coada.
Pentru aceasta tema din StartIo ai putea seta bufferul din care se
scriu datele (cel asociat noului IRP) si ai putea sa activezi THREI. Nu
vrei sa faci aceste setari din rutina de write ca sa nu afectezi
scrierea pachetelor de write deja existente in coada sistemului.

Pentru mai multe detalii poti sa te uiti aici
http://www.osronline.com/DDKx/kmarch/irps_61bb.htm
sau poti sa citesti din DDK.

Mihai

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


More information about the pso mailing list