NT4 Legacy Driver in Win2k - part 2

Hi. After making the changes, suggested by Gary Little and Jake Oshins
(thanks guys), to HalAssignSlotResources(), my driver doesn’t work.
Running it under Win2k sp2 checked, I get BSOD. Running with Windbg
attached, I get the following,

*** Assertion failed: DeviceQueue->Busy == TRUE
*** Source File: F:\nt\private\ntos\ke\devquobj.c, line 267

Break, Ignore, Terminate Process or Terminate Thread (bipt)? b

As soon as I turn interrupts on. If I break and dump the stack, I get,

Execute ‘!cxr F4023CA8’ to dump context
Break instruction exception - code 80000003 (first chance)
ntkrnlmp!DbgBreakPoint:
804a9bc0 cc int 3
kd> k p
ChildEBP RetAddr
f4023c9c 804af2e5 ntkrnlmp!DbgBreakPoint
f4023f78 8043c77c ntkrnlmp!RtlAssert+0x9a
f4023f9c 80066a93 ntkrnlmp!KeRemoveDeviceQueue+0x6a
f4023fc0 f400ac0c halmps!IoFreeAdapterChannel+0x31
f4023fd8 804bd7c3 psc!pscDpcForIsr(_KDPC* Dpc = 814e10bc,
_DEVICE_OBJECT* DeviceObject = 814e1048, _IRP* Irp = 00000000, void*
Context = 814e1100)+0x39 [D:\NTDDK\src\pscorig\pscisr.c @ 265]
f4023ff0 804c30b9 ntkrnlmp!KiRetireDpcList+0x5d
f4023ff0 00000000 ntkrnlmp!KiChainedDispatch+0x29
fffffffc 00000000 0x0

So, it appears that KeRemoveDeviceQueue() gets mad if the ‘Busy’ field of
my Device Extension’s Irp Queue is false.

Any suggestions? (My device fires off periodic, unsolicited interrupts to
give me timing information.)

Thanks.

John.


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