[pso] Eroare in Testul de Windows

Andrei Costin pso@cursuri.cs.pub.ro
Sat, 19 Mar 2005 04:14:43 -0800 (PST)


Saturday, March 19, 2005, 1:56:05 PM, you wrote:

CJ> Daca nu este facuta logarea de pachete, testul de windows se blocheaza in functia
"find_log":
CJ> Face primele teste si se blocheaza la:
CJ> <test: NtOpenMutant interceptor...>,
CJ> ne mai dand posibilitatea de a vedea rezultatele urmatoarelor teste.
 
CJ> Uitandu-ma pe cod, vad ca e si normal sa sa blocheze devreme ce se face <return 1>
numai in cazul in care operatia de gasire a logului are succes, iar altfel se cicleaza la
infinit in <while(1)>.
 
CJ> Ar trebui adaugat <return 0> dupa CloseEventLog, pentru a iesi cu eroare:
CJ> <test: NtOpenMutant interceptor...failed>  , si a nu cicla la infinit. 

Buna.

Daca te uiti pe topicurile listei de anul trecut, problema s-a mai discutat.

Ciclul se face in acest mod pentru ca logarea se face ASINCRON
(ca de altfel orice operatie I/O conform DDK, daca nu gresesc), si deci nu se stie
efectiv cand
ajunge packetul cu log.

Daca reusesti sa obtii argumentele catre syscallul original si valoarea de return,
logarea e piece
of cake, care se reduce la o secventa de genul:

lp = IoAllocateErrorLogEntry(pdriver, SIZE);
if (!lp)
   return...;
lp->DumpDataSize = SIZE;
log_packet_data = lp->DumpData;
log_packet_data->syscall_no = syscall;
....
IoWriteErrorLogEntry(lp);

Logarea sau modul de lucru find_log() nu e o problema in sine.



		
__________________________________ 
Do you Yahoo!? 
Take Yahoo! Mail with you! Get it on your mobile phone. 
http://mobile.yahoo.com/maildemo