I wrote a kernel NT driver for a PCI card which runs perfectly fine with
WinNT 4.0 under any circumstances. Under Windows 2000 I’m facing the
problem now that on some machines it works (always) and on others it
doesn’t (the hardware is 100% identical). I traced down the problem and
found out that my ISR is not called on some machines.
So first I decided to rewrite the driver to make it a WDM/PNP driver
(because this is a good thing anyway for the future), but the same problem
still exists with the rewritten driver.
On systems where the ISR is not called, I have examined following strange
situation:
When I call HalAssignSlotResources (in the NT driver) or look at the
resource list which I get in my PnpDispatch routine (during the
IRP_MN_START_DEVICE in the PnpDriver), I get e.g. 0xC (12) as my interrupt
vector (not translated of course).
But at the same time (and also later) when I look in the PCI configuration
space of the card (e.g. using the !pci command in WinDbg) I see that the
IrqLine is set to another value, e.g. 0xB (11).
How can this happen? Do I totally misunderstand something here? I always
thought that these two values should be the same (and they are on machines
where it is working).
Is this the reason why my ISR is not called?
The device certainly is interrupting (doublechecked) and I even see from
the registers on the card that interrupts are pending.
The other strange thing is that the interrupt is of course level sensitive
(PCI) and no other driver should be servicing it (plain W2K installation +
Wildcat AGP driver), so normally the system should stall, but it doesn’t.
It just continues to work (except for my driver of course ;-(
Does anybody have a hint what could be the reason for this problem. I’m
really out of ideas now.
Some more facts and things I already doublechecked:
- all machines are multiprocessor
- using MPS or ACPI HAL makes no difference
- IRQ BIOS settings have no influence (as it should be with Pnp)
- In the NT driver, I DO specify the device object in my call to
HalAssignSlotResources.
The problem certainly has nothing to do with the hardware (as the same NT
driver always works under NT, e.g. in a dual boot configuration with W2K).
And I also have some disks with W2K where it always works regardless in
which of my (several identical) computers I’m using it.
Any help on how to continue debugging here is greatly appreciated
Thanks in advance
Christian Huber
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com