[pso] NTCLOSE 2
Octavian Purdila
pso@cursuri.cs.pub.ro
Mon, 29 Mar 2004 08:51:01 +0300
On Sunday 28 March 2004 20:54, Mihai Iancu wrote:
> Cred ca mai trebuie mentionat ca secventa de cod
> pt logare, nu e cea cu care obtin eroarea.
>
> Folosesc una care stiu ca merge bine.
>
> Deci intrebarea este, se poate face
> IoWriteErrorLogEntry dupa
> ce se apeleaza NtClose()?
>
> > > _asm mov new_stack, esp
> > > log = IoAllocateErrorLogEntry(
> > > drv,(UCHAR)(sizeof(IO_ERROR_LOG_PACKET) + 10));
> > > RtlCopyMemory( log->DumpData,"xxxx", 3);
> > > IoWriteErrorLogEntry(log);
> > > memcpy(new_stack, old_stack, params);
>
Logarea ar trebui sa o faci dupa ce apelezi functia originala, ca sa prinzi si
codul de eroare.
Nu ar trebui sa iti dea blue-screen la inchiderea unei ferestre (tocmai am
testat). Incearca sa analizezi dump-ul.
PS: cum faceti debug la un blue screen:
1. My computer -> properties -> advanced -> start-up & recovery -> write debug
information = kernel memory dump
2. la un blue screen o sa va copie kernel-space-ul in swap; la reboot o sa il
copie din swap in c:\winnt\memory.dmp
3. Din Windbg incarcati dump-ul (CTRL-D).
4. !analyze -v
o sa va afiseze cauza si un backtrace
5. puteti apoi face debug mai amanuntit; cateva comenzi utile
k, kv - afiseaza un bactrace
.frame - schimba frame-ul
dv - afiseaza variabilelel locale
? - aflati adresa variabilelor globale
Puteti sa ma afisati procesele, thread-urile, si sa schimbati contextul.
Pentru detalii uitati-va in help.
tavi