[pso] [Tema1][Win] IoWriteErrorLogEntry

Alex Banceanu alexbanceanu at gmail.com
Sun Mar 28 20:32:54 EEST 2010


+ scria pe undeva ca dimensiunea DumpData tre sa fie multiplu de ULONG. nush
nu-ti aloca daca nu e multiplu, dar eu asa am facut si-a mers

2010/3/28 Octavian Voicu <octavian.voicu at gmail.com>

> 2010/3/28 Marius Poke <mariusp55 at yahoo.com>:
> > Salut,
> >
> > Ma chinui de vreo zi cu partea de logare a mesajelor pe windows. Nu
> inteleg
> > din ce cauza nu merge. Tinand cont ca nu cred ca logarea este partea
> > importanta din aceasta tema poate sa puna cineva un model de folosire a
> > functiilor IoAllocateErrorLogEntry, IoWriteErrorLogEntry, cat si cum se
> > construieste structura log_packe?
>
> Functiona IoAllocateErrorLogEntry [1] primeste doi parametrii: un
> pointer la structura ce descrie driverul tau si dimensiunea pachetului
> pe care vrei sa-l loghezi (adica dimensiunea structurii
> IO_ERROR_LOG_PACKET la care aduni dimensiunea payloadului). Astfel,
> payload-ul urmeaza imediat dupa header-ul pachetului.
>
> Vei primi un pointer la o structura  IO_ERROR_LOG_PACKET [2]. In
> aceasta ai de setat doua campuri: DumpDataSize (dimensiunea
> payload-ului) si DumpData.
>
> Payload-ul tau consta din structura log_packet, dar trebui sa ai grija
> sa pui si parametrii apelului de sistem. Ei sunt declarati in
> structura asa:
>
> >> int syscall_arg[0]
>
> Asta inseamna ca daca faci sizeof(struct log_packet), dimensiunea
> returnata include 0 bytes pentru vectorul de parametrii, deci
> payload-ul tau e de fapt de dimensiunea sizeof(struct log_packet) +
> cati bytes au parametrii tai (vezi SPT din system call descriptor).
>
> Pasii ar fi:
>
> 1. Aloci pachetul cu IoAllocateErrorLogEntry de dimensiune
> sizeof(IO_ERROR_LOG_PACKET) + dimensiune payload
> 2. Setezi dimensiunea payload-ului in packet->DumpDataSize
> 3. Completezi payload-ul adica packet->DumpData. Privesti acest
> pointer ca un struct log_packet* si completezi fiecare camp din
> structura log_packet. In final copiezi parametrii syscall-ului in
> syscall_arg.
> 4. Apelezi IoWriteErrorLogEntry
>
> Tu ai de logat dimensiunea structurii log_packet la care aduni
> dimensiunea parametrilor (pentru ca in structura log_packet
> syscall_arg e declarat ca `int syscall_arg[0]", deci daca faci
> sizeof(struct log_packet)
>
> Octavian
>
> [1] http://msdn.microsoft.com/en-us/library/ms801569.aspx
> [2] http://msdn.microsoft.com/en-us/library/dd852042.aspx
> _______________________________________________
> pso mailing list
> pso at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/lurker/list/pso.html/attachments/20100328/2ac73718/attachment-0001.htm>


More information about the pso mailing list