[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