[pso] [tema2][windows] KeSetEvent IRQL_NOT_LESS_OR_EQUAL
Orasanu Eduard
edi_o2001 at yahoo.com
Thu Apr 23 18:33:17 EEST 2009
Cand faci "int flag=*((int*)arg1);" sigur ce dereferentiezi mai e in memorie - cand inserezi DPC-ul in coada nu cumva dai adresa la o variabila de pe stiva functiei/handlerului de intrerupere care "curatata" dupa terminarea apelului?
Edi
--- On Thu, 4/23/09, alexandra gherghina <alexa.gherghina at gmail.com> wrote:
> From: alexandra gherghina <alexa.gherghina at gmail.com>
> Subject: Re: [pso] [tema2][windows] KeSetEvent IRQL_NOT_LESS_OR_EQUAL
> To: "Proiectarea Sistemelor de Operare" <pso at cursuri.cs.pub.ro>
> Date: Thursday, April 23, 2009, 8:01 AM
> Salut,
>
> Am incercat si varianta cu ExAllocatePool si tot asa da.
> In functia de DPC fac doar:
>
> struct dev_info * di=(struct dev_info*)ctx;
>
> int flag=*((int*)arg1);
>
> switch (flag){
>
> case READ:
>
> KeSetEvent(&(di->read_event),
> IO_NO_INCREMENT, FALSE);
>
> break;
> case WRITE:
>
> KeSetEvent(&(di->write_event),
> IO_NO_INCREMENT, FALSE);
>
> break;
> }
>
> E posibil ca eroarea sa vina din alta parte, desi kd-ul
> zice ca e de la KeSetEvent?
>
> Alexandra
>
> 2009/4/23 Bercea Gabriel <gamitech at gmail.com>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> Buna Alexandra,
>
> Ca
> sa poti da set event trebuie mai intai sa il initializezi
> din
> nonpaged pool.
>
> Poti face asta in 2 moduri
>
> 1)
> PKEVENT
> myEvent = Exallocatepool -> nonpagedpool sizeof(KEVENT);
> KeInitializeEvent()
>
> 2)
> KeInitializeEvent(&myEvent) la un event declarat
> intr-o
> functie sau global de tipul KEVENT.
>
> Ruleaza-ti driverul cu verifierul pornit.
>
>
>
>
>
> Cu
> respect,
>
> Bercea Gabriel 342 C2
>
> Mobile contact: (+40)0740049634
>
> eMail: gamitech at gmail.com
>
>
>
>
>
>
>
>
>
>
>
>
>
> From: pso-bounces at cursuri.cs.pub.ro
> [mailto:pso-bounces at cursuri.cs.pub.ro]
> On Behalf Of alexandra gherghina
>
> Sent: Wednesday, April 22, 2009 11:36 PM
>
> To: Proiectarea Sistemelor de Operare
>
> Subject: [pso] [tema2][windows] KeSetEvent
> IRQL_NOT_LESS_OR_EQUAL
>
>
>
>
>
> Salut!
>
>
>
> Am urmat schema:
>
>
>
> - wait pe un cate event in rutina de write, respectiv read
>
> - planificat cate un dpc in handlerul de intrerupere ce
> face KeSetEvent
>
>
>
> Problema este ca la acel KeSetEvent imi da blue screen. Any
> ideas de la ce
> vine?
>
>
>
> Multumesc!
>
> Alexandra
>
>
>
> kd> !analyze -v
>
> *******************************************************************************
>
> *
> *
>
> *
> Bugcheck
> Analysis
> *
>
> *
> *
>
> *******************************************************************************
>
>
>
> IRQL_NOT_LESS_OR_EQUAL (a)
>
> An attempt was made to access a pageable (or completely
> invalid) address at an
>
> interrupt request level (IRQL) that is too high. This is
> usually
>
> caused by drivers using improper addresses.
>
> If a kernel debugger is available get the stack backtrace.
>
> Arguments:
>
> Arg1: fa037098, memory referenced
>
> Arg2: 00000002, IRQL
>
> Arg3: 00000000, bitfield :
>
> bit 0 : value 0 = read operation, 1 = write
> operation
>
> bit 3 : value 0 = not an execute operation, 1 =
> execute
> operation (only on chips which support this level of
> status)
>
> Arg4: 808269e6, address which referenced memory
>
>
>
> Debugging Details:
>
> ------------------
>
>
>
>
>
> READ_ADDRESS: fa037098
>
>
>
> CURRENT_IRQL: 2
>
>
>
> FAULTING_IP:
>
> nt!KeSetEvent+e
>
> 808269e6 803e00
> cmp byte ptr [esi],0
>
>
>
> DEFAULT_BUCKET_ID: DRIVER_FAULT
>
>
>
> BUGCHECK_STR: 0xA
>
>
>
> PROCESS_NAME: Idle
>
>
>
> TRAP_FRAME: 80894510 -- (.trap 0xffffffff80894510)
>
> ErrCode = 00000000
>
> eax=00000001 ebx=00000001 ecx=fa037098 edx=00000009
> esi=fa037098 edi=ffdffa40
>
> eip=808269e6 esp=80894584 ebp=80894590
> iopl=0 nv up ei pl nz na po nc
>
> cs=0008 ss=0010 ds=0023 es=0023 fs=0030
> gs=0000
> efl=00010202
>
> nt!KeSetEvent+0xe:
>
> 808269e6 803e00
> cmp byte ptr
> [esi],0
> ds:0023:fa037098=??
>
> Resetting default scope
>
>
>
> LAST_CONTROL_TRANSFER: from 808269e6 to 80886099
>
>
>
> STACK_TEXT:
>
> 80894510 808269e6 badb0d00 00000009 00000000
> nt!KiTrap0E+0x2a1
>
> 80894590 f9fa805b fa037098 00000000 00000000
> nt!KeSetEvent+0xe
>
> WARNING: Stack unwind information not available. Following
> frames may be wrong.
>
> 808945b0 8082f582 816479cc fa036c6c 81647e38
> uart16550+0x105b
>
> 80894600 808873c7 00000000 0000000e 00000000
> nt!KiRetireDpcList+0xca
>
> 80894604 00000000 0000000e 00000000 00000000
> nt!KiIdleLoop+0x2f
>
>
>
>
>
> STACK_COMMAND: kb
>
>
>
> FOLLOWUP_IP:
>
> uart16550+105b
>
> f9fa805b eb0d
> jmp uart16550+0x106a (f9fa806a)
>
>
>
> SYMBOL_STACK_INDEX: 2
>
>
>
> SYMBOL_NAME: uart16550+105b
>
>
>
> FOLLOWUP_NAME: MachineOwner
>
>
>
> MODULE_NAME: uart16550
>
>
>
> IMAGE_NAME: uart16550.sys
>
>
>
> DEBUG_FLR_IMAGE_TIMESTAMP: 49ef7a54
>
>
>
> FAILURE_BUCKET_ID: 0xA_uart16550+105b
>
>
>
> BUCKET_ID: 0xA_uart16550+105b
>
>
>
> Followup: MachineOwner
>
> ---------
>
>
>
>
>
>
>
> _______________________________________________
>
> pso mailing list
>
> pso at cursuri.cs.pub.ro
>
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>
>
>
>
>
> -----Inline Attachment Follows-----
>
> _______________________________________________
> pso mailing list
> pso at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>
More information about the pso
mailing list