[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