[pso] [Tema4][Win]Despre campul irp->IoStatus.Information

Razvan Deaconescu razvand at cs.pub.ro
Mon May 21 13:04:45 EEST 2007


sorin gsmcreation wrote:
> Salut!
> 
> In functia IOCTL a driverului, inainte de
> CompleteRequest, trebuie sa setam campul
> irp->IoStatus.Information. Intrebarea mea este: in
> cazul FW_LIST, care este valoarea la care trebuie
> setat acest camp:
> 
> a) 
> -> sizeof(int) pt cazul nr_reguli_cerute <
> nr_reguli_existente
> -> sizeof(int) + nr_reguli_existente * sizeof (fwr_t)
> pentru cazul in care este suficient loc
> b)
> -> cate un sizeof(int) in plus in ambele cazuri
> (considerand si int-ul venit din userspace)
> c)
> -> 0 in toate cazurile
> 
> Intreb acest lucru deoarece se pare ca nu reusesc sa
> trimit in userspace numarul curent de reguli.
> Mentionez ca folosesc modul BUFFERED_IO, iar bufferul
> (acelasi pt input si output) il obtin astfel:
> char * buffer;
> buffer = irp->AssociatedIrp.SystemBuffer.

ai completat campul irp->IoStatus.Status?

daca totul a decurs cum trebuie, ar trebui sa completezi astfel 
campurile utile din irp:

         irp->IoStatus.Status = STATUS_SUCCESS;
         irp->IoStatus.Information = size;
         IoCompleteRequest (irp, IO_NO_INCREMENT);

         return status;

pentru succes size va fi sizeof(int) + nr_reguli_existente * sizeof 
(fwr_t) (cazul a) din descrierea ta)

Razvan


More information about the pso mailing list