[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