Re: Installable ISR - still having problems
From: John (jvasquez_at_spam.getntds.com)
Date: 03/18/04
- Next message: Chris Adamson: "Re: Windows CE .NET 4.2 x86 with Cisco 350 WLAN... No IP Address"
- Previous message: Steve Maillet \(eMVP\): "Re: EXDI related PB crash"
- In reply to: Steve Maillet \(eMVP\): "Re: Installable ISR - still having problems"
- Next in thread: Steve Maillet \(eMVP\): "Re: Installable ISR - still having problems"
- Reply: Steve Maillet \(eMVP\): "Re: Installable ISR - still having problems"
- Messages sorted by: [ date ] [ thread ]
Date: Thu, 18 Mar 2004 14:35:09 -0800
I do call InterruptInitialize() but later in the NTD_Init code. I was under the impression that the
InterruptInitilize() was used to associate or link an Interrupt ID (sysintr) with an Event.
Anyway, I'm at the point I'll try anything to get this working. I added the InterruptInitialize()
but its getting a DEBUGCHK. Not a valid Event. I'm using CreateEvent(NULL,FALSE,FALSE,NULL) to
obtain the Event handle which I then pass to the InterruptInitialize() function.
As far as using a function pointer, I'll modify the code later. Right now, I just interrested in
getting through driver initialization.
Any other suggestions.
Thanks
On Thu, 18 Mar 2004 16:20:27 -0500, "Steve Maillet \(eMVP\)" <nospam1@EntelechyConsulting.com>
wrote:
>Hmmm, let me guess. just before the cod to LoadIntChainHandler() you have
>the call to InterruptInitialize()?
>
>Doing that enables the IRQ in the hardware BEFORE the ISR is hooked up!
>
>The other problem I see with this is in the ISR itself - you have
> Status = (BOOLEAN)(*ntds_device->hw_funct.isr)(ntds_device);
>
>This is making a function call through a pointer to a function that was
>provided in a KernelLibIoControl call. That just simply won't work. The
>address it is pointing to is almost certain to be completely bogus at the
>time the ISR is run. ISRs cannot access normal process spaces as there's no
>guarantee which process is mapped in slot0 when the Interrupt occurs. The
>Installable ISR shouldn't call a driver provided function to handle the
>interrupt - It should do the handling itself. Any data it needs should be
>provided by KernelLibIoControl. Any hardware it needs to access should be
>either in I/O space or statically mapped (in OEMAddressTable or
>TransBusAddrToStatic() )
- Next message: Chris Adamson: "Re: Windows CE .NET 4.2 x86 with Cisco 350 WLAN... No IP Address"
- Previous message: Steve Maillet \(eMVP\): "Re: EXDI related PB crash"
- In reply to: Steve Maillet \(eMVP\): "Re: Installable ISR - still having problems"
- Next in thread: Steve Maillet \(eMVP\): "Re: Installable ISR - still having problems"
- Reply: Steve Maillet \(eMVP\): "Re: Installable ISR - still having problems"
- Messages sorted by: [ date ] [ thread ]