RE: USB Filter driver ASSERTs at IRQL 2 when calling USBD _ParseDescriptors

Mark,

thanks for your help.

I am new to dumpbin and a little bit confused about its functionality.
Would you please give me a hint, how to use DUMPBIN to check whether a
certain export function is pageable or not?

TIA!
Kurt

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Roddy, Mark
Sent: Mittwoch, 13. März 2002 17:51
To: NT Developers Interest List
Subject: [ntdev] RE: USB Filter driver ASSERTs at IRQL 2 when
calling USBD _ParseDescriptors

The assert is from the PAGED_CODE() macro, which implies that
either the DDK
is wrong or that the software is using PAGED_CODE()
inappropriately. I’d
suggest reporting the bug as a ddk bug and fixing your code
to not do that.
Your completion routine needs to hand this off to a work
item. Alternately
you could of course ignore the checked build after verifying
that these
functions are indeed not pageable (use dumpbin.)

> -----Original Message-----
> From: xxxxx@bizadigm.net [mailto:xxxxx@bizadigm.net]
> Sent: Wednesday, March 13, 2002 11:15 AM
> To: NT Developers Interest List
> Subject: [ntdev] USB Filter driver ASSERTs at IRQL 2 when
> calling USBD_ParseDescriptors
>
>
> I have written an USB filter driver that is trying to change
> some elements of the config descriptors of our USB device.
> For this purpose I have registered a completion routine for
> URB_FUNCTION_CONTROL_TRANSFER. Everything is working fine,
> except that I’m getting an ASSERT from the checked build of
> USBD.SYS when calling USBD_ParseDescriptors from my
> completion routine. This happens both under Windows Me and
Windows XP.
>
> I don’t understand this ASSERT, since the DDK says: Callers
> of USBD_ParseDescriptors can be running at IRQL <=
> DISPATCH_LEVEL. My completion routine is running at
> DISPATCH_LEVEL (= 2). So, where’s the problem?
>
> This is the ASSERT as seen under XP:
>
> 1:EX: Pageable code called at IRQL 2
> 1:
> *** Assertion failed: FALSE
> *** Source File: d:\xpclient\drivers\wdm\usb\usbd\service.c, line
> 477
>
> And this is the appropriate calling stack:
>
> ChildEBP RetAddr
> fc8e3a50 805265a6 nt!DbgBreakPoint
> fc8e3d34 805265d3 nt!RtlAssert2+0xd8
> fc8e3d50 fc99d5a0 nt!RtlAssert+0x16
> fc8e3d70 fae6b387 USBD!USBD_ParseDescriptors+0x41
> fc8e3d98 fae6de0c myfilt!OnUrbFcnCtrlXfer+0xf8
> fc8e3dd4 fae6f80f myfilt!OnUrbComplete+0x50
> fc8e3e08 804d5a14 nt!IovpLocalCompletionRoutine+0xb2
> fc8e3e38 80639736 nt!IopfCompleteRequest+0xa0
> fc8e3ea0 fc0ce493 nt!IovCompleteRequest+0x90
> fc8e3eec fc0d4810 USBPORT!USBPORT_CompleteTransfer+0x5ab
> fc8e3f20 fc0d7e27 USBPORT!USBPORT_DoneTransfer+0x252
> fc8e3f50 fc0dd80d USBPORT!USBPORT_FlushDoneTransferList+0x281
> fc8e3f80 fc1092b8 USBPORT!USBPORT_DpcWorker+0x4d3
> fc8e3fb8 fc1099a8 USBPORT!USBPORT_IsrDpcWorker+0x7bc
> fc8e3fdc 804dd55e USBPORT!USBPORT_IsrDpc+0x266
> fc8e3ff4 804dd0eb nt!KiRetireDpcList+0x48
>
>
> Does anybody have an idea?
>
> Best regards,
> Kurt


Mail Powered by BizAdigm™ - http://www.bizadigm.net/growth4u