[pso] [tema3 windows]test

Cristian Gratie cgratie at yahoo.com
Sat May 17 18:45:18 EEST 2008


Dupa multe ore in care m-am confruntat cu aceeasi problema, am gasit solutia: in IoCreateDevice trebuie specificat tipul FILE_DEVICE_DISK, in loc de FILE_DEVICE_UNKNOWN.

Explicatia ar fi (presupun) ca daca nu se stie despre ce tip de dispozitiv e vorba, nu se va actualiza file pointer-ul asociat.

Cristi Gratie

----- Original Message ----
From: Andrei Ismail <iandrei85 at yahoo.com>
To: Proiectarea Sistemelor de Operare <pso at cursuri.cs.pub.ro>
Sent: Saturday, May 17, 2008 5:54:13 PM
Subject: Re: [pso] [tema3 windows]test

E ok sa stie driver-ul nostru ca sistemul de operare
asociaza un fisier cu device-ul pe care il simuleaza?

Daca da, cum avansam file pointer-ul acesta? Daca nu,
ce trebuie facut?:) De cateva ore bune caut acul in
carul cu fan si nu reusesc sa-mi dau seama de ce in
test nu se avanseaza file pointer-ul din user-space.
Trebuie setat vreun flag, ceva?

Problema este aici:
ret = ReadFile(fd, buffer, SECTOR_SIZE, &bytesRead,
NULL);
test ("read limit", bytesRead == SECTOR_SIZE && ret ==
TRUE);
//SetFilePointer(fd, LOG_DSK_SIZE, NULL, FILE_BEGIN);
ret = ReadFile(fd, buffer, SECTOR_SIZE, &bytesRead,
NULL);
test ("read out of bounds", bytesRead == 0 || ret ==
FALSE);

Daca nu de-comentez linia de cod respectiva, driver-ul
meu primeste acelasi request de 2 ori (adic.a la
acelasi sector!)

Un IRP il "termin" asa:
irp->IoStatus.Status = ret;
irp->IoStatus.Information = bytesWritten;
IoCompleteRequest(irp, IO_NO_INCREMENT);

A.I.


      
_______________________________________________
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